Foros - Stratos

Proyectos => Jad Engine => Mensaje iniciado por: Haddd en 08 de Mayo de 2006, 09:13:15 AM

Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: Haddd en 08 de Mayo de 2006, 09:13:15 AM
 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

(http://www.funmangames.com/haddd/varios/pom1.jpg)

Con Parallax occlusion mapping

(http://www.funmangames.com/haddd/varios/pom2.jpg)
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: BeRSeRKeR en 08 de Mayo de 2006, 10:51:09 AM
 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.
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: TheAzazel en 08 de Mayo de 2006, 11:13:43 AM
 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??
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: Vicente en 08 de Mayo de 2006, 11:21:22 AM
 Si lo miras de lado es planito me da a mi :P

Un saludo!

Vicente
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: BeRSeRKeR en 08 de Mayo de 2006, 12:25:19 PM
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.
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: TheAzazel en 08 de Mayo de 2006, 12:38:14 PM
 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
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: BeRSeRKeR en 08 de Mayo de 2006, 01:01:12 PM
 
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.
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: Ruben en 08 de Mayo de 2006, 02:53:51 PM
 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
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: Lord Trancos 2 en 08 de Mayo de 2006, 02:55:18 PM
  (genial)  (genial)  (genial)

Ciertamente lo de poner un video ha sido buena idea.
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: BeRSeRKeR en 08 de Mayo de 2006, 02:59:37 PM
 Otro video mostrando el POM de forma más exagerada. :)

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

Another video showing a much more exaggerated POM effect. :)
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: race en 08 de Mayo de 2006, 08:10:34 PM
  :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
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: en 09 de Mayo de 2006, 12:25:30 AM
 U cant destroy bodies, but at least you can render parallax mapped bricks with shadows in 1 pass
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: Fiz en 09 de Mayo de 2006, 01:27:29 AM
 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.
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: Haddd en 09 de Mayo de 2006, 09:07:58 AM
 
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.
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: segafan en 09 de Mayo de 2006, 10:58:57 AM
 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
Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: Haddd en 09 de Mayo de 2006, 12:20:06 PM
 all the built-in effects are real time, so you just change one effect parameter to increase the parallax effect. If you want the parallax shader, you can get it from ATI or from the April 2006 DXSDK update, documentation included.

Título: Parallax Occlusion Mapping On 2.0 / 3.0
Publicado por: donald en 09 de Mayo de 2006, 05:22:17 PM
 yo desde siempre estoy más detras del displacement de verdad que de lo demás. Aunque los parallax son mejores que los normal maps.

Muy interesante ese post, Berseker, sobre todo lo del shader model 4.