Rendre le brouillard sous l'eau

8

Je connais glFog, qui se mélange entre le brouillard et la couleur de surface en fonction de la distance à la caméra, comme ceci:

entrez la description de l'image ici

Les équations sont même données dans les documents . Mais le brouillard est appliqué juste devant la caméra. J'essaie de rendre une surface d'eau et je veux qu'elle ait une certaine profondeur, par exemple:

entrez la description de l'image ici

Pour le moment, je ne fais que rendre la surface de l'eau avec un mélange alpha, comme ci-dessous. Ce dont j'ai besoin, c'est d'avoir le brouillard en fonction de la distance entre la surface de l'eau et le fond de l'eau. Comment obtenir cette distance? Pour le moment, je suppose que la caméra sera toujours au-dessus de l'eau.

entrez la description de l'image ici

jozxyqk
la source

Réponses:

5

Vous pouvez lancer le rayon de la distance jusqu'à la deuxième surface. Cette méthode peut être conceptuellement la plus simple, mais pas nécessairement la plus rapide *.

Mais il y a une astuce intéressante, vous pouvez effectuer un rendu multi-passes une carte de profondeur à la surface de l'eau à partir de la caméra. La distance dans l'eau est désormais la profondeur des pixels moins la profondeur de la carte de profondeur. Cela ne fonctionne pas dans toutes les situations, par exemple lorsque vous sortez de l'eau et y rentrez plus tard. Mais devrait fonctionner dans de nombreux cas, comme celui illustré. Vous pouvez même utiliser la même technique pour les opérations booléennes.

dmap

Image 1 : Rendez la carte de profondeur, consultez la carte de profondeur lorsque vous ombragez le fond de votre étang.

* Cela peut être dans certains cas.

joojaa
la source