소스 검색

Make sure all properties are serialized/parsed

Popov72 5 년 전
부모
커밋
eb6e759e1b
2개의 변경된 파일54개의 추가작업 그리고 38개의 파일을 삭제
  1. 1 0
      dist/preview release/what's new.md
  2. 53 38
      src/Lights/Shadows/cascadedShadowGenerator.ts

+ 1 - 0
dist/preview release/what's new.md

@@ -57,6 +57,7 @@
 - Improved cascade blending in CSM shadow technique ([Popov72](https://github.com/Popov72))
 - Speed optimization when cascade blending is not used in CSM shadow technique ([Popov72](https://github.com/Popov72))
 - Added `RenderTargetTexture.getCustomRenderList` to overload the render list at rendering time (and possibly for each layer (2DArray) / face (Cube)) ([Popov72](https://github.com/Popov72))
+- Make sure all properties of CascadedShadowMap class are serialized/parsed ([Popov72](https://github.com/Popov72))
 
 ### Engine
 

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

@@ -1707,23 +1707,27 @@ export class CascadedShadowGenerator implements IShadowGenerator {
         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.filteringQuality = this.filteringQuality;
         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.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++) {
@@ -1760,19 +1764,18 @@ export class CascadedShadowGenerator implements IShadowGenerator {
             });
         }
 
-        if (parsedShadowGenerator.usePercentageCloserFiltering) {
-            shadowGenerator.usePercentageCloserFiltering = true;
-        }
-        else if (parsedShadowGenerator.useContactHardeningShadow) {
-            shadowGenerator.useContactHardeningShadow = true;
+        shadowGenerator.forceBackFacesOnly = !!parsedShadowGenerator.forceBackFacesOnly;
+
+        if (parsedShadowGenerator.darkness !== undefined) {
+            shadowGenerator.setDarkness(parsedShadowGenerator.darkness);
         }
 
-        if (parsedShadowGenerator.filteringQuality !== undefined) {
-            shadowGenerator.filteringQuality = parsedShadowGenerator.filteringQuality;
+        if (parsedShadowGenerator.transparencyShadow) {
+            shadowGenerator.setTransparencyShadow(true);
         }
 
-        if (parsedShadowGenerator.contactHardeningLightSizeUVRatio !== undefined) {
-            shadowGenerator.contactHardeningLightSizeUVRatio = parsedShadowGenerator.contactHardeningLightSizeUVRatio;
+        if (parsedShadowGenerator.frustumEdgeFalloff !== undefined) {
+            shadowGenerator.frustumEdgeFalloff = parsedShadowGenerator.frustumEdgeFalloff;
         }
 
         if (parsedShadowGenerator.bias !== undefined) {
@@ -1783,50 +1786,62 @@ export class CascadedShadowGenerator implements IShadowGenerator {
             shadowGenerator.normalBias = parsedShadowGenerator.normalBias;
         }
 
-        if (parsedShadowGenerator.frustumEdgeFalloff !== undefined) {
-            shadowGenerator.frustumEdgeFalloff = parsedShadowGenerator.frustumEdgeFalloff;
+        if (parsedShadowGenerator.usePercentageCloserFiltering) {
+            shadowGenerator.usePercentageCloserFiltering = true;
+        } else if (parsedShadowGenerator.useContactHardeningShadow) {
+            shadowGenerator.useContactHardeningShadow = true;
         }
 
-        if (parsedShadowGenerator.darkness !== undefined) {
-            shadowGenerator.setDarkness(parsedShadowGenerator.darkness);
+        if (parsedShadowGenerator.contactHardeningLightSizeUVRatio !== undefined) {
+            shadowGenerator.contactHardeningLightSizeUVRatio = parsedShadowGenerator.contactHardeningLightSizeUVRatio;
         }
 
-        if (parsedShadowGenerator.transparencyShadow) {
-            shadowGenerator.setTransparencyShadow(true);
+        if (parsedShadowGenerator.filteringQuality !== undefined) {
+            shadowGenerator.filteringQuality = parsedShadowGenerator.filteringQuality;
         }
 
-        shadowGenerator.forceBackFacesOnly = !!parsedShadowGenerator.forceBackFacesOnly;
+        if (parsedShadowGenerator.numCascades !== undefined) {
+            shadowGenerator.numCascades = parsedShadowGenerator.numCascades;
+        }
+
+        if (parsedShadowGenerator.debug !== undefined) {
+            shadowGenerator.debug = parsedShadowGenerator.debug;
+        }
 
         if (parsedShadowGenerator.stabilizeCascades !== undefined) {
             shadowGenerator.stabilizeCascades = parsedShadowGenerator.stabilizeCascades;
         }
 
-        if (parsedShadowGenerator.depthClamp !== undefined) {
-             shadowGenerator.depthClamp = parsedShadowGenerator.depthClamp;
+        if (parsedShadowGenerator.lambda !== undefined) {
+            shadowGenerator.lambda = parsedShadowGenerator.lambda;
         }
 
-        if (parsedShadowGenerator.lambda !== undefined) {
-             shadowGenerator.lambda = parsedShadowGenerator.lambda;
+        if (parsedShadowGenerator.cascadeBlendPercentage !== undefined) {
+            shadowGenerator.cascadeBlendPercentage = parsedShadowGenerator.cascadeBlendPercentage;
         }
 
-        if (parsedShadowGenerator.freezeShadowCastersBoundingInfo !== undefined) {
-            shadowGenerator.freezeShadowCastersBoundingInfo = parsedShadowGenerator.freezeShadowCastersBoundingInfo;
+        if (parsedShadowGenerator.depthClamp !== undefined) {
+             shadowGenerator.depthClamp = parsedShadowGenerator.depthClamp;
         }
 
-        if (parsedShadowGenerator.shadowMaxZ !== undefined) {
-             shadowGenerator.shadowMaxZ = parsedShadowGenerator.shadowMaxZ;
+        if (parsedShadowGenerator.autoCalcDepthBounds !== undefined) {
+            shadowGenerator.autoCalcDepthBounds = parsedShadowGenerator.autoCalcDepthBounds;
         }
 
-        if (parsedShadowGenerator.cascadeBlendPercentage !== undefined) {
-             shadowGenerator.cascadeBlendPercentage = parsedShadowGenerator.cascadeBlendPercentage;
+        if (parsedShadowGenerator.shadowMaxZ !== undefined) {
+            shadowGenerator.shadowMaxZ = parsedShadowGenerator.shadowMaxZ;
         }
 
         if (parsedShadowGenerator.penumbraDarkness !== undefined) {
             shadowGenerator.penumbraDarkness = parsedShadowGenerator.penumbraDarkness;
         }
 
-        if (parsedShadowGenerator.numCascades !== undefined) {
-            shadowGenerator.numCascades = parsedShadowGenerator.numCascades;
+        if (parsedShadowGenerator.freezeShadowCastersBoundingInfo !== undefined) {
+            shadowGenerator.freezeShadowCastersBoundingInfo = parsedShadowGenerator.freezeShadowCastersBoundingInfo;
+        }
+
+        if (parsedShadowGenerator.minDistance !== undefined && parsedShadowGenerator.maxDistance !== undefined) {
+            shadowGenerator.setMinMaxDistance(parsedShadowGenerator.minDistance, parsedShadowGenerator.maxDistance);
         }
 
         return shadowGenerator;