Corriger l'occlusion du 3DGS par le matériau Single Layer Water
Single Layer Water Support
Vue d'ensemble
Le Single Layer Water (eau à couche unique) d'Unreal Engine réalise la réfraction, les caustiques et la brume sous-marine à partir du tampon de profondeur. Sa dépendance essentielle est la profondeur de scène : seuls les pixels ayant écrit une profondeur valide peuvent participer au calcul de réfraction et d'absorption de la surface de l'eau.
Pourquoi une compatibilité dédiée est nécessaire
Le plugin rend le 3DGS et écrit sa profondeur via le mécanisme de View Extension, ce qui a lieu après le BasePass. Or, dans le flux par défaut, l'eau à couche unique copie le tampon de profondeur avant le BasePass pour la composition ultérieure ; à cet instant, le 3DGS n'est pas encore rendu et la copie ne contient donc pas sa profondeur.
| Configuration | Moment de la copie du tampon de profondeur | La copie contient-elle le 3DGS |
|---|---|---|
| Par défaut (désactivé) | Avant le BasePass | Non |
SingleLayerWater Support activé | Après le BasePass | Oui |
Default flow With support enabled
Copy depth buffer ← no 3DGS BasePass
│ │
▼ ▼
BasePass 3DGS writes depth
│ │
▼ ▼
3DGS writes depth Copy depth buffer ← with 3DGS
│ │
▼ ▼
Water composite ← 3DGS missing Water composite ← 3DGS read correctly
Quand la copie ne contient pas la profondeur du 3DGS, la surface de l'eau lit la scène située derrière le 3DGS lors du calcul de réfraction et d'absorption : le 3DGS sous l'eau ne participe pas à la réfraction et la relation d'occlusion entre la surface de l'eau et le 3DGS est mal évaluée.
Une fois SingleLayerWater Support activé, le plugin utilise r.Water.SingleLayer.DepthPrepass pour repousser la copie après le BasePass ; la profondeur du 3DGS est alors déjà écrite et la surface de l'eau peut la traiter correctement.
Le résultat sans SingleLayerWater Support activé :

Rendu sans la prise en charge de l'eau à couche unique
Coût
- Une fois l'option activée, les ombres des modèles présentent un certain crénelage.

Crénelage des ombres pouvant apparaître après activation de la prise en charge de l'eau à couche unique
Étapes
1. Activer le réglage
Dans le panneau LCC4Unreal de l'éditeur, cliquez sur le bouton des réglages pour ouvrir la page des réglages du plugin dans les paramètres du projet, cochez SingleLayerWater Support, puis redémarrez le moteur pour que la modification prenne effet.

Activation de SingleLayerWater Support dans les paramètres du projet
2. Créer un matériau d'eau à couche unique
- Créez un nouveau matériau et réglez
Shading ModelsurSingle Layer Water - Configurez la couleur de l'eau, le coefficient d'absorption, la diffusion et les autres paramètres
- Appliquez-le à un Mesh de surface d'eau ou à un
WaterBodyCustom
3. Placer la surface de l'eau
Placez l'Actor d'eau à une position adaptée dans la scène LCC2. La hauteur de l'eau détermine quels pixels 3DGS se trouvent sous l'eau.
4. Vérifier le résultat
Une fois la scène LCC2 chargée et rendue normalement :

Rendu correct après activation de la prise en charge de l'eau à couche unique
Points de vigilance
- Ce réglage est global et affecte tous les matériaux d'eau à couche unique du projet
- Le moteur doit être redémarré après modification (la CVar est ReadOnly et affecte la Shader Key)
- Le coût est une perte partielle de la qualité des ombres Virtual Shadow Map sur les pixels d'eau
- Dans les projets qui n'utilisent pas l'eau à couche unique, laissez l'option désactivée par défaut