浏览代码

Fix same submesh being rendered multiple times in the shadow map

Popov72 4 年之前
父节点
当前提交
a19ac5138e
共有 1 个文件被更改,包括 3 次插入1 次删除
  1. 3 1
      src/Lights/Shadows/shadowGenerator.ts

+ 3 - 1
src/Lights/Shadows/shadowGenerator.ts

@@ -1085,7 +1085,7 @@ export class ShadowGenerator implements IShadowGenerator {
 
         effectiveMesh._internalAbstractMeshDataInfo._isActiveIntermediate = false;
 
-        if (!material || subMesh.verticesCount === 0) {
+        if (!material || subMesh.verticesCount === 0 || subMesh._renderId === scene.getRenderId()) {
             return;
         }
 
@@ -1100,6 +1100,8 @@ export class ShadowGenerator implements IShadowGenerator {
 
         var hardwareInstancedRendering = engine.getCaps().instancedArrays && (batch.visibleInstances[subMesh._id] !== null && batch.visibleInstances[subMesh._id] !== undefined || renderingMesh.hasThinInstances);
         if (this.isReady(subMesh, hardwareInstancedRendering, isTransparent)) {
+            subMesh._renderId = scene.getRenderId();
+
             const shadowDepthWrapper = renderingMesh.material?.shadowDepthWrapper;
 
             let effect = shadowDepthWrapper?.getEffect(subMesh, this) ?? this._effect;