Correggere l'occlusione del 3DGS da parte del materiale single layer water
Single Layer Water Support
Panoramica
Single Layer Water di Unreal Engine realizza rifrazione, caustiche e nebbia subacquea attraverso il buffer di profondità. La sua dipendenza principale è la profondità della scena: solo i pixel che hanno scritto una profondità valida possono partecipare al calcolo di rifrazione e assorbimento della superficie dell'acqua.
Perché serve una compatibilità separata
Il plugin renderizza il 3DGS e scrive la profondità attraverso il meccanismo delle View Extension, che avviene dopo il BasePass. Nel flusso predefinito, single layer water copia il buffer di profondità prima del BasePass per la composizione successiva, e in quel momento il 3DGS non è ancora stato renderizzato, quindi la copia naturalmente non contiene la sua profondità.
| Configurazione | Quando il buffer di profondità viene copiato | La copia contiene il 3DGS |
|---|---|---|
| Predefinito (disabilitato) | Prima del BasePass | No |
SingleLayerWater Support abilitato | Dopo il BasePass | Sì |
Flusso predefinito Con il supporto abilitato
Copia buffer profondità ← no 3DGS BasePass
│ │
▼ ▼
BasePass Il 3DGS scrive la profondità
│ │
▼ ▼
Il 3DGS scrive la profondità Copia buffer profondità ← con 3DGS
│ │
▼ ▼
Composizione acqua Composizione acqua
← 3DGS mancante ← 3DGS letto correttamente
Quando la copia non ha la profondità del 3DGS, la superficie dell'acqua legge la scena dietro il 3DGS durante il calcolo di rifrazione e assorbimento, quindi il 3DGS sott'acqua non partecipa alla rifrazione e la relazione di occlusione tra superficie dell'acqua e 3DGS viene valutata in modo scorretto.
Con SingleLayerWater Support abilitato, il plugin usa r.Water.SingleLayer.DepthPrepass per ritardare la copia fino a dopo il BasePass, quando la profondità del 3DGS è già scritta, così che la superficie dell'acqua possa elaborarla correttamente.
Il risultato senza SingleLayerWater Support abilitato:

Risultato del rendering senza il supporto di single layer water abilitato
Costo
- Una volta abilitato, le ombre dei modelli mostrano un certo aliasing.

Aliasing delle ombre che può comparire dopo l'abilitazione del supporto di single layer water
Procedura
1. Abilitare l'impostazione
Fare clic sul pulsante delle impostazioni nel pannello LCC4Unreal dell'editor per aprire la pagina delle impostazioni del plugin nelle impostazioni del progetto, spuntare SingleLayerWater Support e riavviare il motore perché abbia effetto.

Abilitazione di SingleLayerWater Support nelle impostazioni del progetto
2. Creare un materiale single layer water
- Creare un nuovo materiale e impostare
Shading ModelsuSingle Layer Water - Configurare colore dell'acqua, coefficiente di assorbimento, scattering e altri parametri
- Applicarlo a una Mesh della superficie dell'acqua o a un
WaterBodyCustom
3. Posizionare la superficie dell'acqua
Posizionare l'Actor dell'acqua in un punto adeguato della scena LCC2. L'altezza dell'acqua determina quali pixel 3DGS sono sott'acqua.
4. Verificare il risultato
Una volta che la scena LCC2 è caricata e renderizzata normalmente:

Risultato del rendering corretto dopo l'abilitazione del supporto di single layer water
Note
- Questa impostazione è globale e influisce su ogni materiale single layer water del progetto
- Dopo la modifica il motore deve essere riavviato (la CVar è ReadOnly e influisce sulla chiave degli shader)
- Il costo è che i pixel dell'acqua perdono parte della qualità delle ombre delle Virtual Shadow Map
- Lasciarla disabilitata per impostazione predefinita nei progetti che non usano single layer water