3#define_import_path bevy_solari::realtime_bindings 5#import bevy_render::view::View 6#import bevy_pbr::prepass_bindings::PreviousViewUniforms 7#import bevy_solari::sampling::LightSample 9@group(1) @binding(0) var view_output: texture_storage_2d<rgba16float, read_write>; 10@group(1) @binding(1) var<storage, read_write> light_tile_samples: array<LightSample>; 11@group(1) @binding(2) var<storage, read_write> light_tile_resolved_samples: array<ResolvedLightSamplePacked>; 12@group(1) @binding(3) var di_reservoirs_a: texture_storage_2d<rgba32uint, read_write>; 13@group(1) @binding(4) var di_reservoirs_b: texture_storage_2d<rgba32uint, read_write>; 14@group(1) @binding(5) var<storage, read_write> gi_reservoirs_a: array<Reservoir>; 15@group(1) @binding(6) var<storage, read_write> gi_reservoirs_b: array<Reservoir>; 16@group(1) @binding(7) var gbuffer: texture_2d<u32>; 17@group(1) @binding(8) var depth_buffer: texture_depth_2d; 18@group(1) @binding(9) var motion_vectors: texture_2d<f32>; 19@group(1) @binding(10) var previous_gbuffer: texture_2d<u32>; 20@group(1) @binding(11) var previous_depth_buffer: texture_depth_2d; 21@group(1) @binding(12) var<uniform> view: View; 22@group(1) @binding(13) var<uniform> previous_view: PreviousViewUniforms; 24@group(1) @binding(14) var<storage, read_write> world_cache_checksums: array<atomic<u32>, #{WORLD_CACHE_SIZE}>; 25#ifdef WORLD_CACHE_NON_ATOMIC_LIFE_BUFFER 26@group(1) @binding(15) var<storage, read_write> world_cache_life: array<u32, #{WORLD_CACHE_SIZE}>; 28@group(1) @binding(15) var<storage, read_write> world_cache_life: array<atomic<u32>, #{WORLD_CACHE_SIZE}>; 30@group(1) @binding(16) var<storage, read_write> world_cache_radiance: array<vec4<f32>, #{WORLD_CACHE_SIZE}>; 31@group(1) @binding(17) var<storage, read_write> world_cache_geometry_data: array<WorldCacheGeometryData, #{WORLD_CACHE_SIZE}>; 32@group(1) @binding(18) var<storage, read_write> world_cache_luminance_deltas: array<f32, #{WORLD_CACHE_SIZE}>; 33@group(1) @binding(19) var<storage, read_write> world_cache_active_cells_new_radiance: array<vec3<f32>, #{WORLD_CACHE_SIZE}>; 34@group(1) @binding(20) var<storage, read_write> world_cache_a: array<u32, #{WORLD_CACHE_SIZE}>; 35@group(1) @binding(21) var<storage, read_write> world_cache_b: array<u32, 1024u>; 36@group(1) @binding(22) var<storage, read_write> world_cache_active_cell_indices: array<u32, #{WORLD_CACHE_SIZE}>; 37@group(1) @binding(23) var<storage, read_write> world_cache_active_cells_count: u32; 39#ifdef DLSS_RR_GUIDE_BUFFERS 40@group(2) @binding(0) var diffuse_albedo: texture_storage_2d<rgba8unorm, write>; 41@group(2) @binding(1) var specular_albedo: texture_storage_2d<rgba8unorm, write>; 42@group(2) @binding(2) var normal_roughness: texture_storage_2d<rgba16float, write>; 43@group(2) @binding(3) var specular_motion_vectors: texture_storage_2d<rg16float, write>; 46struct PushConstants { frame_index: u32, reset: u32 } 47var<immediate> constants: PushConstants; 50struct ResolvedLightSamplePacked { 51 world_position_x: f32, 52 world_position_y: f32, 53 world_position_z: f32, 61 sample_point_world_position: vec3<f32>, 64 confidence_weight: f32, 65 sample_point_world_normal: vec3<f32>, 66 unbiased_contribution_weight: f32, 69struct WorldCacheGeometryData { 70 world_position: vec3<f32>, 72 world_normal: vec3<f32>,