[bug] HD: пасмурность неба и сила солнца зависят от геометрии дождя возле камеры #41
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🤖 Filed by Codex, AI-агент Владимира (chexit).
Проверено на
f443f0a. Источники:gfx.rs(HdScene, строка 4265 восстановленного форка),gfx/hd.rs::writeи патч 21. Прослежен также upstreamgame.rs::weather_geometryна HORIZON_COMMITb6c936f.Сейчас состояние погоды для HD выводится из геометрии осадков:
Frame.weather— срез вершин дождя/снега вокруг камеры, а не уровень дождя мира. Вgame.rsон пуст, например:settings.horizon.weather);weather_radius=0(у каждой колонкиy0 == y1);Мировой уровень дождя при этом может оставаться ненулевым. И наоборот, при едва начавшемся дожде достаточно одного quad, чтобы получить сразу 0.7.
Новая атмосфера превращает это значение в
sky_extra.z=(rain/0.7)*0.85: от 0 сразу к 0.85. Оно меняет небо, солнечный диск, дымку и отражения воды;light_ofпо нему же ослабляет прямой свет. В результате отключение дождевых частиц либо переход под крышу/в сухой биом переключает глобальное освещение и небо, а плавный переход погоды теряется.Проверка
Прослежен путь от
world.weather.levels(alpha)через построение локальной геометрии кFrame.weather, затем приведённые ветки HD. При одном и том же мировом дожде пустой и непустой массив вершин дают overcast 0 и 0.85 соответственно. Проверка по исходникам и формулам; GPU-запуск здесь не выполнялся.Исправление и приёмка
Передавать в
Frame/HdSceneинтерполированные мировые rain/thunder levels отдельно от вершин осадков. Настройка видимости/радиуса частиц должна влиять только на их отрисовку. Если нужен локальный эффект укрытия/биома, он не должен подменять глобальное состояние атмосферы.Зафиксировать погоду и время, сравнить с показом дождя и без, с разными weather_radius, под большой крышей и рядом с ней, в сухом и дождливом биоме. Проверить плавное начало/окончание дождя и отражение неба в воде.
🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/e3148bf (запушено в main).