فهرست منبع

Merge pull request #9298 from Popov72/fix-depthrenderer-lod

Fix depth renderer with LOD
David Catuhe 4 سال پیش
والد
کامیت
864160f94a
2فایلهای تغییر یافته به همراه5 افزوده شده و 3 حذف شده
  1. 1 1
      src/Materials/Textures/renderTargetTexture.ts
  2. 4 2
      src/Rendering/depthRenderer.ts

+ 1 - 1
src/Materials/Textures/renderTargetTexture.ts

@@ -769,7 +769,7 @@ export class RenderTargetTexture extends Texture {
                             mesh._internalAbstractMeshDataInfo._onlyForInstancesIntermediate = false;
                         } else {
                             if (!mesh._internalAbstractMeshDataInfo._actAsRegularMesh) {
-                                mesh = (mesh as InstancedMesh).sourceMesh;
+                                mesh = mesh._internalAbstractMeshDataInfo._currentLOD ?? (mesh as InstancedMesh).sourceMesh;
                             }
                         }
                         mesh._internalAbstractMeshDataInfo._isActiveIntermediate = true;

+ 4 - 2
src/Rendering/depthRenderer.ts

@@ -102,7 +102,7 @@ export class DepthRenderer {
 
             effectiveMesh._internalAbstractMeshDataInfo._isActiveIntermediate = false;
 
-            if (!material) {
+            if (!material || subMesh.verticesCount === 0 || subMesh._renderId === scene.getRenderId()) {
                 return;
             }
 
@@ -116,10 +116,12 @@ export class DepthRenderer {
                 return;
             }
 
-            var hardwareInstancedRendering = (engine.getCaps().instancedArrays) && (batch.visibleInstances[subMesh._id] !== null || renderingMesh.hasThinInstances);
+            var hardwareInstancedRendering = engine.getCaps().instancedArrays && (batch.visibleInstances[subMesh._id] !== null && batch.visibleInstances[subMesh._id] !== undefined || renderingMesh.hasThinInstances);
 
             var camera = this._camera || scene.activeCamera;
             if (this.isReady(subMesh, hardwareInstancedRendering) && camera) {
+                subMesh._renderId = scene.getRenderId();
+
                 engine.enableEffect(this._effect);
                 renderingMesh._bind(subMesh, this._effect, material.fillMode);