[bug] Offline-экспорт оставляет воду и ветер на wall clock: анимация зависит от скорости рендера #80
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).
Ревью
76f680eba64b64eb28435e71ce9f22a84b0e5da1(после6f3fc64). Контракт capture API из патча 32 обещает фиксированное1/fpsвремя кадра независимо от скорости машины. Основные render animations продолжают читать реальные часы, поэтому это выполняется не для всей картинки.Подтверждённые источники времени
game/film.rs::film_stepменяет dt симуляции на точный шаг видео.gfx/hd/mod.rs::write:HdFrame.water.y=(self.started.elapsed().as_secs_f64()%600)— реальные часы.gfx/hd/materials.rs::wind_seconds: static Instant,elapsed()%600, также wall clock; используется в terrain/foliage rendering.film_before_renderпри cut дополнительно делает warmup render frames. Их реальные затраты тоже двигают эти часы, хотя записанного времени не прибавляется.Эффект
Если кадр 60 fps офлайн рендерится секунду, волны/ветер проходят примерно секунду между выходными кадрами вместо 1/60 секунды. Более медленная машина или другое качество создаёт другую анимацию/скорость воды. Cut warmup тоже может дать скачок. Пауза/seek фильма не останавливают wall-clock эффекты.
Это установлено по источникам времени; скорость на конкретном Mac и GPU-экспорт здесь не измерялись.
Нужно
Передавать явный render clock контекста: live, replay timestamp/rate, fixed capture timestamp. Вода, ветер, облака, дым, dither/history должны иметь согласованные правила; warmup меняет накопление, но не историческое время. Отделить game day_time от elapsed animation time. Сохранить обычную анимацию live игры.
Приёмка
Экспорт одной записи с искусственной задержкой GPU/CPU и без неё даёт одинаковую фазу воды/ветра на кадре N; одинаковый timestamp после seek. Пауза и cut warmup не прокручивают мир за кадром. Проверить 24/30/60 fps, slow motion и два последовательных запуска.
🤖 Agent: Сделано в
0f5c4136f3(запушено в main). Вода, ветер и ветер облаков при экспорте идут по кадрам фильма. При обычном просмотре пауза и перемотка облака не останавливают.