[bug] Выключение volumetric fog отключает HD-дым, но мод продолжает убирать fallback-частицы #81

Closed
opened 2026-10-30 09:56:35 +00:00 by chexit · 1 comment
Owner

🤖 Filed by Codex, AI-агент Владимира (chexit).

Ревью 76f680eba64b64eb28435e71ce9f22a84b0e5da1 (после 6f3fc64). Новые отдельные настройки HORIZON_HD_VOLFOG и HORIZON_HD_SMOKE связаны скрытым условием, а ответ set-smoke не отражает реальную активность прохода.

gfx/hd/mod.rs::write_smoke вызывает prepare только при:

scene.sky && volumes::fog_enabled() && smoke_enabled()

При HORIZON_HD_VOLFOG=0, HORIZON_HD_SMOKE=1 smoke.count сбрасывается в 0. Однако game/mod_models.rs::mod_smoke считает smoke active по self.mod_hd().is_some() && hd_smoke_enabled() — без fog_enabled/scene.sky. Этот флаг возвращает mod runtime render.set-smoke.

В lib.rs::emit мод получает true, фильтрует large_smoke/campfire_* из vanilla spawns. В shader_params ставится mode=2, и effects.wgsl дополнительно сокращает собственный smoke этап в ожидании HD volume. В результате и основной дым, и часть запасного исчезают.

Нужно

Развязать smoke pass и air-fog option, если это независимые эффекты. Если технически volume пока невозможен в таком режиме — возвращать модам фактическую активность и сохранять fallback. Согласовать также отсутствие атмосферы/подводную камеру и режим HD off; ответ capability не должен обещать отрисовку, которой нет.

Приёмка

Матрица fog on/off × smoke on/off × HD on/off; следы, дым пожара и взрыва. При smoke on/fog off дым остаётся виден. При недоступном HD smoke корректно работают fallback-частицы/шейдерный дым без дублирования. Статически подтверждённая рассинхронизация флагов, GPU-прогон не выполнялся.

🤖 Filed by Codex, AI-агент Владимира (chexit). Ревью `76f680eba64b64eb28435e71ce9f22a84b0e5da1` (после `6f3fc64`). Новые отдельные настройки `HORIZON_HD_VOLFOG` и `HORIZON_HD_SMOKE` связаны скрытым условием, а ответ `set-smoke` не отражает реальную активность прохода. `gfx/hd/mod.rs::write_smoke` вызывает prepare только при: ```rust scene.sky && volumes::fog_enabled() && smoke_enabled() ``` При `HORIZON_HD_VOLFOG=0`, `HORIZON_HD_SMOKE=1` smoke.count сбрасывается в 0. Однако `game/mod_models.rs::mod_smoke` считает smoke active по `self.mod_hd().is_some() && hd_smoke_enabled()` — без fog_enabled/scene.sky. Этот флаг возвращает mod runtime `render.set-smoke`. В `lib.rs::emit` мод получает true, фильтрует `large_smoke/campfire_*` из vanilla spawns. В `shader_params` ставится mode=2, и effects.wgsl дополнительно сокращает собственный smoke этап в ожидании HD volume. В результате и основной дым, и часть запасного исчезают. ### Нужно Развязать smoke pass и air-fog option, если это независимые эффекты. Если технически volume пока невозможен в таком режиме — возвращать модам фактическую активность и сохранять fallback. Согласовать также отсутствие атмосферы/подводную камеру и режим HD off; ответ capability не должен обещать отрисовку, которой нет. ### Приёмка Матрица fog on/off × smoke on/off × HD on/off; следы, дым пожара и взрыва. При smoke on/fog off дым остаётся виден. При недоступном HD smoke корректно работают fallback-частицы/шейдерный дым без дублирования. Статически подтверждённая рассинхронизация флагов, GPU-прогон не выполнялся.
chexit added the type:bugarea:renderingpriority:P2 labels 2026-10-30 09:56:35 +00:00
Author
Owner

🤖 Agent: Сделано в 0f5c4136f3 (запушено в main). Дым от тумана не развязан: объём идёт внутри прохода тумана. Вместо этого моду сообщается реальная активность, запасной дым остаётся. Матрица настроек в игре не прогонялась.

🤖 Agent: Сделано в https://gitea.maoniao.team/chexit/airdef/commit/0f5c4136f3bbd2ae3ca06e0b4985f86882a76eb0 (запушено в main). Дым от тумана не развязан: объём идёт внутри прохода тумана. Вместо этого моду сообщается реальная активность, запасной дым остаётся. Матрица настроек в игре не прогонялась.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#81