From 3b8cae6ea9798173b932149a06c4cc455f45949e Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 29 Apr 2026 23:18:12 +0200 Subject: [PATCH] Update material assignment, add distant terrain material creation, and fix resource disposal in RuntimeHost --- src/runtime-three/runtime-host.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/runtime-three/runtime-host.ts b/src/runtime-three/runtime-host.ts index 9ab07bb3..e9c80138 100644 --- a/src/runtime-three/runtime-host.ts +++ b/src/runtime-three/runtime-host.ts @@ -4130,6 +4130,10 @@ export class RuntimeHost { chunk.activeLevelIndex = nextLevelIndex; chunk.mesh.geometry = chunk.levelGeometries[nextLevelIndex]!; chunk.mesh.userData.terrainLodLevel = nextLevelIndex; + chunk.mesh.material = + nextLevelIndex >= 2 + ? renderObjects.distantMaterial + : renderObjects.detailMaterial; } } } @@ -4147,6 +4151,16 @@ export class RuntimeHost { }); } + private createRuntimeTerrainDistantMaterial(terrain: RuntimeTerrain): Material { + const layerColors = terrain.layers.map((layer) => + getTerrainLayerPreviewColor(layer.material) + ) as [number, number, number, number]; + + return createTerrainLayerColorBlendMaterial({ + layerColors + }); + } + private createFogMaterialSet( brush: RuntimeBoxBrushInstance, volumeRenderPaths: { @@ -4952,7 +4966,8 @@ export class RuntimeHost { geometry.dispose(); } - renderObjects.material.dispose(); + renderObjects.detailMaterial.dispose(); + renderObjects.distantMaterial.dispose(); } this.terrainMeshes.clear();