Corregir la oclusión del 3DGS por el material de single layer water
Single Layer Water Support
Descripción general
Single Layer Water de Unreal Engine implementa la refracción, las cáusticas y la niebla subacuática mediante el buffer de profundidad. Su dependencia esencial es la profundidad de la escena: solo los píxeles que han escrito una profundidad válida pueden participar en el cálculo de refracción y absorción de la superficie del agua.
Por qué se necesita una compatibilidad específica
El plugin renderiza el 3DGS y escribe la profundidad mediante el mecanismo View Extension, que se ejecuta después del BasePass. En el flujo predeterminado, single layer water copia el buffer de profundidad antes del BasePass para componerlo más adelante, y en ese momento el 3DGS todavía no se ha renderizado, por lo que la copia no contiene su profundidad.
| Configuración | Momento en que se copia el buffer de profundidad | La copia contiene el 3DGS |
|---|---|---|
| Predeterminado (desactivado) | Antes del BasePass | No |
SingleLayerWater Support activado | Después del BasePass | Sí |
Flujo predeterminado Con la compatibilidad activada
Copia del buffer de profundidad BasePass
← sin 3DGS │
│ ▼
▼ El 3DGS escribe la profundidad
BasePass │
│ ▼
▼ Copia del buffer de profundidad
El 3DGS escribe la profundidad ← con 3DGS
│ │
▼ ▼
Composición del agua Composición del agua
← falta el 3DGS ← el 3DGS se lee correctamente
Cuando la copia no contiene la profundidad del 3DGS, la superficie del agua lee la escena situada detrás del 3DGS durante el cálculo de refracción y absorción, por lo que el 3DGS subacuático no participa en la refracción y la relación de oclusión entre la superficie del agua y el 3DGS se determina de forma incorrecta.
Con SingleLayerWater Support activado, el plugin usa r.Water.SingleLayer.DepthPrepass para retrasar la copia hasta después del BasePass, cuando la profundidad del 3DGS ya está escrita, de modo que la superficie del agua puede procesarla correctamente.
El resultado sin SingleLayerWater Support activado:

Resultado del renderizado sin la compatibilidad con single layer water activada
Coste
- Una vez activado, las sombras de los modelos presentan cierto aliasing.

Aliasing en las sombras que puede aparecer tras activar la compatibilidad con single layer water
Pasos
1. Activar el ajuste
Hacer clic en el botón de ajustes del panel LCC4Unreal del editor para abrir la página de ajustes del plugin en la configuración del proyecto, marcar SingleLayerWater Support y reiniciar el motor para que surta efecto.

Activar SingleLayerWater Support en la configuración del proyecto
2. Crear un material de single layer water
- Crear un material nuevo y establecer
Shading ModelenSingle Layer Water - Configurar el color del agua, el coeficiente de absorción, la dispersión y otros parámetros
- Aplicarlo a un Mesh de superficie de agua o a un
WaterBodyCustom
3. Colocar la superficie del agua
Colocar el Actor de agua en una posición adecuada de la escena LCC2. La altura del agua determina qué píxeles del 3DGS quedan bajo el agua.
4. Confirmar el resultado
Una vez que la escena LCC2 se carga y se renderiza con normalidad:

Resultado correcto del renderizado tras activar la compatibilidad con single layer water
Notas
- Este ajuste es global y afecta a todos los materiales de single layer water del proyecto
- Es necesario reiniciar el motor después de cambiarlo (el CVar es ReadOnly y afecta a la clave del shader)
- El coste es que los píxeles del agua pierden algo de calidad de sombra del Virtual Shadow Map
- Dejarlo desactivado por defecto en los proyectos que no usen single layer water