fix(render): draw translucent water into planar reflections
Docs Deploy / Build and Deploy MkDocs (push) Successful in 37s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 37s
This commit is contained in:
7 files changed
+112
-9
No files matched your search
@@ -1197,6 +1197,21 @@ Rust-тест отдельно проверяет углы водоёма и г
|
||||
водоёма с добавленным смещением волн. Для неперспективной камеры API остаётся
|
||||
обычное зеркало с экранными координатами.
|
||||
|
||||
В отражённом виде видна и сама вода. После остального мира оригинал рисует
|
||||
её обычной текстурой с непрозрачностью `0,1`; этот слой приглушает отражение
|
||||
и сохраняет оттенок поверхности. Подготовка ландшафта задаёт такую альфу
|
||||
и отдельную категорию пакета, когда уже строится отражение. Живой захват
|
||||
подтверждает те же водные вершины у зеркальной камеры и у основной камеры:
|
||||
в первом случае альфа равна `0,1`, во втором — `1`.
|
||||
|
||||
Внутренний водный слой использует texture mode 7: цвет текстуры умножается
|
||||
на diffuse, а альфа берётся только из diffuse. Затем обычное смешивание
|
||||
`src × alpha + dst × (1 − alpha)` соединяет его с отражённым миром.
|
||||
Проверка и запись глубины сохраняются, альфа-тест пропускает значения
|
||||
не меньше `1/255`. FParkan воспроизводит этот проход после отражённой сцены
|
||||
и читает исходную текстуру материала, поэтому изображение отражения
|
||||
можно закончить до его чтения основной камерой.
|
||||
|
||||
Размер изображения отражения выбирается отдельно от размера основного кадра.
|
||||
Terrain.dll в конструкторе CShade (RVA `0x278E0`, цикл с `0x27FC7`) берёт
|
||||
ширину и высоту renderer через Ngi32.dll RVA `0x7FB0`. Сторона квадратной
|
||||
|
||||
Reference in new issue
Block a user