1#define_import_path bevy_gaussian_splatting::bindings 3#import bevy_pbr::prepass_bindings::PreviousViewUniforms 4#import bevy_render::globals::Globals 5#import bevy_render::view::View 8@group(0) @binding(0) var<uniform> view: View; 9@group(0) @binding(1) var<uniform> globals: Globals; 10@group(0) @binding(2) var<uniform> previous_view_uniforms: PreviousViewUniforms; 12@group(0) @binding(14) var<storage> visibility_ranges: array<vec4<f32>>; 14struct GaussianUniforms { 15 transform: mat4x4<f32>, 27@group(1) @binding(0) var<uniform> gaussian_uniforms: GaussianUniforms; 30#ifdef GAUSSIAN_3D_STRUCTURE 33 @location(0) rotation: vec4<f32>, 34 @location(1) position_visibility: vec4<f32>, 35 @location(2) scale_opacity: vec4<f32>, 36 sh: array<f32, #{SH_COEFF_COUNT}>, 39 #ifdef READ_WRITE_POINTS 40 @group(2) @binding(0) var<storage, read_write> points: array<Gaussian>; 42 @group(2) @binding(0) var<storage, read> points: array<Gaussian>; 48 #ifdef READ_WRITE_POINTS 49 @group(2) @binding(0) var<storage, read_write> position_visibility: array<vec4<f32>>; 51 @group(2) @binding(0) var<storage, read> position_visibility: array<vec4<f32>>; 54 @group(2) @binding(1) var<storage, read> spherical_harmonics: array<array<f32, #{SH_COEFF_COUNT}>>; 56 #ifdef PRECOMPUTE_COVARIANCE_3D 57 @group(2) @binding(2) var<storage, read> covariance_3d_opacity: array<array<f32, 8>>; 59 @group(2) @binding(2) var<storage, read> rotation: array<vec4<f32>>; 60 @group(2) @binding(3) var<storage, read> scale_opacity: array<vec4<f32>>; 66 #ifdef READ_WRITE_POINTS 67 @group(2) @binding(0) var<storage, read_write> position_visibility: array<vec4<f32>>; 69 @group(2) @binding(0) var<storage, read> position_visibility: array<vec4<f32>>; 72 @group(2) @binding(1) var<storage, read> spherical_harmonics: array<array<u32, #{HALF_SH_COEFF_COUNT}>>; 74 #ifdef PRECOMPUTE_COVARIANCE_3D 75 @group(2) @binding(2) var<storage, read> covariance_3d_opacity: array<vec4<u32>>; 77 @group(2) @binding(2) var<storage, read> rotation_scale_opacity: array<vec4<u32>>; 82 #ifdef PLANAR_TEXTURE_F16 83 @group(2) @binding(0) var position_visibility: texture_2d<f32>; 85 #if SH_VEC4_PLANES == 1 86 @group(2) @binding(1) var spherical_harmonics: texture_2d<u32>; 88 @group(2) @binding(1) var spherical_harmonics: texture_2d_array<u32>; 91 #ifdef PRECOMPUTE_COVARIANCE_3D 92 @group(2) @binding(2) var covariance_3d_opacity: texture_2d<u32>; 94 @group(2) @binding(2) var rotation_scale_opacity: texture_2d<u32>; 99 #ifdef PLANAR_TEXTURE_F32 100 @group(2) @binding(0) var position_visibility: texture_2d<f32>; 102 #if SH_VEC4_PLANES == 1 103 @group(2) @binding(1) var spherical_harmonics: texture_2d<f32>; 105 @group(2) @binding(1) var spherical_harmonics: texture_2d_array<f32>; 110 @group(2) @binding(2) var rotation_scale_opacity: texture_2d<f32>; 112#else ifdef GAUSSIAN_4D 114 #ifdef READ_WRITE_POINTS 115 @group(2) @binding(0) var<storage, read_write> position_visibility: array<vec4<f32>>; 117 @group(2) @binding(0) var<storage, read> position_visibility: array<vec4<f32>>; 120 @group(2) @binding(1) var<storage, read> spherindrical_harmonics: array<array<f32, #{SH_4D_COEFF_COUNT}>>; 122 @group(2) @binding(2) var<storage, read> isotropic_rotations: array<array<f32, 8>>; 123 @group(2) @binding(3) var<storage, read> scale_opacity: array<vec4<f32>>; 124 @group(2) @binding(4) var<storage, read> timestamp_timescale: array<vec4<f32>>; 131 instance_count: atomic<u32>,