diff options
| author | HampusM <hampus@hampusmat.com> | 2026-08-19 23:34:48 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-08-19 23:34:48 +0200 |
| commit | f0f090d76207ee2e01ef90d6ea704e2f04f0d1c6 (patch) | |
| tree | 35ed0e00cd85a97983444c354ba8fb0fa08cdfdf | |
| parent | f93ea96df00f31416589e5e5a09debf10d5a4bba (diff) | |
fix(engine): make sky box work when camera has orthographic projection
| -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") |
