Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Parallax Occlusion Mapping On 2.0 / 3.0

Iniciado por Haddd, 08 de Mayo de 2006, 09:13:15 AM

« anterior - próximo »

Haddd

 Hemos creado este nuevo efecto y le hemos dado soporte a shaders 2.0 y 3.0 Con 2.0, damos 2 pasadas: una para guardar los valores del parallax y otra para guardar el valor de la sombra. Con 3.0, todo se realiza en una sola pasada.  :P

-----------------------------------

We have created the new effect, and we give it support to 2.0 & 3.0 shaders. 2.0 means two passes, one for the parallax values, and one for the shadow. With 3.0, it can be done with one pass only.  :P

I give you two shots. Remember, this is now a Haddd built-in effect  (genial)


Sin Parallax occlusion mapping



Con Parallax occlusion mapping



BeRSeRKeR

 He capturado un video, que siempre muestra mejor el efecto que una imagen estática. Sobre todo por el tema de que esta técnica soporta self-shadowing.

Descargar video.

Al principio se muestra el normal mapping de toda la vida. Luego se activa el parallax occlusion mapping (combinado con el normal mapping) y poco a poco se va incrementando el desplazamiento, lo cual le da una mayor sensación de relieve. En un momento dado se activa el modo wireframe para que veais que realmente se trata de un quad con sólo dos triángulos. smile.gif

Sin duda, ésta es la técnica que conozco que más sensación de relieve ofrece, sin llegar a tocar para nada la geometría.

El video va un poco a trompicones, pero es porque he tenido que capturar a pelo. smile.gif

Saludos.

------------------------

I've captured a little video demostration. This way, you can see much better the self-shadowing effect.

Download video..

At first, you can see the conventional normal map effect. Then, parallax occlusion mapping is enabled (plus normal mapping) and the displacement value is incremented. Moreover, you can see the self-shadows doing their job really well :). That way you can see how well works this technique creating a sense of height on surfaces. Also, the wireframe mode is enabled for you to see that the wall is made of only two triangles. :)

Without any doubt, this is the best technique I know to create the illusion of height without altering the mesh geometry.

Greets.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

TheAzazel

 Ese efecto mola mazo, al tener sombras da mucha mas sensacion de profundidad pero.... que tal se comporta si coges y miras la pared de lado? me imagino que... pasara como en todos los juegos... que veras todo plano planito no? o el parallax este tambien se las apana con esas vistas??

Vicente

 Si lo miras de lado es planito me da a mi :P

Un saludo!

Vicente

BeRSeRKeR

Cita de: "TheAzazel"Ese efecto mola mazo, al tener sombras da mucha mas sensacion de profundidad pero.... que tal se comporta si coges y miras la pared de lado? me imagino que... pasara como en todos los juegos... que veras todo plano planito no? o el parallax este tambien se las apana con esas vistas??
Si lo miras totalmente de canto, sí, se ve que es un plano. Eso es porque esta técnica sigue siendo a nivel de pixel, no modifica la geometría. Aún así sigue dando el pego hasta cierto punto, claro. :)

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

TheAzazel

 Ya hablando del tema... lei hace tiempo el sistema para hacer eso por geometria pero creo que las tarjetas actuales no los soportaban... o quizas ahora con sm3 si... y se llamaba algo asi como tesellation o no se que historias...., como veis, he oido campanas pero no se donde jajaja

y seguro que vosotros sabeis mas como esta el tema y cuando podremos disfrutar de el, no solo en haddd si no en el resto de engines/juegos ya que seria un adelanto de narices

Saludos

BeRSeRKeR

 
Cita de: "TheAzazel"Ya hablando del tema... lei hace tiempo el sistema para hacer eso por geometria pero creo que las tarjetas actuales no los soportaban... o quizas ahora con sm3 si... y se llamaba algo asi como tesellation o no se que historias...., como veis, he oido campanas pero no se donde jajaja
Con el shader model 3.0 se pueden leer texturas desde el vertex shader, lo que significa que podrías coger un height map y desplazar los vértices dependiendo de la altura codificada en la textura. Lo que pasa es que la geometría que mandes a la tarjeta tiene que estar bastante teselada para alcanzar resultados aceptables. Por cierto, creo que las ATI no tienen esta capacidad implementada directamente sino que tienen lo que se conoce como R2VB (render to vertex buffer).

