summaryrefslogtreecommitdiff
path: root/engine/src/rendering/main_render_pass.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-08-19 23:34:48 +0200
committerHampusM <hampus@hampusmat.com>2026-08-19 23:34:48 +0200
commitf0f090d76207ee2e01ef90d6ea704e2f04f0d1c6 (patch)
tree35ed0e00cd85a97983444c354ba8fb0fa08cdfdf /engine/src/rendering/main_render_pass.rs
parentf93ea96df00f31416589e5e5a09debf10d5a4bba (diff)
fix(engine): make sky box work when camera has orthographic projection
Diffstat (limited to 'engine/src/rendering/main_render_pass.rs')
-rw-r--r--engine/src/rendering/main_render_pass.rs20
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")