diff options
Diffstat (limited to 'docs/tomes/05-render.md')
| -rw-r--r-- | docs/tomes/05-render.md | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md index 53667c8..4aba919 100644 --- a/docs/tomes/05-render.md +++ b/docs/tomes/05-render.md @@ -1169,6 +1169,18 @@ Rust-тест отдельно проверяет углы водоёма и гÑ водоёма с добавленным смещением волн. Для неперспективной камеры API остаётся обычное зеркало с экранными координатами. +Размер изображения отражения выбирается отдельно от размера основного кадра. +Terrain.dll в конструкторе CShade (RVA `0x278E0`, цикл с `0x27FC7`) берёт +ширину и высоту renderer через Ngi32.dll RVA `0x7FB0`. Сторона квадратной +текстуры — наибольшая степень двойки, не превосходящая меньшую из этих +величин и 1024; нижний предел равен 2. Например, экран 1280×1024 даёт +отражение 1024×1024, а 1280×720 — 512×512. Getter размеров и исходный цикл +выбора проверены исполнением DLL на десяти входах; создание нативной текстуры +в этом оракуле пропущено. Vulkan создаёт цвет и глубину с этой стороной и +задаёт каждому проходу собственные viewport и область очистки. Так уменьшение +отражения не обрезает основной кадр и воспроизводит исходный масштаб его +пикселей, от которого зависит чёткость берегов и ряби. + Цветовой target переходит из attachment layout в shader-read layout после записи. Следующий зеркальный проход ждёт предыдущего чтения этой текстуры; основной и отражённый виды используют разные слоты uniform buffer. Во время @@ -1196,9 +1208,10 @@ Rust-тест отдельно проверяет углы водоёма и гÑ В Vulkan карта хранится в двух каналах несжатой текстуры и возвращается к знаковым значениям перед вычислением смещения. -Матрица положения камеры, её окно и координаты волн восстановлены, но весь +Матрица положения камеры, её окно, размер текстуры и координаты волн восстановлены, но весь контекст отражённого вида ещё не повторён. Диапазон глубины, небо, туман и FX -заимствуются из основного вида, а размер target совпадает со swapchain. +заимствуются из основного вида. Для захвата с обрезанным viewport ещё не +подтверждено соответствие размера окна FParkan полному renderer оригинала. Эти ограничения учитываются в `planar_reflection_render_context_approx`; совпадение генератора волн и окна не доказывает совпадения итогового отражения. Один target обслуживает ближайшую |
