Renderizando niebla debajo del agua

8

Soy consciente de glFog, que combina entre la niebla y el color de la superficie en función de la distancia a la cámara, así:

ingrese la descripción de la imagen aquí

Las ecuaciones se dan incluso en los documentos . Pero la niebla se aplica inmediatamente delante de la cámara. Estoy tratando de renderizar una superficie de agua y quiero que tenga cierta profundidad, por ejemplo:

ingrese la descripción de la imagen aquí

En este momento solo estoy renderizando la superficie del agua con una mezcla alfa, como se muestra a continuación. Lo que necesito es tener la niebla en función de la distancia desde la superficie del agua hasta el fondo del agua. ¿Cómo puedo obtener esta distancia? Por el momento, supongo que la cámara siempre estará por encima del agua.

ingrese la descripción de la imagen aquí

jozxyqk
fuente

Respuestas:

5

Puede rastrear la distancia a la segunda superficie. Esto puede ser conceptualmente más fácil, pero no necesariamente el método más rápido *.

Pero hay un buen truco: puedes hacer un pase múltiple para hacer un mapa de profundidad a la superficie del agua desde la cámara. La distancia en el agua es ahora la profundidad del píxel menos la profundidad del mapa de profundidad. Esto no funciona en todas las situaciones, como cuando sale del agua y vuelve a entrar más tarde. Pero debería funcionar en muchos casos, como el representado. Incluso puede usar la misma técnica para operaciones booleanas.

dmap

Imagen 1 : Procese el mapa de profundidad, consulte el mapa de profundidad al sombrear el fondo de su estanque.

* Puede ser en ciertos casos.

joojaa
fuente