Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | First divide at impera attempt | Andreas Grois | 2018-03-22 | 1 | -19/+31 |
| | |||||
* | Initial commit for better brightness. | Andreas Grois | 2018-03-22 | 2 | -4/+45 |
| | | | | | Needs more work, uses too many VGPRs. Also, maybe work on a single shared variable? | ||||
* | Undo splitting of buffers in three. Makes buffer access much faster | Andreas Grois | 2018-03-18 | 2 | -24/+8 |
| | | | | | Not kidding here. For the default parameters this increased the maximum pixel brightness in the image by a factor of 2.25. This has the drawback that the maximum possible image size got reduced, but hey, there's a command line switch to ignore all size limits ;-) | ||||
* | Move totaliterations calculation to CPU. This frees 4 VGPRs. | Andreas Grois | 2018-03-18 | 1 | -4/+1 |
| | | | | | Now the code is back to the limit of 32 VGPRs without the need to directly operate on the state buffer. This means that now it's bound by memory access. | ||||
* | Undo change to directly work on buffer. Causes about 30% slowdown... | Andreas Grois | 2018-03-18 | 1 | -19/+22 |
| | |||||
* | Add option to skip short orbits. Add option to print debug output. | Andreas Grois | 2018-03-18 | 1 | -2/+2 |
| | |||||
* | Remove layout specifier from struct. Seems it's not allowed after all.v0.0.3-adaptive-iterations | Andreas Grois | 2018-03-17 | 1 | -1/+0 |
| | |||||
* | Fix memory allocation for state buffer. How could that ever work? | Andreas Grois | 2018-03-17 | 1 | -1/+2 |
| | |||||
* | Correct line endings. | Andreas Grois | 2018-03-17 | 3 | -316/+316 |
| | |||||
* | Again, cleaned code a bit | Andreas Grois | 2018-03-17 | 1 | -1/+1 |
| | |||||
* | Workers now directly operate on their state buffer. | Andreas Grois | 2018-03-17 | 1 | -52/+28 |
| | | | | | | | | | | | To quote the documentation: First, within a single shader invocation, if you perform an incoherent memory write, the value written will always be visible for reading. But only through that particular variable and only within the shader invocation that issued the write. You need not do anything special to make this happen. This means there is nothing stopping us from just reading and writing in the buffer as if the values were local variables, as they are specific to a given invocation. Also, buffer access happens infrequently, and furthermore there's nothing stopping the GPU from caching the values, as memory access is incoherent anyhow. Long story short: Now the code uses only 28 VGPRs, meaning that the AMD GCN hardware ideal of 32 is again achieved. | ||||
* | Fix y-value being always the same if only one worker is used | Andreas Grois | 2018-03-17 | 1 | -1/+1 |
| | |||||
* | Remove unneeded | Andreas Grois | 2018-03-17 | 1 | -2/+1 |
| | |||||
* | Improve parallelization by not storing the offset, but instead ↵ | Andreas Grois | 2018-03-17 | 1 | -21/+21 |
| | | | | | | re-calculating it every dispatch. By this I could get the VGPR usage down from 40 to 36. | ||||
* | Change starting value code to just jump to next orbit if in main bulb or | Andreas Grois | 2018-03-16 | 1 | -21/+19 |
| | | | | cardioid. | ||||
* | Fix wrong iteration per frame code | Andreas Grois | 2018-03-16 | 1 | -9/+9 |
| | |||||
* | minor | Andreas Grois | 2018-03-16 | 1 | -2/+1 |
| | |||||
* | Merge branch 'master' into feature/01-Pausability | Andreas Grois | 2018-03-16 | 1 | -1/+1 |
|\ | |||||
| * | Fix wrong seed calculation, now I've had some sleep. | Andreas Grois | 2018-03-16 | 1 | -2/+1 |
| | | |||||
* | | Fix endless loop in shader and make framerate adaptive | Andreas Grois | 2018-03-15 | 1 | -7/+7 |
| | | | | | | | | | | | | It seems forcing points outside the cardioid and bulb with a bad random generator can take really long... Also, now framerate adjusts based on time it takes to render frames. | ||||
* | | Force starting values to be outside main cardioid and bulb, and add storage ↵ | Andreas Grois | 2018-03-15 | 2 | -22/+21 |
| | | | | | | | | specifiers to buffers. | ||||
* | | Oops | Andreas Grois | 2018-03-15 | 1 | -9/+9 |
| | | |||||
* | | Prevent even more waiting by storing a more complete state | Andreas Grois | 2018-03-15 | 1 | -33/+41 |
| | | |||||
* | | Speed up computation tremendously, by having each worker (nearly) | Andreas Grois | 2018-03-15 | 1 | -54/+68 |
| | | | | | | | | | | completely store its state and working (nearly) fully independent of each other. | ||||
* | | First commit with compute pausability | Andreas Grois | 2018-03-14 | 1 | -25/+96 |
|/ | |||||
* | Split buffer in three, one per color (as OpenGL guarantees that one can at ↵ | Andreas Grois | 2018-03-11 | 2 | -10/+26 |
| | | | | | | | | least have 8 SSBOs), to allow three times larger images. Also make it possible to ignore maximum buffer size reported by the driver. The maximum buffer size limitation is rather strict on radeonsi, so I decided to split the buffer in three, effectively increasing the maximum image size by a factor of three. While doing so I realized that at least on radeonsi the reported maximum buffer size seems to be off. For this reason I added a new command line switch, that allows to ignore the maximum buffer size check. For those curious: radeonsi reports a maximum buffer size of 128 MB, but I had no problems when using three buffers of 1098 MB each. | ||||
* | Instead of using the yDecoupler value directly, the code's now using the | Andreas Grois | 2018-03-11 | 1 | -1/+1 |
| | | | | | hash of it, causing more drastic changes of the y=f(x,yDecoupler) function with dispatch number. | ||||
* | Decouple y and x value based on iteration. Should approximately square | Andreas Grois | 2018-03-11 | 1 | -21/+11 |
| | | | | teh available randomness! | ||||
* | Remove useless mirror code in fragment shader. Buffer is already mirrored now. | Andreas Grois | 2018-03-10 | 1 | -1/+1 |
| | |||||
* | Move buffer dimensions out of buffer into uniforms. No longer odd -2 | Andreas Grois | 2018-03-10 | 2 | -5/+6 |
| | | | | everywhere. | ||||
* | Reduce buffer size by a factor of 2 (image is symmetric) | Andreas Grois | 2018-03-10 | 2 | -2/+2 |
| | |||||
* | Fix mirroring in png output | Andreas Grois | 2018-03-10 | 1 | -1/+1 |
| | | | | | Restrict starting value range to positive y-values, probably improving random quality | ||||
* | Make local work group size tweakable. (Not yet exposed to user) | Andreas Grois | 2018-03-10 | 1 | -2/+3 |
| | |||||
* | Colorize | Andreas Grois | 2018-03-09 | 1 | -4/+10 |
| | |||||
* | Make this thing render. | Andreas Grois | 2018-03-09 | 1 | -6/+179 |
| | | | | Also: Steal integer hash from stackexchange... | ||||
* | Initial Commit | Andreas Grois | 2018-03-09 | 3 | -0/+66 |