浏览代码

Merge branch 'master' of https://github.com/BabylonJS/Babylon.js

David Catuhe 5 年之前
父节点
当前提交
afdc52158c

+ 2 - 5
src/Lights/Shadows/cascadedShadowGenerator.ts

@@ -583,11 +583,7 @@ export class CascadedShadowGenerator extends ShadowGenerator {
                 minZ = Math.max(minZ, boundingInfo.boundingBox.minimumWorld.z);
             }
 
-            if (this._scene.useRightHandedSystem) {
-                Matrix.OrthoOffCenterRHToRef(this._cascadeMinExtents[cascadeIndex].x, this._cascadeMaxExtents[cascadeIndex].x, this._cascadeMinExtents[cascadeIndex].y, this._cascadeMaxExtents[cascadeIndex].y, minZ, maxZ, this._projectionMatrices[cascadeIndex]);
-            } else {
-                Matrix.OrthoOffCenterLHToRef(this._cascadeMinExtents[cascadeIndex].x, this._cascadeMaxExtents[cascadeIndex].x, this._cascadeMinExtents[cascadeIndex].y, this._cascadeMaxExtents[cascadeIndex].y, minZ, maxZ, this._projectionMatrices[cascadeIndex]);
-            }
+            Matrix.OrthoOffCenterLHToRef(this._cascadeMinExtents[cascadeIndex].x, this._cascadeMaxExtents[cascadeIndex].x, this._cascadeMinExtents[cascadeIndex].y, this._cascadeMaxExtents[cascadeIndex].y, minZ, maxZ, this._projectionMatrices[cascadeIndex]);
 
             this._cascadeMinExtents[cascadeIndex].z = minZ;
             this._cascadeMaxExtents[cascadeIndex].z = maxZ;
@@ -826,6 +822,7 @@ export class CascadedShadowGenerator extends ShadowGenerator {
         defines["SHADOWCSM" + lightIndex] = true;
         defines["SHADOWCSMDEBUG" + lightIndex] = this.debug;
         defines["SHADOWCSMNUM_CASCADES" + lightIndex] = this.numCascades;
+        defines["SHADOWCSM_RIGHTHANDED" + lightIndex] = scene.useRightHandedSystem;
 
         const camera = scene.activeCamera;
 

+ 2 - 0
src/Materials/materialHelper.ts

@@ -348,6 +348,7 @@ export class MaterialHelper {
         defines["SHADOWCSMNUM_CASCADES" + lightIndex] = false;
         defines["SHADOWCSMUSESHADOWMAXZ" + lightIndex] = false;
         defines["SHADOWCSMNOBLEND" + lightIndex] = false;
+        defines["SHADOWCSM_RIGHTHANDED" + lightIndex] = false;
         defines["SHADOWPCF" + lightIndex] = false;
         defines["SHADOWPCSS" + lightIndex] = false;
         defines["SHADOWPOISSON" + lightIndex] = false;
@@ -431,6 +432,7 @@ export class MaterialHelper {
                 defines["SHADOWCSMNUM_CASCADES" + index] = false;
                 defines["SHADOWCSMUSESHADOWMAXZ" + index] = false;
                 defines["SHADOWCSMNOBLEND" + index] = false;
+                defines["SHADOWCSM_RIGHTHANDED" + index] = false;
                 defines["SHADOWPCF" + index] = false;
                 defines["SHADOWPCSS" + index] = false;
                 defines["SHADOWPOISSON" + index] = false;

+ 5 - 1
src/Shaders/ShadersInclude/lightFragment.fx

@@ -128,7 +128,11 @@
         #ifdef SHADOWCSM{X}
             for (int i = 0; i < SHADOWCSMNUM_CASCADES{X}; i++) 
             {
-                diff{X} = viewFrustumZ{X}[i] - vPositionFromCamera{X}.z;
+                #ifdef SHADOWCSM_RIGHTHANDED{X}
+                    diff{X} = viewFrustumZ{X}[i] + vPositionFromCamera{X}.z;
+                #else
+                    diff{X} = viewFrustumZ{X}[i] - vPositionFromCamera{X}.z;
+                #endif
                 if (diff{X} >= 0.) {
                     index{X} = i;
                     break;