1#define_import_path bevy_gaussian_splatting::gaussian_3d 4#import bevy_gaussian_splatting::bindings::{ 8#import bevy_gaussian_splatting::helpers::{ 15 #ifdef PRECOMPUTE_COVARIANCE_3D 16 #import bevy_gaussian_splatting::packed::{ 20 #import bevy_gaussian_splatting::packed::{ 25#else ifdef BUFFER_STORAGE 26 #ifdef PRECOMPUTE_COVARIANCE_3D 27 #import bevy_gaussian_splatting::planar::{ 31 #import bevy_gaussian_splatting::planar::{ 36#else ifdef BUFFER_TEXTURE 37 #ifdef PRECOMPUTE_COVARIANCE_3D 38 #import bevy_gaussian_splatting::texture::{ 42 #import bevy_gaussian_splatting::texture::{ 49fn compute_cov3d(scale: vec3<f32>, rotation: vec4<f32>) -> array<f32, 6> { 50 let S = get_scale_matrix(scale); 53 gaussian_uniforms.transform[0].xyz, 54 gaussian_uniforms.transform[1].xyz, 55 gaussian_uniforms.transform[2].xyz, 58 let R = get_rotation_matrix(rotation); 61 let Sigma = transpose(M) * M; 62 let TS = T * Sigma * transpose(T); 78#ifdef PRECOMPUTE_COVARIANCE_3D 79 let cov3d = get_cov3d(index); 81 let rotation = get_rotation(index); 82 let scale = get_scale(index); 84 let cov3d = compute_cov3d(scale, rotation); 87 return cov2d(position, cov3d);