diff options
Diffstat (limited to 'engine/src/rendering')
| -rw-r--r-- | engine/src/rendering/main_render_pass.rs | 8 | ||||
| -rw-r--r-- | engine/src/rendering/shader/default.rs | 32 |
2 files changed, 19 insertions, 21 deletions
diff --git a/engine/src/rendering/main_render_pass.rs b/engine/src/rendering/main_render_pass.rs index 622a087..c3278fa 100644 --- a/engine/src/rendering/main_render_pass.rs +++ b/engine/src/rendering/main_render_pass.rs @@ -56,7 +56,7 @@ use crate::texture::{ Wrapping as TextureWrapping, WHITE_1X1_ASSET_LABEL as TEXTURE_WHITE_1X1_ASSET_LABEL, }; -use crate::transform::WorldPosition; +use crate::transform::Transform; use crate::vector::Vec3; use crate::windowing::window::Window; @@ -88,7 +88,7 @@ pub fn add_main_render_pass( renderable_query: Query<RenderableEntity<'_>>, camera_query: Query<( &Camera, - &WorldPosition, + &Transform, &ActiveCamera, Traverse<(With<Scene>, With<ActiveScene>), TraverseUp, ChildOf>, )>, @@ -117,7 +117,7 @@ pub fn add_main_render_pass( return Ok(()); }; - let Some((camera, camera_world_pos, _)) = camera_query.iter().next() else { + let Some((camera, camera_transform, _)) = camera_query.iter().next() else { tracing::trace!("No active camera"); return Ok(()); }; @@ -350,7 +350,7 @@ pub fn add_main_render_pass( .unwrap(), ); - let mut view = camera.to_view_matrix(camera_world_pos.position); + let mut view = camera.to_view_matrix(camera_transform.position); view.translate(&Vec3 { x: 0.0, y: 0.0, z: 0.0 }); diff --git a/engine/src/rendering/shader/default.rs b/engine/src/rendering/shader/default.rs index 4c59a1b..59d0c9e 100644 --- a/engine/src/rendering/shader/default.rs +++ b/engine/src/rendering/shader/default.rs @@ -35,7 +35,7 @@ use crate::rendering::{ }; use crate::scene::{Active as ActiveScene, Scene}; use crate::texture::WHITE_1X1_ASSET_LABEL as TEXTURE_WHITE_1X1_ASSET_LABEL; -use crate::transform::{Scale, Transform, WorldPosition}; +use crate::transform::Transform; use crate::windowing::window::Window; pub static ASSET_LABEL: LazyLock<AssetLabel> = LazyLock::new(|| AssetLabel { @@ -63,14 +63,14 @@ pub fn enqueue_set_shader_bindings( renderable_query: Query<RenderableEntity<'_>>, camera_query: Query<( &Camera, - &WorldPosition, + &Transform, &ActiveCamera, Traverse<(With<Scene>, With<ActiveScene>), TraverseUp, ChildOf>, )>, window_query: Query<(&Window, &SurfaceSpec, With<RenderingTargetWindow>)>, point_light_query: Query<( &PointLight, - &WorldPosition, + &Transform, Traverse<(With<Scene>, With<ActiveScene>), TraverseUp, ChildOf>, )>, directional_light_query: Query<( @@ -85,7 +85,7 @@ pub fn enqueue_set_shader_bindings( let assets = assets.get()?; let shader_context = shader_context.get()?; - let Some((camera, camera_world_pos, _)) = camera_query.iter().next() else { + let Some((camera, camera_transform, _)) = camera_query.iter().next() else { tracing::trace!("No active camera"); return Ok(()); }; @@ -100,8 +100,7 @@ pub fn enqueue_set_shader_bindings( model, environmental_lighting, material_flags, - world_pos, - scale, + transform, shader, mut pending_shader_bindings, ), @@ -143,12 +142,12 @@ pub fn enqueue_set_shader_bindings( .unwrap(), ); - let model_matrix = Transform { - position: world_pos.as_deref().cloned().unwrap_or_default().position, - scale: scale.as_deref().cloned().unwrap_or_default().scale, - } - .to_matrix(); + let transform = match transform.as_deref() { + Some(transform) => transform, + None => &Transform::default(), + }; + let model_matrix = transform.to_matrix(); let inverted_model_matrix = model_matrix.inverse(); let model_material = match model_spec.find_first_material(&assets) { @@ -190,7 +189,7 @@ pub fn enqueue_set_shader_bindings( let lighting_shader_cursor = shader_cursor.field("Uniforms").field("lighting"); let material_shader_cursor = lighting_shader_cursor.field("material"); - let view = camera.to_view_matrix(camera_world_pos.position); + let view = camera.to_view_matrix(camera_transform.position); shader_bindings.bindings.extend([ model_3d_shader_cursor @@ -202,7 +201,7 @@ pub fn enqueue_set_shader_bindings( model_3d_shader_cursor.field("view").binding(view.into())?, lighting_shader_cursor .field("view_pos") - .binding(camera_world_pos.position.into())?, + .binding(camera_transform.position.into())?, material_shader_cursor.field("ambient").binding( (if material_flags.use_ambient_color { &model_material.ambient @@ -256,7 +255,7 @@ pub fn enqueue_set_shader_bindings( .bindings .reserve(point_light_query.iter().count() * 6); - for (point_light_index, (point_light, point_light_world_pos)) in + for (point_light_index, (point_light, point_light_transform)) in point_light_query.iter().enumerate() { let point_light_shader_cursor = lighting_shader_cursor @@ -276,7 +275,7 @@ pub fn enqueue_set_shader_bindings( .field("specular") .binding(point_light.specular.clone().into())?, point_light_shader_cursor.field("position").binding( - (point_light_world_pos.position + point_light.local_position).into(), + (point_light_transform.position + point_light.local_position).into(), )?, attenuation_props_shader_cursor .field("constant") @@ -399,8 +398,7 @@ type RenderableEntity<'a> = ( ChildOf, >, Option<&'a MaterialFlags>, - Option<&'a WorldPosition>, - Option<&'a Scale>, + Option<&'a Transform>, Option<&'a Shader>, Option<&'a mut PendingShaderBindings>, Without<NoDraw>, |
