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

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

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

Ревью 76f680eba64b64eb28435e71ce9f22a84b0e5da1 (после 6f3fc64). Исправление #71 убрало ложные тревоги от воды/листвы, но теперь амплитуда дефекта сама исключает его из оценки. Регрессия с более сильным мерцанием может выглядеть лучше слабой.

tools/hd_bench.py::flicker_stats считает flicker только когда 6 < range <= 16. Всё с range>16 автоматически попадает в animated. compare_runs исключает эти пиксели из baseline score; animated_mean выводится только как справка и не вызывает fail. При n_static=0 mean принудительно равен 0, pct тоже 0.

Выполненное воспроизведение на настоящих функциях Python

Синтетический кадр 2x2: baseline стабильно чёрный; текущий прогон чередует полностью чёрный/белый кадр (максимальное мерцание, амплитуда 255).

{"flicker":{"pct":0.0,"animated_pct":100.0},
 "baseline":{"mean":0.0,"pct":0.0,"animated_pct":100.0,"animated_mean":255.0}}

Результаты вычислены импортом текущего hd_bench, не пересказом формулы. Если GPU-бюджет соблюдён, такая сломанная картинка не провалит визуальные пороги.

Нужно

Не выводить семантическое «это допустимая анимация» только из величины observed range того же проверяемого результата. Использовать фиксированные маски материалов/областей, воспроизводимые clocks, motion vectors/ожидаемое движение либо отдельную проверяемую метрику для динамических областей. Рост маски и доля непроверенных пикселей должны проверяться; отсутствие static samples не должно означать «нулевая ошибка». Сохранить прозрачный отчёт о том, что реально покрыто.

Приёмка

Постепенно усиленный injected flicker (8/16/32/255) никогда не начинает проходить после увеличения амплитуды. Black/white strobe и TAA ghosting ловятся; штатная вода/листва не создаёт ложных fail. Проверить смену размера маски между baseline/current и fully dynamic кадр.

🤖 Filed by Codex, AI-агент Владимира (chexit). Ревью `76f680eba64b64eb28435e71ce9f22a84b0e5da1` (после `6f3fc64`). Исправление #71 убрало ложные тревоги от воды/листвы, но теперь амплитуда дефекта сама исключает его из оценки. Регрессия с более сильным мерцанием может выглядеть лучше слабой. `tools/hd_bench.py::flicker_stats` считает flicker только когда `6 < range <= 16`. Всё с range>16 автоматически попадает в animated. `compare_runs` исключает эти пиксели из baseline score; animated_mean выводится только как справка и не вызывает fail. При n_static=0 mean принудительно равен 0, pct тоже 0. ### Выполненное воспроизведение на настоящих функциях Python Синтетический кадр 2x2: baseline стабильно чёрный; текущий прогон чередует полностью чёрный/белый кадр (максимальное мерцание, амплитуда 255). ```json {"flicker":{"pct":0.0,"animated_pct":100.0}, "baseline":{"mean":0.0,"pct":0.0,"animated_pct":100.0,"animated_mean":255.0}} ``` Результаты вычислены импортом текущего hd_bench, не пересказом формулы. Если GPU-бюджет соблюдён, такая сломанная картинка не провалит визуальные пороги. ### Нужно Не выводить семантическое «это допустимая анимация» только из величины observed range того же проверяемого результата. Использовать фиксированные маски материалов/областей, воспроизводимые clocks, motion vectors/ожидаемое движение либо отдельную проверяемую метрику для динамических областей. Рост маски и доля непроверенных пикселей должны проверяться; отсутствие static samples не должно означать «нулевая ошибка». Сохранить прозрачный отчёт о том, что реально покрыто. ### Приёмка Постепенно усиленный injected flicker (8/16/32/255) никогда не начинает проходить после увеличения амплитуды. Black/white strobe и TAA ghosting ловятся; штатная вода/листва не создаёт ложных fail. Проверить смену размера маски между baseline/current и fully dynamic кадр.
chexit added the area:toolingtype:bugarea:renderingpriority:P2 labels 2026-10-30 09:56:47 +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#82