Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: MChiz en 07 de Junio de 2003, 12:13:55 PM

Título: Un temilla interesante de sombras
Publicado por: MChiz en 07 de Junio de 2003, 12:13:55 PM
                                Hola a todos:

Supongo que muchos de vosotros ( si no todos ) habreis visto el Doom III. Bien, no se si os habeis fijado, pero las sombras que proyectan los objetos, se atenuan con la distancia... le he estado dando vueltas y mas vueltas, pero no se me ocurre la forma de conseguirlo ( a no ser que sea con fuerza bruta, y tampoco me convence ).
Alguien sabe como leches lo consiguen? Por pixel shaders parece una buena idea, aunque nunca me he metido. Creo que ahora es el momento  :I

Un saludote                                
Título: Un temilla interesante de sombras
Publicado por: MaSteR en 07 de Junio de 2003, 02:32:18 PM
                                Esa tecnica consume bastante :D.La verdad esq es un tema interesante a ver si alguien lo sabe, pq yo tb tengo q meterle sistema de sombras y demas al engine.                                
Título: Un temilla interesante de sombras
Publicado por: MChiz en 07 de Junio de 2003, 03:27:37 PM
                                Con un pixel shader creo que no consumiria tanto como la fuerza bruta. Lo malo es que fuerzas a tener una tarjeta con soporte de pixel shader, y eso no me mola demasiado.
Si alguien tiene alguna idea, por favor, que la diga!!                                
Título: Un temilla interesante de sombras
Publicado por: BeRSeRKeR en 07 de Junio de 2003, 03:40:03 PM
                                El problema con el método tradicional a la hora de utilizar shadow volumes es que primero se renderiza la escena ya iluminada y luego se aplicaba el rectángulo con alpha blending sobre toda la escena. De esta forma, hay zonas donde, por ejemplo, debería estar iluminada, y en realidad está en sombra. Esto es porque, con este método, una vez que una zona está en sombras, permanece así para siempre.

Por otra parte tenemos la técnica multi-pass shadows (la que utiliza doom3) que lo que hace es (muy básicamente y que conste que yo no la he implementado):

En una primera pasada renderizamos la escena con el zbuffer activado y añadimos ambient light. En la segunda pasada, desactivamos la escritura en el zbuffer y renderizamos la escena sólo con texturas. En la tercera pasada, renderizamos para cada luz (más pasadas todavía :)), los shadow volumes y activamos additive blending para ir sumando los resultados obtenidos para cada luz. En la última pasada, modulamos la textura donde tenemos calculada la iluminación con la escena que teníamos ya texturada renderizando un quad (con la textura de la iluminación aplicada) sobre la escena texturada.

Es todo lo que sé sobre el tema. Espero que os ayude a empezar...

Saludos

PD: buscando sobre el tema he encontrado un mini tutorial de TeleMachos ( algunos lo conoceréis por los tutoriales sobre detección de colisiones en http://www.peroxide.dk ) que os aclarará mucho más las cosas:

http://www.dr-code.com/modules/MrGamemaker...assShadows.html                                
Título: Un temilla interesante de sombras
Publicado por: MaSteR en 07 de Junio de 2003, 06:47:15 PM
                                ME baje una demo de Volumetric Shadows de nVidia q daba buenos resultados aunque es verdad q pasa eso q dices... voy a ver algo sobre esto.                                
Título: Un temilla interesante de sombras
Publicado por: MChiz en 07 de Junio de 2003, 07:17:42 PM
                                Gracias por explicarme el metodo del Doom3. No quisiera ser desagradecido, pero ya tenia constancia de como lo hacia ( no lo tomes a mal ).
Mi duda es el como hace que las sombras se atenuen con la distancia a la fuente de luz. O si haces el metodo del Doom3, esto lo consigues automaticamente? ( Aunque a mi me da que no... )
Muchisimas gracias por contestar tan rapido.

Un saludote!!                                
Título: Un temilla interesante de sombras
Publicado por: Loover en 09 de Junio de 2003, 07:37:36 PM
                                Recordaba haber leído algo de eso en flipcode. El "shadow attenuation".

Lo describe bastante por encima, pero lo mismo te sirve de ayuda:
http://www.flipcode.com/cgi-bin/msg.cgi?sh...orum=iotd&id=-1                                
Título: Un temilla interesante de sombras
Publicado por: MChiz en 09 de Junio de 2003, 09:19:48 PM
                                Muchisimas gracias Loover!!!!!!
Ahora mismo voy a mirarlo!!
Graciaaaas! :´)