Hola a todos.
Estaba navegando por internet, viendo información sobre Doom 3, cuando vi un screenshot del juego que me llamó increiblemente la atención.
Sorprendentemente no fue uno lleno de efectos y explosiones, ni geometría increiblemente detallada, ni cosas de este estilo. Fue uno relativamente simple, con unos monstruillos que parecen cabezas con patas, y niebla.
Hasta aqui todo normal, pero lo sorprendente es que combinaba stencil shadow volumes con niebla!
El algoritmo que genera las sombras obtiene como salida, por decirlo de manera simple, una máscara que indica qué partes de la imagen en pantalla están a la sombra de una luz (el lugar donde esto se guarda es el stencil buffer). Teniendo esto, lo que se hace es oscurecer en la imagen final las partes que el stencil buffer indica que están a la sombra. De esta manera no se sabe a qué distancia están las sombras en el espacio, pero sí se sabe qué parte de la imagen final está a la sombra. Por ello, en todas las demos que combinan este tipo de sombras con niebla se puede ver cómo cuando la sombra se aleja dentro de la niebla no se ve afectada por ésta y permanece completamente negra (se puede ver esto en el ejemplo ShadowVolume para Direct3D, en el SDK de DirectX).
Sin embargo, en el screenshot que vi esto no sucede. Hay niebla y las sombras que hay lejos se ven afectadas por ésta. Así, llega mi pregunta:
¿Cómo hace Doom 3 para combinar stencil shadow volumes y niebla?
Lo único que se me ocurre es hacer una última pasada, después de pintar las sombras, generando a mano la niebla a partir de los valores que haya en el z-buffer, pero me da la sensación de que esto será muy ineficiente. ¿Hay algún método que no conozca? ¿Se trata de alguna extensión de las nuevas tarjetas? ¿Se optimizaría con un FragmentProgram?
Uff, sobredosis de preguntas
. Espero que alguien me pueda responder a esto.
Un saludo.
Ruben3d
PD: Adjunto la imagen, claro.
No me deja usar el tag IMG
http://common.ziffdavisinternet.com/util_g...&i=50697,00.jpgy el link a la web donde está:
http://www.computergaming.com/slideshow_vi...00&po=36,00.asp