Render to texture example
The first example will take a texture and will write into it some colors. To illustrate the use of work groups and work items, we will paint each pixel of the image with the index of the work group that processes that pixel. As we will use 16 x 16 work groups, the image will be filled with 16 x 16 solid block colors.
The shader invocation is done with this line: glDispatchCompute(16, 16, 1);
.That means that we are going to execute the shader with 16
work groups in the X
and Y
dimensions and 1
in the Z
(1
is the minimum accepted value for a dimension).
#version 430 // Configure how many work items compose the work groups // Because we are executing the shader with 16 x 16 work groups, we can handle images is 512 x 512 (16*32) layout(local_size_x = 32,local_size_y = 32, local_size_z = 1) in; // Declare the uniform variable that holds our image uniform layout(rgba8) writeonly image2D Image; void main() { ivec2 position = ivec2(gl_GlobalInvocationID.xy); vec4 color...