Reconstruct normal Z *properly*

pull/3235/head
Alexei Kotov 1 month ago
parent e4c70b7861
commit 537964f8d8

@ -77,10 +77,11 @@ void main()
vec3 specularColor = getSpecularColor().xyz;
#if @normalMap
vec4 normalTex = texture2D(normalMap, normalMapUV);
vec3 normal = normalTex.xyz * 2.0 - 1.0;
#if @reconstructNormalZ
normalTex.z = sqrt(1.0 - dot(normalTex.xy, normalTex.xy));
normal.z = sqrt(1.0 - dot(normal.xy, normal.xy));
#endif
vec3 viewNormal = normalToView(normalTex.xyz * 2.0 - 1.0);
vec3 viewNormal = normalToView(normal);
specularColor *= normalTex.a;
#else
vec3 viewNormal = normalize(gl_NormalMatrix * passNormal);

@ -60,10 +60,11 @@ void main()
#if @normalMap
vec4 normalTex = texture2D(normalMap, normalMapUV);
vec3 normal = normalTex.xyz * 2.0 - 1.0;
#if @reconstructNormalZ
normalTex.z = sqrt(1.0 - dot(normalTex.xy, normalTex.xy));
normal.z = sqrt(1.0 - dot(normal.xy, normal.xy));
#endif
vec3 viewNormal = normalToView(normalTex.xyz * 2.0 - 1.0);
vec3 viewNormal = normalToView(normal);
#else
vec3 viewNormal = normalToView(normalize(passNormal));
#endif

@ -168,10 +168,11 @@ vec2 screenCoords = gl_FragCoord.xy / screenRes;
#if @normalMap
vec4 normalTex = texture2D(normalMap, normalMapUV + offset);
vec3 normal = normalTex.xyz * 2.0 - 1.0;
#if @reconstructNormalZ
normalTex.z = sqrt(1.0 - dot(normalTex.xy, normalTex.xy));
normal.z = sqrt(1.0 - dot(normal.xy, normal.xy));
#endif
vec3 viewNormal = normalToView(normalTex.xyz * 2.0 - 1.0);
vec3 viewNormal = normalToView(normal);
#else
vec3 viewNormal = normalize(gl_NormalMatrix * passNormal);
#endif

@ -64,10 +64,11 @@ void main()
#if @normalMap
vec4 normalTex = texture2D(normalMap, adjustedUV);
vec3 normal = normalTex.xyz * 2.0 - 1.0;
#if @reconstructNormalZ
normalTex.z = sqrt(1.0 - dot(normalTex.xy, normalTex.xy));
normal.z = sqrt(1.0 - dot(normal.xy, normal.xy));
#endif
vec3 viewNormal = normalToView(normalTex.xyz * 2.0 - 1.0);
vec3 viewNormal = normalToView(normal);
#else
vec3 viewNormal = normalize(gl_NormalMatrix * passNormal);
#endif

Loading…
Cancel
Save