Refine renderer pixel ratio calculation and implement terrain LOD hysteresis

This commit is contained in:
2026-04-29 23:49:09 +02:00
parent ee26803ff3
commit 368aeafed9

View File

@@ -1014,7 +1014,7 @@ export class ViewportHost {
this.boxCreatePreviewEdges.visible = false; this.boxCreatePreviewEdges.visible = false;
this.scene.add(this.boxCreatePreviewMesh); this.scene.add(this.boxCreatePreviewMesh);
this.scene.add(this.boxCreatePreviewEdges); this.scene.add(this.boxCreatePreviewEdges);
this.renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); this.renderer.setPixelRatio(getRendererPixelRatio());
this.renderer.setClearAlpha(0); this.renderer.setClearAlpha(0);
this.environmentBlendCache = createRendererQuantizedEnvironmentBlendCache( this.environmentBlendCache = createRendererQuantizedEnvironmentBlendCache(
this.renderer, this.renderer,
@@ -6518,8 +6518,9 @@ export class ViewportHost {
const selected = isTerrainSelected(this.currentSelection, terrainId); const selected = isTerrainSelected(this.currentSelection, terrainId);
for (const chunk of renderObjects.chunks) { for (const chunk of renderObjects.chunks) {
const nextLevelIndex = resolveTerrainLodLevelIndex({ const nextLevelIndex = resolveTerrainLodLevelIndexWithHysteresis({
levelCount: chunk.levelGeometries.length, levelCount: chunk.levelGeometries.length,
activeLevelIndex: chunk.activeLevelIndex,
chunkDiagonal: chunk.diagonal, chunkDiagonal: chunk.diagonal,
cameraPosition, cameraPosition,
chunkWorldCenter: chunk.worldCenter, chunkWorldCenter: chunk.worldCenter,