[Bf-blender-cvs] [5bbc803ff05] blender2.8: Eevee: Fix crash on core profile.

Clément Foucault noreply at git.blender.org
Tue Apr 18 21:47:29 CEST 2017


Commit: 5bbc803ff0538c3363dcf785d53be0d1804bd37e
Author: Clément Foucault
Date:   Tue Apr 18 19:13:18 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB5bbc803ff0538c3363dcf785d53be0d1804bd37e

Eevee: Fix crash on core profile.

===================================================================

M	source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl
M	source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl
M	source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl

===================================================================

diff --git a/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl b/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl
index 96402f5ada2..0f47a341764 100644
--- a/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl
@@ -153,9 +153,9 @@ void make_orthonormal_basis(vec3 N, out vec3 T, out vec3 B)
 }
 
 /* ---- Opengl Depth conversion ---- */
-float linear_depth(float z, float zf, float zn)
+float linear_depth(bool is_persp, float z, float zf, float zn)
 {
-	if (gl_ProjectionMatrix[3][3] == 0.0) {
+	if (is_persp) {
 		return (zn  * zf) / (z * (zn - zf) + zf);
 	}
 	else {
@@ -163,9 +163,9 @@ float linear_depth(float z, float zf, float zn)
 	}
 }
 
-float buffer_depth(float z, float zf, float zn)
+float buffer_depth(bool is_persp, float z, float zf, float zn)
 {
-	if (gl_ProjectionMatrix[3][3] == 0.0) {
+	if (is_persp) {
 		return (zf * (zn - z)) / (z * (zn - zf));
 	}
 	else {
diff --git a/source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl b/source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl
index da14a2dfee4..898c7bfc578 100644
--- a/source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/bsdf_sampling_lib.glsl
@@ -8,7 +8,7 @@ vec2 jitternoise = vec2(0.0);
 
 void setup_noise(void)
 {
-	jitternoise = texture(texJitter, gl_FragCoord.xy / NOISE_SIZE, 0).rg; /* Global variable */
+	jitternoise = texture(texJitter, gl_FragCoord.xy / NOISE_SIZE).rg; /* Global variable */
 }
 
 vec3 hammersley_3d(float i, float invsamplenbr)
diff --git a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
index 9bd8dba452d..598d34941eb 100644
--- a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
@@ -153,7 +153,8 @@ float light_visibility(LightData ld, ShadingData sd)
 		/* Depth in lightspace to compare against shadow map */
 		float w = dot(maj_axis, sd.l_vector);
 		w -= scd.sh_map_bias * w;
-		float shdepth = buffer_depth(w, scd.sh_cube_far, scd.sh_cube_near);
+		bool is_persp = (ProjectionMatrix[3][3] == 0.0);
+		float shdepth = buffer_depth(is_persp, w, scd.sh_cube_far, scd.sh_cube_near);
 
 		vis *= texture(shadowCubes, vec4(uvs, shid * 6.0 + face, shdepth));
 	}




More information about the Bf-blender-cvs mailing list