#version 450 layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(binding = 0) writeonly uniform uimage3D dst; layout(push_constant) uniform u_info_t { uvec4 clear_value; ivec2 dst_offset; ivec2 dst_extent; } u_info; void main() { ivec3 thread_id = ivec3(gl_GlobalInvocationID); if (all(lessThan(thread_id.xy, u_info.dst_extent))) imageStore(dst, ivec3(u_info.dst_offset.xy, 0) + thread_id.xyz, u_info.clear_value); }