From f0f090d76207ee2e01ef90d6ea704e2f04f0d1c6 Mon Sep 17 00:00:00 2001 From: HampusM Date: Wed, 19 Aug 2026 23:34:48 +0200 Subject: fix(engine): make sky box work when camera has orthographic projection --- engine/src/rendering/main_render_pass.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'engine/src') 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") -- cgit v1.2.3-18-g5258