Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Commit 73fa2f6

Browse files
committed
refactor: added light and model loader
1 parent 98f1da7 commit 73fa2f6

File tree

3 files changed

+14
-16
lines changed

3 files changed

+14
-16
lines changed

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "blue_engine_utilities"
3-
version = "0.1.1"
3+
version = "0.1.2"
44
edition = "2021"
55
authors = ["Elham Aryanpur <elhamaryanpur5@gmail.com>"]
66
description = "Utilities for Blue Engine"
@@ -15,8 +15,8 @@ animation = ["dep:keyframe_derive", "dep:keyframe"]
1515
gltf = ["dep:gltf"]
1616

1717
[dependencies]
18-
# blue_engine = { version = "^0.4.22" }
19-
blue_engine = { path = "../Blue Engine" }
18+
blue_engine = { version = "^0.4.23" }
19+
#blue_engine = { path = "../Blue Engine" }
2020
anyhow = "1.0"
2121

2222
# Animation

examples/basic_light.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ fn main() -> anyhow::Result<()> {
1818
.objects
1919
.get_mut("light sphere")
2020
.unwrap()
21-
.set_color(1f32, 0f32, 0f32, 1f32);
21+
.set_color(1f32, 0f32, 0f32, 1f32).expect("color couldn't change");
2222

2323
// load the monke
24-
load_gltf("monke", "./resources/monkey.glb", &mut engine.renderer, &mut engine.objects);
24+
load_gltf("monke", "./resources/monkey.glb", &mut engine.renderer, &mut engine.objects).expect("couldn't load the monke model");
2525
engine
2626
.objects
2727
.get_mut("monke")
2828
.unwrap()
29-
.set_color(0.051f32, 0.533f32, 0.898f32, 1f32);
29+
.set_color(0.051f32, 0.533f32, 0.898f32, 1f32).expect("color couldn't change");
3030

3131
let mut light_manager = LightManager::new();
3232
light_manager.set_object_as_light("light sphere".to_string());
@@ -35,7 +35,7 @@ fn main() -> anyhow::Result<()> {
3535
let start = std::time::SystemTime::now();
3636

3737
engine.update_loop(move |renderer, _, objects, _, camera, _| {
38-
light_manager.update(objects, renderer, camera);
38+
light_manager.update(objects, renderer, camera).expect("couldn't update the light manager");
3939

4040
let camx = start.elapsed().unwrap().as_secs_f32().sin() * radius;
4141
let camy = start.elapsed().unwrap().as_secs_f32().sin() * radius;

src/definitions/light.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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#"
8382
struct 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

Comments
 (0)