diff options
Diffstat (limited to 'docs/reference')
| -rw-r--r-- | docs/reference/render-frame.md | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/docs/reference/render-frame.md b/docs/reference/render-frame.md index 7adc4e6..ebe3971 100644 --- a/docs/reference/render-frame.md +++ b/docs/reference/render-frame.md @@ -68,13 +68,24 @@ RVA `0x1B0F0`, заменяет diffuse alpha пакета без type 16 с bat Скаляр камеры в шестом float getter `0x4F5F0` и поле CShade `+0xBB4` проверены в работающем оригинале: оба содержат текущий горизонтальный FOV. -`legacy_msh_portal_alpha` хранит кривую в `fparkan-render`. Приложение пока -берёт первую индексированную вершину своего диапазона и обычный `sqrt`, -поэтому выбор вершины после native CPU clipping и точность `RSQRTSS` не -воспроизводятся. Счётчик `render_coverage portal_fade_packet_selection_approx` -показывает число таких диапазонов. Поток type 16 сохраняет прежний отдельный -путь и ещё не декодирован. Это ограничивает приёмку на частично отсечённых -порталах и не позволяет считать интерьер принятой эталонной сценой. +`legacy_msh_portal_alpha` хранит кривую в `fparkan-render`. Её опорная вершина +принадлежит входному пакету: выбирать вместо неё первую видимую точку нельзя. +В живом краевом ракурсе AutoDemo первая вершина окна находится за правой +границей viewport (`NDC x ≈ 1,048`), а следующая — внутри (`x ≈ 0,815`). +Оригинал всё равно использует первую: расстояние `106,74783` даёт alpha +`0,51991343`. Выбор следующей изменил бы alpha примерно на `0,026`. +Передача пакета renderer-у происходит после записи этой alpha. + +Адаптер изолирует инструкцию `RSQRTSS`; на x86-64 расстояние и alpha этого +ракурса совпадают с оригиналом побитно. Обычный `sqrt` давал alpha +`0,5196797`: при упаковке прозрачности этого достаточно для отличия отдельных +пикселей. Прежнее предположение о выборе вершины после clipping и связанный +счётчик `portal_fade_packet_selection_approx` удалены. На других архитектурах +сохраняется переносимый корень с явным `packet_distance_native_rsqrt_unsupported`; +совпадение камеры с вершиной использует нулевую дистанцию и +`packet_zero_distance_fallback` вместо native `0 × infinity`. +Поток type 16 ещё не декодирован. Проверка краевого окна не закрывает остальные +внутренние ракурсы завода. ## Дистанционная кривая тумана @@ -151,9 +162,8 @@ raw-флаге `Batch20` `0x0008` получает переопределениÐ материал; alpha `0` временно задаёт число индексов `0`, а при очистке переопределения исходное число индексов восстанавливается. -Fade обновляется с камерой каждый кадр. Открыт выбор первой принятой вершины -после native CPU clipping: приложение пока берёт первую индексированную -вершину диапазона и считает это приближение в `render_coverage`. +Fade обновляется с камерой каждый кадр и сохраняет исходную опорную вершину +диапазона, в том числе когда часть окна выходит за границу экрана. В превью с фиксированной камерой диапазоны туманности и звёзд, купола и облаков явно помечаются как прозрачный фон. Непрозрачные диапазоны мира остаются на |
