1#define_import_path bevy_gaussian_splatting::planar 3#ifdef PRECOMPUTE_COVARIANCE_3D 4#import bevy_gaussian_splatting::bindings::{ 10#import bevy_gaussian_splatting::bindings::{ 14 rotation_scale_opacity, 19#import bevy_gaussian_splatting::spherical_harmonics::{ 20 spherical_harmonics_lookup, 29 ray_direction: vec3<f32>, 31 let sh = get_spherical_harmonics(index); 32 let color = spherical_harmonics_lookup(ray_direction, sh); 33 return srgb_to_linear(color); 36fn get_position(index: u32) -> vec3<f32> { 37 return position_visibility[index].xyz; 40fn get_spherical_harmonics(index: u32) -> array<f32, #{SH_COEFF_COUNT}> { 41 var coefficients: array<f32, #{SH_COEFF_COUNT}>; 43 for (var i = 0u; i < #{HALF_SH_COEFF_COUNT}u; i = i + 1u) { 44 let values = unpack2x16float(spherical_harmonics[index][i]); 46 coefficients[i * 2u] = values[0]; 47 coefficients[i * 2u + 1u] = values[1]; 53#ifdef PRECOMPUTE_COVARIANCE_3D 54 fn get_cov3d(index: u32) -> array<f32, 6> { 55 let c0 = unpack2x16float(covariance_3d_opacity[index].x); 56 let c1 = unpack2x16float(covariance_3d_opacity[index].y); 57 let c2 = unpack2x16float(covariance_3d_opacity[index].z); 59 var cov3d: array<f32, 6>; 71 fn get_rotation(index: u32) -> vec4<f32> { 72 let q0 = unpack2x16float(rotation_scale_opacity[index].x); 73 let q1 = unpack2x16float(rotation_scale_opacity[index].y); 81 fn get_scale(index: u32) -> vec3<f32> { 82 let s0 = unpack2x16float(rotation_scale_opacity[index].z); 83 let s1 = unpack2x16float(rotation_scale_opacity[index].w); 92fn get_opacity(index: u32) -> f32 { 93#ifdef PRECOMPUTE_COVARIANCE_3D 94 return unpack2x16float(covariance_3d_opacity[index].w).y; 96 return unpack2x16float(rotation_scale_opacity[index].w).x; 100fn get_visibility(index: u32) -> f32 { 101 return position_visibility[index].w; 109 ray_direction: vec3<f32>, 111 let sh = get_spherical_harmonics(index); 112 let color = spherical_harmonics_lookup(ray_direction, sh); 113 return srgb_to_linear(color); 116fn get_position(index: u32) -> vec3<f32> { 117 return position_visibility[index].xyz; 120fn get_spherical_harmonics(index: u32) -> array<f32, #{SH_COEFF_COUNT}> { 121 return spherical_harmonics[index]; 124fn get_rotation(index: u32) -> vec4<f32> { 125 return rotation[index]; 128fn get_scale(index: u32) -> vec3<f32> { 129 return scale_opacity[index].xyz; 132fn get_opacity(index: u32) -> f32 { 133 return scale_opacity[index].w; 136fn get_visibility(index: u32) -> f32 { 137 return position_visibility[index].w;