diff options
Diffstat (limited to 'engine/src')
| -rw-r--r-- | engine/src/rendering/main_render_pass.rs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/engine/src/rendering/main_render_pass.rs b/engine/src/rendering/main_render_pass.rs index db1569d..13bb4e4 100644 --- a/engine/src/rendering/main_render_pass.rs +++ b/engine/src/rendering/main_render_pass.rs @@ -22,7 +22,7 @@ use crate::lighting::{ use crate::material::{Flags as MaterialFlags, Material}; use crate::mesh::Mesh; use crate::model::{MaterialSearchResult, Model}; -use crate::projection::ClipVolume as ProjectionClipVolume; +use crate::projection::{ClipVolume as ProjectionClipVolume, Perspective, Projection}; use crate::rendering::object::{Id as ObjectId, Store as ObjectStore}; use crate::rendering::shader::cursor::{ BindingTextureKind as ShaderBindingTextureKind, @@ -381,13 +381,21 @@ pub fn add_main_render_pass( .field("Uniforms") .field("projection") .binding( - camera - .projection - .to_matrix_rh( + (match camera.projection { + Projection::Perspective(_) => camera.projection.to_matrix_rh( window.inner_size, ProjectionClipVolume::NegOneToOne, - ) - .into(), + ), + Projection::Orthographic(_) => { + // A orthographic projection cannot be used for a sky box + Perspective::default().to_matrix_rh( + window.inner_size.width as f32 + / window.inner_size.height as f32, + ProjectionClipVolume::NegOneToOne, + ) + } + }) + .into(), )?, sky_box_shader_cursor .field("Uniforms") |
