@@ -32,6 +32,7 @@ impl crate::LightManager {
3232 camera : & blue_engine:: Camera ,
3333 ) -> anyhow:: Result < ( ) > {
3434 let light_keys: Vec < String > = self . light_objects . keys ( ) . map ( |x| x. clone ( ) ) . collect ( ) ;
35+ let shader_content = include_str ! ( "./light_shader.wgsl" ) . to_string ( ) ;
3536
3637 for i in objects. iter_mut ( ) {
3738 let i = i. 1 ;
@@ -73,25 +74,22 @@ impl crate::LightManager {
7374
7475 i. update_uniform_buffer ( renderer) ?;
7576
76- let shader_content = include_str ! ( "./light_shader.wgsl" ) . to_string ( ) ;
77- i. shader_builder . shader = shader_content;
77+ let mut shader_content = shader_content. clone ( ) ;
7878
7979 if !self . affected_objects . contains ( & i. name ) {
80- let mut changes = Vec :: < ( & str , & str ) > :: new ( ) ;
8180 if i. camera_effect {
82- changes . push ( ( "//@CAMERASTRUCT" , r#"
81+ shader_content = shader_content . replace ( "//@CAMERASTRUCT" , r#"
8382struct CameraUniforms {
8483 camera_matrix: mat4x4<f32>,
8584};
8685@group(1) @binding(0)
87- var<uniform> camera_uniform: CameraUniforms;"# ) ) ;
88- changes . push ( ( "//@CAMERAOUT" , "out.position = camera_uniform.camera_matrix * (transform_uniform.transform_matrix * vec4<f32>(input.position, 1.0));" ) ) ;
86+ var<uniform> camera_uniform: CameraUniforms;"# ) ;
87+ shader_content = shader_content . replace ( "//@CAMERAOUT" , "out.position = camera_uniform.camera_matrix * (transform_uniform.transform_matrix * vec4<f32>(input.position, 1.0));" ) ;
8988 } else {
90- changes . push ( ( "//@CAMERAOUT" , "out.position = transform_uniform.transform_matrix * vec4<f32>(input.position, 1.0);" ) ) ;
89+ shader_content = shader_content . replace ( "//@CAMERAOUT" , "out.position = transform_uniform.transform_matrix * vec4<f32>(input.position, 1.0);" ) ;
9190 }
9291
93- i. shader_builder . parse ( changes) ;
94- println ! ( "{}" , i. shader_builder. shader) ;
92+ i. shader_builder . shader = shader_content;
9593 i. update_shader ( renderer) ?;
9694
9795 self . affected_objects . push ( i. name . clone ( ) ) ;
0 commit comments