Por otro lado tenemos los geometry shaders que vendrán con el shader model 4. En el SDK de DirectX vienen ejemplos sobre DX10. Concretamente hay uno que hace displacement mapping real, es decir, desplaza los vértices. Creo recordar que incluso tesela la geometría adaptativamente, es decir, no tesela la malla uniformemente sino que tesela ahí donde las variaciones de altura son mayores y por lo tanto más detalle se necesita para capturar dichos cambios de altura.

Lo bueno es que con los geometry shaders puedes crear y destruir vértices/triángulos y acceder a la información de los mismos, lo que quiere decir que no sólo puedes detallar la geometría todo lo que quieras en la propia GPU, sino que además puedes calcular las nuevas normales.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Ruben

 Hi,
sobre "Vertex Displacement Mapping" aqui teneis un tutorial en opengl: Vertex Displacement Mapping

Y un articulo del "GPU Gems 2" de NVidia sacado de gamasutra: GPU Gems 2:  Using Vertex Texture Displacement for Realistic Water Rendering

Un saludo,
Rubén

Lord Trancos 2

  (genial)  (genial)  (genial)

Ciertamente lo de poner un video ha sido buena idea.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

BeRSeRKeR

 Otro video mostrando el POM de forma más exagerada. :)

--------------------

Another video showing a much more exaggerated POM effect. :)
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

race

  :huh: dios que buen trabajo estais haciendo,que ganas tengo de que este la nueva version, espero que no falte mucho que ya me estoy comiendo las uñas

 U cant destroy bodies, but at least you can render parallax mapped bricks with shadows in 1 pass

Fiz

 Que bueno si señor, es increible lo que estais haciendo..
Si  permitis el pequeño apunte de un grafista,
Este tipo de efectos  a mi entender no están del todo pulidos, con esto me refiero a ,por ejemplo, el cono de luz no se ve afectado por el parallax, en ciertos angulos se nota que es un plano, las sombras no se ven afectadas por el parallax,la textura fuga en los "nuevos pixeles" (cosa totalmente normal claro) por esto me refiero a que es mejor usarlos con cierto cuidado ¿no?, si pones una pared de ladrillo con un simple normal map, o bump map, con su especular bien colocado, su difuse correctamente aplicado, un lightmap perfecto y un par de luces dínamicas que proyecten sombras sobre la pared, queda genial no? pero si le aplicamos un parallax no del todo "pulido", que se note que las sombras no interactuan bien con la superficie, que los conos de luz no se deformen en la superficie, no creeis que, sí, el efecto del relieve es impresionante, pero hace que, en parte ,todo quede un poco peor por que el resto de cosas no "casan" bien y el efecto canta, no sé, yo es que tengo poca idea de programación, soy el tipico que siempre está tocando los cuernos a los programdores, con, y si implementais esto o he leido en una web que se puede.... en fin supongo que estareis hasta los mismisimos de gente como yo, y supongo que implementar esto que os digo es o super complejo, o tan costoso a nivel de recursos que no merece la pena, pero bueno solo queria comentar el efecto desde el punto de vista del tredesero.. :-)

Saludos y enhorabuena por el proyecto os está quedando de verdadero lujo.

Haddd

 
CitarU cant destroy bodies, but at least you can render parallax mapped bricks with shadows in 1 pass

Next version, next version.... ;)

Sobre lo de Fiz, pues claro que hay errores, pero es que también hay errores con los lightmaps, y con todo en un juego, porque tiene que ser en tiempo real. Si te pones a mirar la pared, pues sí encuentras fallos, pero en cambio si esto lo pones en un juego, este tipo de cosas no canta tanto.

La "gracia" de este efecto es que es capaz de mostrar relieve y self shadowing con bastante apariencia de realidad, y siempre sin tener que tener la geometría muy teselada.

segafan

 Hello BeRSeRKeR,
I have a question. How do you make increasing/decreasing of parallax effect in real-time?
Is that increasing/decreasing function in C# or in shader?
Can you explain me how make that or better show me code?

Thanks






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.