Browse Source

ESM step 2

David Catuhe 8 years ago
parent
commit
0c2f4ba088

File diff suppressed because it is too large
+ 3200 - 3659
dist/preview release/babylon.d.ts


File diff suppressed because it is too large
+ 3200 - 3659
dist/preview release/babylon.module.d.ts


+ 13 - 10
src/Lights/Shadows/babylon.shadowGenerator.ts

@@ -81,7 +81,7 @@
 
             this._filter = value;
 
-            if (this.useVarianceShadowMap || this.useBlurVarianceShadowMap || this.usePoissonSampling) {
+            if (this.useVarianceShadowMap || this.useBlurVarianceShadowMap || this.usePoissonSampling || this.useExponentialShadowMap) {
                 this._shadowMap.anisotropicFilteringLevel = 16;
                 this._shadowMap.updateSamplingMode(Texture.BILINEAR_SAMPLINGMODE);
             } else {
@@ -179,7 +179,7 @@
             this._shadowMap.wrapU = Texture.CLAMP_ADDRESSMODE;
             this._shadowMap.wrapV = Texture.CLAMP_ADDRESSMODE;
             this._shadowMap.anisotropicFilteringLevel = 1;
-            this._shadowMap.updateSamplingMode(Texture.NEAREST_SAMPLINGMODE);
+            this._shadowMap.updateSamplingMode(Texture.BILINEAR_SAMPLINGMODE);
             this._shadowMap.renderParticles = false;
 
             this._shadowMap.onBeforeRenderObservable.add((faceIndex: number) => {
@@ -187,7 +187,7 @@
             });
 
             this._shadowMap.onAfterUnbindObservable.add(() => {
-                if (!this.useBlurVarianceShadowMap) {
+                if (!this.useBlurVarianceShadowMap && !this.useExponentialShadowMap) {
                     return;
                 }
 
@@ -530,16 +530,19 @@
                 shadowGenerator.useVarianceShadowMap = true;
             } else if (parsedShadowGenerator.useBlurVarianceShadowMap) {
                 shadowGenerator.useBlurVarianceShadowMap = true;
+            }
+            else if (parsedShadowGenerator.useExponentialShadowMap) {
+                shadowGenerator.useExponentialShadowMap = true;
+            }
 
-                if (parsedShadowGenerator.blurScale) {
-                    shadowGenerator.blurScale = parsedShadowGenerator.blurScale;
-                }
-
-                if (parsedShadowGenerator.blurBoxOffset) {
-                    shadowGenerator.blurBoxOffset = parsedShadowGenerator.blurBoxOffset;
-                }
+            if (parsedShadowGenerator.blurScale) {
+                shadowGenerator.blurScale = parsedShadowGenerator.blurScale;
             }
 
+            if (parsedShadowGenerator.blurBoxOffset) {
+                shadowGenerator.blurBoxOffset = parsedShadowGenerator.blurBoxOffset;
+            }
+                
             if (parsedShadowGenerator.bias !== undefined) {
                 shadowGenerator.bias = parsedShadowGenerator.bias;
             }

+ 7 - 7
src/Shaders/ShadersInclude/shadowsFragmentFunctions.fx

@@ -192,17 +192,17 @@
 			float shadowMapSample = texture2D(shadowSampler, uv).x;
 		#endif
 
-		const float shadowStrength = 250.0;
+		const float shadowStrength = 50.0;
 	//	const float exponentLimit = 87.0; //this prevents float overflow in the exp, should be ~< ln(MAX_FLOAT)
 	//	float delta = shadowStrength * (shadowMapSample - shadowPixelDepth); // note: farclip - nearclip?
 	//	float esm = exp(clamp(delta, -exponentLimit, 0.0));
-		float esm = clamp(exp(shadowStrength * shadowPixelDepth) * shadowMapSample, 0., 1.);
-
+		float esm = exp(shadowStrength * shadowPixelDepth) * shadowMapSample;
+		return esm;
 		// Apply fade out at frustum edge
-		const float fadeDistance = 0.07;
-		vec2 cs2 = clipSpace.xy * clipSpace.xy; //squarish falloff
-		float mask = smoothstep(1.0, 1.0 - fadeDistance, dot(cs2, cs2));
+		// const float fadeDistance = 0.07;
+		// vec2 cs2 = clipSpace.xy * clipSpace.xy; //squarish falloff
+		// float mask = smoothstep(1.0, 1.0 - fadeDistance, dot(cs2, cs2));
 
-		return mix(1.0, esm, mask) + darkness;
+		//return mix(1.0, esm, mask) + darkness;
 	}
 #endif

+ 1 - 1
src/Shaders/shadowMap.fragment.fx

@@ -51,7 +51,7 @@ void main(void)
 #endif
 
 #ifdef ESM
-	const float shadowStrength = 250.0;
+	const float shadowStrength = 50.0;
 	depth = exp(-shadowStrength * depth);
 #endif