Ver código fonte

Update shadowGeneratorSceneComponents

Popov72 5 anos atrás
pai
commit
4d01a0e9d1

+ 39 - 53
src/Lights/Shadows/cascadedShadowGenerator.ts

@@ -1701,33 +1701,30 @@ export class CascadedShadowGenerator implements IShadowGenerator {
             return serializationObject;
         }
 
+        serializationObject.className = this.getClassName();
         serializationObject.lightId = this._light.id;
         serializationObject.mapSize = shadowMap.getRenderSize();
         serializationObject.forceBackFacesOnly = this.forceBackFacesOnly;
         serializationObject.darkness = this.getDarkness();
         serializationObject.transparencyShadow = this._transparencyShadow;
         serializationObject.frustumEdgeFalloff = this.frustumEdgeFalloff;
+        serializationObject.numCascades = this._numCascades;
+        serializationObject.stabilizeCascades = this.stabilizeCascades;
+        serializationObject.depthClamp = this._depthClamp;
+        serializationObject.lambda = this._lambda;
+        serializationObject.freezeShadowCastersBoundingInfo = this._freezeShadowCastersBoundingInfo;
+        serializationObject.shadowMaxZ = this._shadowMaxZ;
+        serializationObject.cascadeBlendPercentage = this.cascadeBlendPercentage;
+
         serializationObject.bias = this.bias;
         serializationObject.normalBias = this.normalBias;
+
         serializationObject.usePercentageCloserFiltering = this.usePercentageCloserFiltering;
         serializationObject.useContactHardeningShadow = this.useContactHardeningShadow;
-        serializationObject.contactHardeningLightSizeUVRatio = this.contactHardeningLightSizeUVRatio;
         serializationObject.filteringQuality = this.filteringQuality;
-
-        serializationObject.numCascades = this._numCascades;
-        serializationObject.debug = this._debug;
-        serializationObject.stabilizeCascades = this.stabilizeCascades;
-        serializationObject.lambda = this._lambda;
-        serializationObject.cascadeBlendPercentage = this.cascadeBlendPercentage;
-        serializationObject.depthClamp = this._depthClamp;
-        serializationObject.autoCalcDepthBounds = this.autoCalcDepthBounds;
-        serializationObject.shadowMaxZ = this._shadowMaxZ;
+        serializationObject.contactHardeningLightSizeUVRatio = this.contactHardeningLightSizeUVRatio;
         serializationObject.penumbraDarkness = this.penumbraDarkness;
 
-        serializationObject.freezeShadowCastersBoundingInfo = this._freezeShadowCastersBoundingInfo;
-        serializationObject.minDistance = this.minDistance;
-        serializationObject.maxDistance = this.maxDistance;
-
         serializationObject.renderList = [];
         if (shadowMap.renderList) {
             for (var meshIndex = 0; meshIndex < shadowMap.renderList.length; meshIndex++) {
@@ -1764,18 +1761,19 @@ export class CascadedShadowGenerator implements IShadowGenerator {
             });
         }
 
