From 9d03adedcda3a83f83274af1f731ed91080febf7 Mon Sep 17 00:00:00 2001 From: Aevyrie Roessler Date: Sun, 20 Jun 2021 22:40:59 -0700 Subject: [PATCH] Fix view vector in pbr frag to work in ortho --- crates/bevy_pbr/src/render_graph/pbr_pipeline/pbr.frag | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/bevy_pbr/src/render_graph/pbr_pipeline/pbr.frag b/crates/bevy_pbr/src/render_graph/pbr_pipeline/pbr.frag index 74a6fac6596d8..20745f7622aa4 100644 --- a/crates/bevy_pbr/src/render_graph/pbr_pipeline/pbr.frag +++ b/crates/bevy_pbr/src/render_graph/pbr_pipeline/pbr.frag @@ -400,7 +400,12 @@ void main() { emissive.rgb *= texture(sampler2D(StandardMaterial_emissive_texture, StandardMaterial_emissive_texture_sampler), v_Uv).rgb; # endif - vec3 V = normalize(CameraPos.xyz - v_WorldPosition.xyz); + vec3 V; + if (ViewProj[3][3] != 1.0) { // If the projection is not orthographic + V = normalize(CameraPos.xyz - v_WorldPosition.xyz); // Only valid for a perpective projection + } else { + V = normalize(vec3(-ViewProj[0][2],-ViewProj[1][2],-ViewProj[2][2])); // Ortho view vec + } // Neubelt and Pettineo 2013, "Crafting a Next-gen Material Pipeline for The Order: 1886" float NdotV = max(dot(N, V), 1e-4);