diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-31 22:13:22 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-31 22:13:22 +0300 |
| commit | 853d9b115aa3a7e6790c79c17418e0669d322023 (patch) | |
| tree | 3dc30d6324ad828f3a4fa358b54487a5895daa42 /docs/reference | |
| parent | 8a2c3e98403083987aa6f3b50cadcbc92281164a (diff) | |
| download | fparkan-853d9b115aa3a7e6790c79c17418e0669d322023.tar.xz fparkan-853d9b115aa3a7e6790c79c17418e0669d322023.zip | |
fix(capture): replay the projection used by world geometry
Diffstat (limited to 'docs/reference')
| -rw-r--r-- | docs/reference/render-frame.md | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/docs/reference/render-frame.md b/docs/reference/render-frame.md index 19ccf3e..df3f248 100644 --- a/docs/reference/render-frame.md +++ b/docs/reference/render-frame.md @@ -225,6 +225,17 @@ RVA `0x4EBE0` использует соглашение о вызовах `__std `right - left` на `bottom - top`. Размер окна превью закреплён: если при запуске или после ненулевого изменения окна физический размер не совпадает с заданным, приложение завершает работу, а не растягивает изображение. + +Проекция во время рисования может отличаться от восстановленного состояния +камеры после обхода мира. В GOG у `CStridedPrimitive::RenderVB` (Terrain RVA +`0x1D110`) renderer содержит `near = 0.5`, а на границе World3D RVA `0x13CE4` +уже `near = 5`. Поэтому захват отдельно сохраняет `geometry_projection` при +первом вызове геометрии с той же мировой матрицей камеры. Поток, поколение, +renderer, viewport, far и FOV сверяются с последующей границей; только +подтверждённая запись используется при воспроизведении. Иначе пол в трёх +единицах от камеры может исчезнуть из-за чужой ближней плоскости. Старые JSON +без этой записи сохраняют прежнее поведение с явным счётчиком +`captured_projection_unverified`; их нужно переснять для проверки близких поверхностей. Сравнивайте результат с фрагментом исходного PNG по прямоугольнику `[left, top, right, bottom]`. В этом режиме `FreeFlightCamera` не создаётся, но при повторной отрисовке обновляются окружение и проецируемые тени для |
