|
@@ -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;
|
|
|
}
|
|
|
|
|
@@ -1099,7 +1099,17 @@ export class ShadowGenerator implements IShadowGenerator {
|
|
|
}
|
|
|
|
|
|
var hardwareInstancedRendering = engine.getCaps().instancedArrays && (batch.visibleInstances[subMesh._id] !== null && batch.visibleInstances[subMesh._id] !== undefined || renderingMesh.hasThinInstances);
|
|
|
+ if (effectiveMesh._internalAbstractMeshDataInfo._currentLOD !== effectiveMesh) {
|
|
|
+ if (hardwareInstancedRendering) {
|
|
|
+ delete batch.renderSelf[subMesh._id];
|
|
|
+ } else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (this.isReady(subMesh, hardwareInstancedRendering, isTransparent)) {
|
|
|
+ subMesh._renderId = scene.getRenderId();
|
|
|
+
|
|
|
const shadowDepthWrapper = renderingMesh.material?.shadowDepthWrapper;
|
|
|
|
|
|
let effect = shadowDepthWrapper?.getEffect(subMesh, this) ?? this._effect;
|