diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-19 21:59:36 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-19 21:59:36 +0300 |
| commit | bf1f330379c20103d6b2aba1ff61d9ea3cd15989 (patch) | |
| tree | e3a82a323b1e34aa91d2310477f21b5343bff721 /docs/tomes/05-render.md | |
| parent | 84ebd259ea552e278173db5d842ae16a929411ff (diff) | |
| download | fparkan-bf1f330379c20103d6b2aba1ff61d9ea3cd15989.tar.xz fparkan-bf1f330379c20103d6b2aba1ff61d9ea3cd15989.zip | |
fix(render): refresh viewport after swapchain recreation
Diffstat (limited to 'docs/tomes/05-render.md')
| -rw-r--r-- | docs/tomes/05-render.md | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md index 545aa1a..84de6ee 100644 --- a/docs/tomes/05-render.md +++ b/docs/tomes/05-render.md @@ -1035,15 +1035,25 @@ WEAR и MAT0 до объединения геометрии. Индексы GPU animation phase; object batches сохраняют их legacy blend/depth/alpha state. После загрузки world path создаёт интерактивную free-flight камеру (`WASD`, -`E/Q`, `Shift`, `Ctrl`, RMB relative-look), обновляет listener и на каждом -кадре собирает environment frame. После шага движения камера проверяет высоту +`E/Q`, `Shift`, `Ctrl`, RMB relative-look), обновляет listener и собирает +environment frame для каждого подготовленного кадра. Event loop один раз +сэмплирует камеру, общий animation clock, геометрию и окружение перед запросом +redraw; redraw потребляет это состояние. Если surface требует пересоздать +swapchain, тот же sample времени и состояние мира отправляются повторно. +Перед повторной отправкой projection камеры и viewport-зависимые environment +и shadow geometry обновляются для нового размера без продвижения сцены. +Счётчик и replay clock продвигаются только после результата `Presented`. +После шага движения камера проверяет высоту `TerrainWorld`: над конечной поверхностью сохраняется начальный просвет, а вне поверхности высота не ограничивается. Mission-local `sky.ske`/`sky.wea` выбирают атмосферное расписание и sky materials, `effects.rlb/env_lightning` даёт lightning visual; weather particles, flares, sun/moon, point lights, projected shadows и audio events обновляются вместе с камерой и временем. `--atmosphere-seconds` задаёт старт времени, `--frames 0` оставляет цикл -бесконечным, а `--preview-roots` служит только диагностическим ограничителем. +бесконечным, `--control-clock-ms N` воспроизводит общий clock анимации MSH и +материалов вместе с окружением от нуля до `N` за заданное число кадров и требует +как минимум два кадра. +`--preview-roots` служит только диагностическим ограничителем. `--legacy-camera-capture` выбирает воспроизводимую камеру без free-flight управления: запись selector 0 задаёт D3D7 transform, clip параметры и native viewport RECT `[left, top, right, bottom]`. Путь сохраняет оси basis из view @@ -1052,14 +1062,15 @@ matrix вместе с roll, переносит полученный `clip_from_ и отклоняет несовпадение размера при создании или resize вместо растягивания кадра. Результат нужно сравнивать с тем же crop исходного PNG `[left, top, right, bottom]`. Контроллер -`FreeFlightCamera` в этом режиме не создаётся, но redraw продолжает обновлять +`FreeFlightCamera` в этом режиме не создаётся. Подготовка кадра обновляет environment и projected shadows от captured camera. Перед environment update и его audio events listener получает position, forward и up captured camera; начальная сортировка world draw использует её же position. Phase capture может содержать наблюдаемый mission path и проверенный `atmosphere_seconds`; viewer использует эту абсолютную фазу по умолчанию, если не указан явный CLI override, -и удерживает sample атмосферы на ней через readback frames. FX по-прежнему -получает реальный frame time. Это не полное simulation time: `weather`, RNG и +и удерживает sample атмосферы на ней через readback frames. Без +`--control-clock-ms` FX получает реальный frame time; с параметром environment +и материалы используют replay clock. Это не полное simulation time: `weather`, RNG и остальное mission state остаются неизвестными, поэтому совпадение камеры и фазы не доказывает visual parity с native frame. |
