diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2021-08-08 23:01:44 +0200 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2021-08-08 23:01:44 +0200 |
| commit | 03fdcb0341d35bb99fccb2e155ee967f932c9961 (patch) | |
| tree | e318a2e755556b299009dd84230705a3f4432efc /shaders/tonemapping.comp | |
| parent | db6adfebe08027a49c6b2204683a2b9f3527cd64 (diff) | |
Bindless compute pipelines
Diffstat (limited to 'shaders/tonemapping.comp')
| -rw-r--r-- | shaders/tonemapping.comp | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/shaders/tonemapping.comp b/shaders/tonemapping.comp index dde91b8..5613d55 100644 --- a/shaders/tonemapping.comp +++ b/shaders/tonemapping.comp @@ -1,12 +1,30 @@ +#extension GL_EXT_buffer_reference : require
+#extension GL_EXT_nonuniform_qualifier : require
+
layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
-layout(set = 0, binding = 0, rgba8) uniform writeonly image2D output_image;
-layout(set = 0, binding = 1, rgba8) uniform readonly image2D accumulation_image;
+layout(buffer_reference) readonly buffer scene_metadata {
+ uint[39] unused;
+ uint downscale_factor;
+};
+
+layout(set = 0, binding = 0, rgba32f) uniform image2D images[];
+
+layout(push_constant) uniform constants {
+ scene_metadata scene;
+ uint output_image_index;
+ uint accumulation_image_index;
+} consts;
void main() {
- uint x = gl_GlobalInvocationID.x;
- uint y = gl_GlobalInvocationID.y;
+ uint x = gl_GlobalInvocationID.x * consts.scene.downscale_factor;
+ uint y = gl_GlobalInvocationID.y * consts.scene.downscale_factor;
- vec4 color = imageLoad(accumulation_image, ivec2(x, y));
- imageStore(output_image, ivec2(x, y), sqrt(color));
+ vec4 color = imageLoad(images[nonuniformEXT(consts.accumulation_image_index)], ivec2(x, y));
+ vec4 out_color = sqrt(color);
+ for (uint i = 0; i < consts.scene.downscale_factor; i++) {
+ for (uint j = 0; j < consts.scene.downscale_factor; j++) {
+ imageStore(images[nonuniformEXT(consts.output_image_index)], ivec2(x + i, y + j), out_color);
+ }
+ }
}
|