-        shadowGenerator.forceBackFacesOnly = !!parsedShadowGenerator.forceBackFacesOnly;
-
-        if (parsedShadowGenerator.darkness !== undefined) {
-            shadowGenerator.setDarkness(parsedShadowGenerator.darkness);
+        if (parsedShadowGenerator.usePercentageCloserFiltering) {
+            shadowGenerator.usePercentageCloserFiltering = true;
+        }
+        else if (parsedShadowGenerator.useContactHardeningShadow) {
+            shadowGenerator.useContactHardeningShadow = true;
         }
 
-        if (parsedShadowGenerator.transparencyShadow) {
-            shadowGenerator.setTransparencyShadow(true);
+        if (parsedShadowGenerator.filteringQuality !== undefined) {
+            shadowGenerator.filteringQuality = parsedShadowGenerator.filteringQuality;
         }
 
-        if (parsedShadowGenerator.frustumEdgeFalloff !== undefined) {
-            shadowGenerator.frustumEdgeFalloff = parsedShadowGenerator.frustumEdgeFalloff;
+        if (parsedShadowGenerator.contactHardeningLightSizeUVRatio !== undefined) {
+            shadowGenerator.contactHardeningLightSizeUVRatio = parsedShadowGenerator.contactHardeningLightSizeUVRatio;
         }
 
         if (parsedShadowGenerator.bias !== undefined) {
@@ -1786,62 +1784,50 @@ export class CascadedShadowGenerator implements IShadowGenerator {
             shadowGenerator.normalBias = parsedShadowGenerator.normalBias;
         }
 
-        if (parsedShadowGenerator.usePercentageCloserFiltering) {
-            shadowGenerator.usePercentageCloserFiltering = true;
-        } else if (parsedShadowGenerator.useContactHardeningShadow) {
-            shadowGenerator.useContactHardeningShadow = true;
-        }
-
-        if (parsedShadowGenerator.contactHardeningLightSizeUVRatio !== undefined) {
-            shadowGenerator.contactHardeningLightSizeUVRatio = parsedShadowGenerator.contactHardeningLightSizeUVRatio;
+        if (parsedShadowGenerator.frustumEdgeFalloff !== undefined) {
+            shadowGenerator.frustumEdgeFalloff = parsedShadowGenerator.frustumEdgeFalloff;
         }
 
-        if (parsedShadowGenerator.filteringQuality !== undefined) {
-            shadowGenerator.filteringQuality = parsedShadowGenerator.filteringQuality;
+        if (parsedShadowGenerator.darkness !== undefined) {
+            shadowGenerator.setDarkness(parsedShadowGenerator.darkness);
         }
 
-        if (parsedShadowGenerator.numCascades !== undefined) {
-            shadowGenerator.numCascades = parsedShadowGenerator.numCascades;
+        if (parsedShadowGenerator.transparencyShadow) {
+            shadowGenerator.setTransparencyShadow(true);
         }
 
-        if (parsedShadowGenerator.debug !== undefined) {
-            shadowGenerator.debug = parsedShadowGenerator.debug;
-        }
+        shadowGenerator.forceBackFacesOnly = !!parsedShadowGenerator.forceBackFacesOnly;
 
         if (parsedShadowGenerator.stabilizeCascades !== undefined) {
             shadowGenerator.stabilizeCascades = parsedShadowGenerator.stabilizeCascades;
         }
 
-        if (parsedShadowGenerator.lambda !== undefined) {
-            shadowGenerator.lambda = parsedShadowGenerator.lambda;
+        if (parsedShadowGenerator.depthClamp !== undefined) {
+             shadowGenerator.depthClamp = parsedShadowGenerator.depthClamp;
         }
 
-        if (parsedShadowGenerator.cascadeBlendPercentage !== undefined) {
-            shadowGenerator.cascadeBlendPercentage = parsedShadowGenerator.cascadeBlendPercentage;
+        if (parsedShadowGenerator.lambda !== undefined) {
+             shadowGenerator.lambda = parsedShadowGenerator.lambda;
         }
 
-        if (parsedShadowGenerator.depthClamp !== undefined) {
-             shadowGenerator.depthClamp = parsedShadowGenerator.depthClamp;
+        if (parsedShadowGenerator.freezeShadowCastersBoundingInfo !== undefined) {
+            shadowGenerator.freezeShadowCastersBoundingInfo = parsedShadowGenerator.freezeShadowCastersBoundingInfo;
         }
 
-        if (parsedShadowGenerator.autoCalcDepthBounds !== undefined) {
-            shadowGenerator.autoCalcDepthBounds = parsedShadowGenerator.autoCalcDepthBounds;
+        if (parsedShadowGenerator.shadowMaxZ !== undefined) {
+             shadowGenerator.shadowMaxZ = parsedShadowGenerator.shadowMaxZ;
         }
 
-        if (parsedShadowGenerator.shadowMaxZ !== undefined) {
-            shadowGenerator.shadowMaxZ = parsedShadowGenerator.shadowMaxZ;
+        if (parsedShadowGenerator.cascadeBlendPercentage !== undefined) {
+             shadowGenerator.cascadeBlendPercentage = parsedShadowGenerator.cascadeBlendPercentage;
         }
 
         if (parsedShadowGenerator.penumbraDarkness !== undefined) {
             shadowGenerator.penumbraDarkness = parsedShadowGenerator.penumbraDarkness;
         }
 
-        if (parsedShadowGenerator.freezeShadowCastersBoundingInfo !== undefined) {
-            shadowGenerator.freezeShadowCastersBoundingInfo = parsedShadowGenerator.freezeShadowCastersBoundingInfo;
-        }
-
-        if (parsedShadowGenerator.minDistance !== undefined && parsedShadowGenerator.maxDistance !== undefined) {
-            shadowGenerator.setMinMaxDistance(parsedShadowGenerator.minDistance, parsedShadowGenerator.maxDistance);
+        if (parsedShadowGenerator.numCascades !== undefined) {
+            shadowGenerator.numCascades = parsedShadowGenerator.numCascades;
         }
 
         return shadowGenerator;

+ 5 - 1
src/Lights/Shadows/shadowGeneratorSceneComponent.ts

@@ -12,7 +12,11 @@ AbstractScene.AddParser(SceneComponentConstants.NAME_SHADOWGENERATOR, (parsedDat
     if (parsedData.shadowGenerators !== undefined && parsedData.shadowGenerators !== null) {
         for (var index = 0, cache = parsedData.shadowGenerators.length; index < cache; index++) {
             var parsedShadowGenerator = parsedData.shadowGenerators[index];
-            ShadowGenerator.Parse(parsedShadowGenerator, scene);
+            if (parsedShadowGenerator.className === 'CascadedShadowGenerator') {
+                CascadedShadowGenerator.Parse(parsedShadowGenerator, scene);
+            } else {
+                ShadowGenerator.Parse(parsedShadowGenerator, scene);
+            }
             // SG would be available on their associated lights
         }
     }