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.

Bindings

view_output

#
@group(1)
@binding(0)
var view_output: texture_storage_2d<rgba16float, read_write>

light_tile_samples

#
@group(1)
@binding(1)
var<storage, read_write> light_tile_samples: array<LightSample>

light_tile_resolved_samples

#
@group(1)
@binding(2)
var<storage, read_write> light_tile_resolved_samples: array<ResolvedLightSamplePacked>

gbuffer

#
@group(1)
@binding(3)
var gbuffer: texture_2d<u32>

depth_buffer

#
@group(1)
@binding(4)
var depth_buffer: texture_depth_2d

motion_vectors

#
@if(MOTION_VECTORS_READ_WRITE)
@group(1)
@binding(5)
var motion_vectors: texture_storage_2d<rg16float, read_write>
@if(!MOTION_VECTORS_READ_WRITE)
@group(1)
@binding(5)
var motion_vectors: texture_2d<f32>

view

#
@group(1)
@binding(6)
var<uniform> view: View

previous_view

#
@group(1)
@binding(7)
var<uniform> previous_view: PreviousViewUniforms

world_cache

#
@group(1)
@binding(8)
var<storage, read_write> world_cache: WorldCache

constants

#
@group(1)
@binding(9)
var<uniform> constants: SolariLightingSettings

previous_gbuffer

#
@group(1)
@binding(10)
var previous_gbuffer: texture_2d<u32>

previous_depth_buffer

#
@group(1)
@binding(11)
var previous_depth_buffer: texture_depth_2d

reservoirs_a

#
@group(1)
@binding(12)
var<storage, read_write> reservoirs_a: array<Reservoir>

reservoirs_b

#
@group(1)
@binding(13)
var<storage, read_write> reservoirs_b: array<Reservoir>

diffuse_albedo

#
@group(2)
@binding(0)
var diffuse_albedo: texture_storage_2d<rgba8unorm, write>

specular_albedo

#
@group(2)
@binding(1)
var specular_albedo: texture_storage_2d<rgba8unorm, write>

normal_roughness

#
@group(2)
@binding(2)
var normal_roughness: texture_storage_2d<rgba16float, write>

dlss_rr_depth

#
@group(2)
@binding(3)
var dlss_rr_depth: texture_storage_2d<r32float, write>

specular_motion_vectors

#
@group(2)
@binding(4)
var specular_motion_vectors: texture_storage_2d<rg16float, write>

Structures

SolariLightingSettings

#

User-configurable settings from the SolariLighting component, plus per-frame state. Field order and types must match SolariLightingUniforms in prepare.rs.

struct SolariLightingSettings {
confidence_weight_cap: f32 ,
primary_di_samples: u32 ,
secondary_di_samples: u32 ,
max_bounces: u32 ,
world_cache_max_temporal_samples: f32 ,
world_cache_direct_light_sample_count: u32 ,
world_cache_max_gi_ray_distance: f32 ,
world_cache_cell_updates_soft_target: u32 ,
world_cache_position_base_cell_size: f32 ,
world_cache_position_lod_scale: f32 ,
frame_rng: u32 ,
reset: u32 ,
}

ResolvedLightSamplePacked

#

Don’t adjust the size of this struct without also adjusting prepare::RESOLVED_LIGHT_SAMPLE_STRUCT_SIZE.

struct ResolvedLightSamplePacked {
world_position_x: f32 ,
world_position_y: f32 ,
world_position_z: f32 ,
world_normal: u32 ,
radiance: u32 ,
inverse_pdf: f32 ,
}

Reservoir

#

Don’t adjust the size of this struct without also adjusting prepare::RESERVOIR_STRUCT_SIZE.

struct Reservoir {
sample_point_world_position: vec3<f32> ,
unbiased_contribution_weight: f32 ,
radiance: vec3<f32> ,
confidence_weight: f32 ,
sample_point_world_normal: vec2<f32> ,
light_sample: LightSample ,
}

WorldCacheGeometryData

#
struct WorldCacheGeometryData {
world_position: vec3<f32> ,
padding_a: u32 ,
world_normal: vec3<f32> ,
padding_b: u32 ,
}

WorldCache

#

Keep in sync with the packed world-cache layout constants in prepare.rs.

struct WorldCache {
checksums: WORLD_CACHE_SIZE> ,
@if(WORLD_CACHE_NON_ATOMIC_LIFE_BUFFER)
life: WORLD_CACHE_SIZE> ,
@if(!WORLD_CACHE_NON_ATOMIC_LIFE_BUFFER)
life: WORLD_CACHE_SIZE> ,
radiance: WORLD_CACHE_SIZE> ,
geometry_data: WORLD_CACHE_SIZE> ,
luminance_deltas: WORLD_CACHE_SIZE> ,
active_cells_new_radiance: WORLD_CACHE_SIZE> ,
a: WORLD_CACHE_SIZE> ,
b: array<u32, 1024u> ,
active_cell_indices: WORLD_CACHE_SIZE> ,
active_cells_count: u32 ,
}

Functions

load_motion_vector

#
fn load_motion_vector (
pixel_id: vec2<u32>
) -> vec2<f32>

empty_reservoir

#
fn empty_reservoir () -> Reservoir
Contents