diff options
author | Anna (navi) Figueiredo Gomes <navi@vlhl.dev> | 2024-02-11 20:39:22 +0100 |
---|---|---|
committer | Anna (navi) Figueiredo Gomes <navi@vlhl.dev> | 2024-02-11 20:39:22 +0100 |
commit | 4ecdaa7cd08f4f3ee04cd49f8f2271636ac81e64 (patch) | |
tree | 96c95877250d63ca2d688ad472bd6a46bdc3fbb3 /shaders/shader.frag | |
parent | 35a70d71f62e41d78d68247075ce174f2b6d997a (diff) |
Signed-off-by: Anna (navi) Figueiredo Gomes <navi@vlhl.dev>
Diffstat (limited to 'shaders/shader.frag')
-rw-r--r-- | shaders/shader.frag | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/shaders/shader.frag b/shaders/shader.frag index a4ce603..eb255e3 100644 --- a/shaders/shader.frag +++ b/shaders/shader.frag @@ -1,8 +1,27 @@ #version 450 -layout(location = 0) in vec4 fragColor; -layout(location = 0) out vec4 outColor; +layout(location = 0) in vec4 color; + +layout(set = 0, binding = 0) uniform mvp { + mat4 model; + mat4 view; + mat4 proj; + uint count; +} ubo; + +layout(binding = 1) buffer fragment_buffer { + uvec3 fragments[]; +}; +layout(binding = 2, r32ui) uniform uimage2D head; +layout(binding = 3) buffer counter { + uint data; +}; void main() { - outColor = fragColor; + const uint idx = atomicAdd(data, 1); + if (idx >= ubo.count) { + discard; + } + const uint prev_idx = imageAtomicExchange(head, ivec2(gl_FragCoord.xy), idx); + fragments[idx] = uvec3(prev_idx, packUnorm4x8(color), floatBitsToUint(gl_FragCoord.z)); } |