engine: туман в перспективе — реконструкция глубины и след земли
...
fog.ts: fogBandLayout(mode, viewSize, pitch, eyeH, fov) — iso даёт легаси
viewSize·FOG_BAND_START/STEP точно (регрессионный замок изо-кадра),
перспектива — стопка на наземном следе фрустума: nearG = eyeH/tan(pitch+
fov/2), farG = eyeH/tan(max(pitch−fov/2, 0.05)) с капом 6·viewSize
(PERSP_FOG_FAR_K — у горизонта в 1st person стопка ушла бы в бесконечность).
FOG_FRAG: #ifdef PERSP — along из нелинейной глубины буфера
(near·far/(far−(far−near)·depth)), halfH = tanHalf·along, halfW = halfH·
aspect, разметка юниформами uBandStart/uBandStep; изо-ветка шейдера —
прежний код дословно. Дефайн PERSP переключается в render() рядом с
SRGB_OUT (needsUpdate при смене режима).
voxelRenderer.updateFogUniforms: базис активной камеры (union-ветка) +
юниформы разметки; eyeH = высота камеры над target с полом 0.5.
Тесты: изо-равенство легаси, стопка внутри [nearG, farG], кап при взгляде
в небо. check:fast 404 теста, гейт погоды зелёный.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
11 hours ago