Browse Source

Shadow map improvement on pack method

For more information : http://blog.gradientstudios.com/2012/08/23/shadow-map-improvement/
clementlevasseur 11 years ago
parent
commit
62df561da7
1 changed files with 6 additions and 5 deletions
  1. 6 5
      Babylon/Shaders/shadowMap.fragment.fx

+ 6 - 5
Babylon/Shaders/shadowMap.fragment.fx

@@ -7,10 +7,11 @@ vec4 pack(float depth)
 	const vec4 bitOffset = vec4(255. * 255. * 255., 255. * 255., 255., 1.);
 	const vec4 bitOffset = vec4(255. * 255. * 255., 255. * 255., 255., 1.);
 	const vec4 bitMask = vec4(0., 1. / 255., 1. / 255., 1. / 255.);
 	const vec4 bitMask = vec4(0., 1. / 255., 1. / 255., 1. / 255.);
 	
 	
-	vec4 comp = fract(depth * bitOffset);
-	comp -= comp.xxyz * bitMask;
-	
-	return comp;
+	vec4 comp = mod( depth * bitOffset * vec4( 254. ),
+    			vec4( 255. ) ) / vec4( 254. );
+  	comp -= comp.xxyz * bitMask;
+
+  	return comp;
 }
 }
 
 
 // Thanks to http://devmaster.net/
 // Thanks to http://devmaster.net/
@@ -35,4 +36,4 @@ void main(void)
 #else
 #else
 	gl_FragColor = pack(vPosition.z / vPosition.w);
 	gl_FragColor = pack(vPosition.z / vPosition.w);
 #endif
 #endif
-}
+}