[bug] HD-полигон сравнивает разные моменты анимации и может принимать движение облаков за регрессию #71

Closed
opened 2026-10-29 21:12:38 +00:00 by chexit · 1 comment
Owner

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

Ревью 6f3fc644bc5194311a86baba722bc340215306b7. Новый tools/hd_bench.py полезен, но его baseline/flicker-проверка пока не обеспечивает одинаковые входы рендера.

Что происходит

run_shot делает time set, weather clear, teleport, wait-ready и wall-clock sleep; затем снимает первый кадр, ждёт 0.5 секунды и снимает второй. Между ними мир и render animation продолжаются. Нет фиксированного tick/render timestamp, отключения daylight/weather progression, стабилизации существующего налёта/техники/мобов или одинаковой frame sequence накопления TAA.

В форке уже разные часы: HdFrame.water.y = self.started.elapsed()%600 для волн, clouds.w приходит из game/cloud time, dither зависит от номера кадра. Даже при одинаковых time set/позе два запуска и два снимка показывают разные воду, облака, тени и шум. compare_frames считает любую разницу каналов, а judge объявляет её flicker/regression. Разница может быть честной анимацией или длительностью прогрева, а не багом.

Полигон также наследует renderer env и значения по умолчанию графического профиля/размера окна, не фиксируя полностью воспроизводимый профиль и реальный engine binary SHA. В отчёте git_rev() — SHA мода, который не доказывает версию запускаемого --game бинарника.

Нужно

Разделить deterministic visual snapshots и live performance/motion tests. Для snapshots фиксировать simulation time, renderer time/wind, camera/scene seed, размер/профиль и последовательность прогрева/temporal reset; для мерцания исключать ожидаемое движение или использовать соответствующую motion-aware метрику. Performance оставить живым, но на сравнимом сценарии с устойчивым warm-up. Писать SHA engine/patch stamp/бинарника, параметры GPU, разрешение и профиль. Не делать freeze одних world ticks единственным решением: вода живёт wall clock.

Приёмка

Два независимых прогона одного бинарника дают baseline diff в пределах численного шума при воде/облаках/закате. Повторные кадры не помечают штатную анимацию как неисправность. Контрольное изменение шейдера действительно ловится; GPU-бюджет сравнивается в одном режиме. Статическое ревью сценария/часов, GPU-бенч в текущей среде не запускался.

🤖 Filed by Codex, AI-агент Владимира (chexit). Ревью `6f3fc644bc5194311a86baba722bc340215306b7`. Новый `tools/hd_bench.py` полезен, но его baseline/flicker-проверка пока не обеспечивает одинаковые входы рендера. ### Что происходит `run_shot` делает time set, weather clear, teleport, wait-ready и wall-clock sleep; затем снимает первый кадр, ждёт 0.5 секунды и снимает второй. Между ними мир и render animation продолжаются. Нет фиксированного tick/render timestamp, отключения daylight/weather progression, стабилизации существующего налёта/техники/мобов или одинаковой frame sequence накопления TAA. В форке уже разные часы: `HdFrame.water.y = self.started.elapsed()%600` для волн, `clouds.w` приходит из game/cloud time, dither зависит от номера кадра. Даже при одинаковых time set/позе два запуска и два снимка показывают разные воду, облака, тени и шум. `compare_frames` считает любую разницу каналов, а `judge` объявляет её flicker/regression. Разница может быть честной анимацией или длительностью прогрева, а не багом. Полигон также наследует renderer env и значения по умолчанию графического профиля/размера окна, не фиксируя полностью воспроизводимый профиль и реальный engine binary SHA. В отчёте `git_rev()` — SHA мода, который не доказывает версию запускаемого `--game` бинарника. ### Нужно Разделить deterministic visual snapshots и live performance/motion tests. Для snapshots фиксировать simulation time, renderer time/wind, camera/scene seed, размер/профиль и последовательность прогрева/temporal reset; для мерцания исключать ожидаемое движение или использовать соответствующую motion-aware метрику. Performance оставить живым, но на сравнимом сценарии с устойчивым warm-up. Писать SHA engine/patch stamp/бинарника, параметры GPU, разрешение и профиль. Не делать freeze одних world ticks единственным решением: вода живёт wall clock. ### Приёмка Два независимых прогона одного бинарника дают baseline diff в пределах численного шума при воде/облаках/закате. Повторные кадры не помечают штатную анимацию как неисправность. Контрольное изменение шейдера действительно ловится; GPU-бюджет сравнивается в одном режиме. Статическое ревью сценария/часов, GPU-бенч в текущей среде не запускался.
chexit added the type:bugpriority:P2area:renderingarea:tooling labels 2026-10-29 21:12:38 +00:00
Author
Owner

🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/3ced60e (заморозка времени/погоды, несколько кадров, маска движения). Остаётся: вода и ветер идут от настенных часов в движке — точная повторяемость требует заморозки в рендере.

🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/3ced60e (заморозка времени/погоды, несколько кадров, маска движения). Остаётся: вода и ветер идут от настенных часов в движке — точная повторяемость требует заморозки в рендере.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#71