From 3089501d280a705b1cb8d7d361205e9ed3c70ea0 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 29 Apr 2026 23:17:29 +0200 Subject: [PATCH] Refactor material handling to support detailed and distant LOD materials --- src/viewport-three/viewport-host.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/viewport-three/viewport-host.ts b/src/viewport-three/viewport-host.ts index 00b791ce..3e8f64c9 100644 --- a/src/viewport-three/viewport-host.ts +++ b/src/viewport-three/viewport-host.ts @@ -8991,19 +8991,24 @@ export class ViewportHost { } const displayedTerrain = this.getDisplayedTerrainState(terrainId) ?? terrain; - const previousMaterial = renderObjects.material; - const nextMaterial = this.createTerrainMaterial(displayedTerrain); + const previousDetailMaterial = renderObjects.detailMaterial; + const previousDistantMaterial = renderObjects.distantMaterial; + const nextDetailMaterial = this.createTerrainMaterial(displayedTerrain); + const nextDistantMaterial = this.createTerrainDistantMaterial(displayedTerrain); for (const chunk of renderObjects.chunks) { - chunk.mesh.material = nextMaterial; + chunk.mesh.material = + chunk.activeLevelIndex >= 2 ? nextDistantMaterial : nextDetailMaterial; } for (const pickMesh of renderObjects.pickMeshes) { - pickMesh.material = nextMaterial; + pickMesh.material = nextDetailMaterial; } - renderObjects.material = nextMaterial; - previousMaterial.dispose(); + renderObjects.detailMaterial = nextDetailMaterial; + renderObjects.distantMaterial = nextDistantMaterial; + previousDetailMaterial.dispose(); + previousDistantMaterial.dispose(); this.updateTerrainLodVisibility(); }