Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Un temilla interesante de sombras

Iniciado por MChiz, 07 de Junio de 2003, 12:13:55 PM

« anterior - próximo »

MChiz

                                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                                

MaSteR

                                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.                                

MChiz

                                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!!                                

BeRSeRKeR

                                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                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

MaSteR

                                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.                                

MChiz

                                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!!                                

Loover

                                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                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

MChiz

                                Muchisimas gracias Loover!!!!!!
Ahora mismo voy a mirarlo!!
Graciaaaas! :´)                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.