Selaa lähdekoodia

Make distance fog calculation overflow less in mediump

Gregg (Greggman/GMan) Tavares 7 vuotta sitten
vanhempi
commit
33f69d778e
1 muutettua tiedostoa jossa 4 lisäystä ja 1 poistoa
  1. 4 1
      src/renderers/shaders/ShaderChunk/fog_fragment.glsl

+ 4 - 1
src/renderers/shaders/ShaderChunk/fog_fragment.glsl

@@ -1,6 +1,9 @@
 #ifdef USE_FOG
 
-	float fogDepth = length( vFogPosition );
+	// divide then multiply by max component to try to avoid saturating mediump precision
+	vec3 fogPositionAbs = abs( vFogPosition );
+	float fogMaxComponent = max( fogPositionAbs.x, max( fogPositionAbs.y, fogPositionAbs.z ) );
+	float fogDepth = length( vFogPosition / fogMaxComponent ) * fogMaxComponent;
 
 	#ifdef FOG_EXP2