From 6db256b8eb4cc45c5296070ae7353e65398d121d Mon Sep 17 00:00:00 2001 From: ladevieq Date: Tue, 18 Aug 2026 00:43:03 +0200 Subject: Finished descriptor heaps implementation --- shaders/tonemapping.comp | 38 ++++++++------------------------------ 1 file changed, 8 insertions(+), 30 deletions(-) (limited to 'shaders/tonemapping.comp') diff --git a/shaders/tonemapping.comp b/shaders/tonemapping.comp index 65251df..ed30c92 100644 --- a/shaders/tonemapping.comp +++ b/shaders/tonemapping.comp @@ -1,9 +1,10 @@ #extension GL_EXT_buffer_reference : require #extension GL_EXT_nonuniform_qualifier : require +#extension GL_EXT_descriptor_heap : require layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; -layout(set = 0, binding = 2, rgba32f) uniform image2D images[]; +layout(descriptor_heap, rgba32f) uniform image2D images[]; struct camera { vec4 position; @@ -22,44 +23,21 @@ struct camera { float aspect_ratio; }; -layout(buffer_reference) readonly buffer global_params { - camera cam; - - uint max_bounce; - uint min_bounce; - uint width; - uint height; - - uint sample_index; - uint enable_dof; - uint debug_bvh; +layout(push_constant) uniform registers { int downscale_factor; -}; - -layout(buffer_reference) readonly buffer pass_params { - uint padding; -}; - -layout(buffer_reference) readonly buffer draw_params { uint output_image_index; uint accumulation_image_index; -}; - -layout(push_constant) uniform registers { - global_params globals; - pass_params pass; - draw_params draw; } regs; void main() { - ivec2 coords = ivec2(gl_GlobalInvocationID.xy) * regs.globals.downscale_factor; + ivec2 coords = ivec2(gl_GlobalInvocationID.xy) * regs.downscale_factor; - vec3 color = imageLoad(images[nonuniformEXT(regs.draw.accumulation_image_index)], coords).rgb; + vec3 color = imageLoad(images[nonuniformEXT(regs.accumulation_image_index)], coords).rgb; vec3 out_color = sqrt(color); - for (uint i = 0; i < regs.globals.downscale_factor; i++) { - for (uint j = 0; j < regs.globals.downscale_factor; j++) { - imageStore(images[nonuniformEXT(regs.draw.output_image_index)], coords + ivec2(i, j), vec4(out_color, 1.0)); + for (uint i = 0; i < regs.downscale_factor; i++) { + for (uint j = 0; j < regs.downscale_factor; j++) { + imageStore(images[nonuniformEXT(regs.output_image_index)], coords + ivec2(i, j), vec4(out_color, 1.0)); } } } -- cgit v1.3