feat: rebuild the nightdrive road and terrain

This commit is contained in:
2026-09-02 14:30:03 +03:00
parent f2dd3f85dd
commit 3c932cb840
7 changed files with 694 additions and 74 deletions

View File

@@ -2,15 +2,42 @@ import type { LiveQualityTier } from '@/scene/types';
export interface RenderQualitySettings {
pixelRatio: number;
roadSegments: number;
terrainSegments: number;
terrainOctaves: 1 | 2 | 3;
particleCount: number;
streakCount: number;
postEffects: boolean;
}
const settings: Readonly<Record<LiveQualityTier, Omit<RenderQualitySettings, 'pixelRatio'> & { dprCap: number }>> = {
high: { dprCap: 1.5, terrainSegments: 96, particleCount: 384, postEffects: true },
medium: { dprCap: 1.5, terrainSegments: 64, particleCount: 192, postEffects: true },
low: { dprCap: 1.25, terrainSegments: 32, particleCount: 64, postEffects: false },
high: {
dprCap: 1.5,
roadSegments: 192,
terrainSegments: 96,
terrainOctaves: 3,
particleCount: 384,
streakCount: 48,
postEffects: true,
},
medium: {
dprCap: 1.5,
roadSegments: 144,
terrainSegments: 64,
terrainOctaves: 2,
particleCount: 192,
streakCount: 28,
postEffects: true,
},
low: {
dprCap: 1.25,
roadSegments: 96,
terrainSegments: 32,
terrainOctaves: 1,
particleCount: 64,
streakCount: 12,
postEffects: false,
},
};
export function renderQualityFor(
@@ -22,8 +49,11 @@ export function renderQualityFor(
const finiteDpr = Number.isFinite(devicePixelRatio) ? Math.max(1, devicePixelRatio) : 1;
return {
pixelRatio: Math.min(finiteDpr, selected.dprCap, mobileOrTablet ? 1.5 : 2),
roadSegments: selected.roadSegments,
terrainSegments: selected.terrainSegments,
terrainOctaves: selected.terrainOctaves,
particleCount: selected.particleCount,
streakCount: selected.streakCount,
postEffects: selected.postEffects,
};
}