summaryrefslogtreecommitdiff
path: root/engine/src/rendering
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/rendering')
-rw-r--r--engine/src/rendering/shader/default.rs62
1 files changed, 12 insertions, 50 deletions
diff --git a/engine/src/rendering/shader/default.rs b/engine/src/rendering/shader/default.rs
index 737916f..4c59a1b 100644
--- a/engine/src/rendering/shader/default.rs
+++ b/engine/src/rendering/shader/default.rs
@@ -3,7 +3,6 @@ use std::sync::LazyLock;
use crate::asset::{Assets, Label as AssetLabel};
use crate::camera::{Active as ActiveCamera, Camera};
-use crate::data_types::dimens::Dimens;
use crate::draw_flags::NoDraw;
use crate::ecs::actions::Actions;
use crate::ecs::pair::ChildOf;
@@ -16,9 +15,8 @@ use crate::lighting::{
PointLight,
};
use crate::material::{Flags as MaterialFlags, Material};
-use crate::matrix::Matrix;
use crate::model::{MaterialSearchResult, Model};
-use crate::projection::{ClipVolume as ProjectionClipVolume, Projection};
+use crate::projection::ClipVolume as ProjectionClipVolume;
use crate::rendering::shader::cursor::{
BindingTextureKind as ShaderBindingTextureKind,
BindingValue as ShaderBindingValue,
@@ -38,8 +36,6 @@ 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::vector::Vec3;
-use crate::windowing::dpi::PhysicalSize;
use crate::windowing::window::Window;
pub static ASSET_LABEL: LazyLock<AssetLabel> = LazyLock::new(|| AssetLabel {
@@ -147,10 +143,11 @@ pub fn enqueue_set_shader_bindings(
.unwrap(),
);
- let model_matrix = create_model_matrix(Transform {
+ 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 inverted_model_matrix = model_matrix.inverse();
@@ -193,7 +190,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 = create_view_matrix(&camera, camera_world_pos.position);
+ let view = camera.to_view_matrix(camera_world_pos.position);
shader_bindings.bindings.extend([
model_3d_shader_cursor
@@ -244,7 +241,13 @@ pub fn enqueue_set_shader_bindings(
shader_bindings.surface_specific_bindings.push((
window_surface_spec.id,
model_3d_shader_cursor.field("projection").binding(
- create_projection_matrix(&camera, &window.inner_size).into(),
+ camera
+ .projection
+ .to_matrix_rh(
+ window.inner_size,
+ ProjectionClipVolume::NegOneToOne,
+ )
+ .into(),
)?,
));
}
@@ -384,47 +387,6 @@ pub fn enqueue_set_shader_bindings(
Ok(())
}
-fn create_model_matrix(transform: Transform) -> Matrix<f32, 4, 4>
-{
- let mut matrix = Matrix::new_identity();
-
- matrix.translate(&transform.position);
- matrix.scale(&transform.scale);
-
- matrix
-}
-
-fn create_view_matrix(camera: &Camera, camera_world_pos: Vec3<f32>) -> Matrix<f32, 4, 4>
-{
- let mut view = Matrix::new();
-
- // tracing::debug!("Camera target: {:?}", camera.target);
-
- view.look_at(camera_world_pos, camera.target, camera.global_up);
-
- view
-}
-
-fn create_projection_matrix(
- camera: &Camera,
- window_size: &PhysicalSize<u32>,
-) -> Matrix<f32, 4, 4>
-{
- match &camera.projection {
- Projection::Perspective(perspective_proj) => perspective_proj.to_matrix_rh(
- window_size.width as f32 / window_size.height as f32,
- ProjectionClipVolume::NegOneToOne,
- ),
- Projection::Orthographic(orthographic_proj) => orthographic_proj.to_matrix_rh(
- Dimens {
- width: window_size.width as f32,
- height: window_size.height as f32,
- },
- ProjectionClipVolume::NegOneToOne,
- ),
- }
-}
-
type RenderableEntity<'a> = (
&'a Model,
Traverse<