| #version 430 | |
| 
 | |
| // Game of Life rendering shader | |
| // Just renders the content of the ssbo at binding 1 to screen | |
| 
 | |
| #define GOL_WIDTH 768 | |
| 
 | |
| // Input vertex attributes (from vertex shader) | |
| in vec2 fragTexCoord; | |
| 
 | |
| // Output fragment color | |
| out vec4 finalColor; | |
| 
 | |
| // Input game of life grid. | |
| layout(std430, binding = 1) readonly buffer golLayout | |
| { | |
|     uint golBuffer[]; | |
| }; | |
| 
 | |
| // Output resolution | |
| uniform vec2 resolution; | |
| 
 | |
| void main() | |
| { | |
|     ivec2 coords = ivec2(fragTexCoord*resolution); | |
| 
 | |
|     if ((golBuffer[coords.x + coords.y*uvec2(resolution).x]) == 1) finalColor = vec4(1.0); | |
|     else finalColor = vec4(0.0, 0.0, 0.0, 1.0); | |
| }
 |