Search across packages, versions, files, declarations, and comments. Use multiple terms to narrow results (AND), and add @vertex, @fragment, or @compute to filter by shader stage.
1enable wgpu_ray_query;
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}>;
27#else
28@group(1) @binding(15) var<storage, read_write> world_cache_life: array<atomic<u32>, #{WORLD_CACHE_SIZE}>;
29#endif
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>;
44#endif
46struct PushConstants { frame_index: u32, reset: u32 }
47var<immediate> constants: PushConstants;
49// Don't adjust the size of this struct without also adjusting `prepare::RESOLVED_LIGHT_SAMPLE_STRUCT_SIZE`.
50struct ResolvedLightSamplePacked {
51 world_position_x: f32,
52 world_position_y: f32,
53 world_position_z: f32,
54 world_normal: u32,
55 radiance: u32,
56 inverse_pdf: f32,
59// Don't adjust the size of this struct without also adjusting `prepare::GI_RESERVOIR_STRUCT_SIZE`.
60struct Reservoir {
61 sample_point_world_position: vec3<f32>,
62 weight_sum: f32,
63 radiance: 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>,
71 padding_a: u32,
72 world_normal: vec3<f32>,
73 padding_b: u32
Contents