Nuevo Ejemplo: God Rays - DotNetClubs
en

DotNetClubs

Comunidades de estudiantes entusiastas de la tecnología

Nuevo Ejemplo: God Rays

Último artículo 06-07-2008 11:16 escrito por race. 9 respuestas.
Página 1 de 1 (10 elementos)
Ordenar mensajes: Anterior Siguiente
  • 06-02-2008 23:00

    • el g0e
    • Contribuyente Top 10
    • Se unió el 03-07-2008
    • Barcelona
    • Envíos: 79
    • Puntos: 1,385
    • DotNetClub_XNACommunity

    Nuevo Ejemplo: God Rays

    Este ejemplo trata de simular los llamados "god-rays" o light shafts que produce la oclusión de la luz del sol con objetos opacos. Esta técnica se ejecuta como un postproceso en la GPU, pero da una ensación de volumen bastante realista. El ejemplo se basa en el artículo "Volumetric Light Scattering as a Post-Process" que parece en el libro GPU Gems 3.

     La configuración inicial está pensada para que vaya a una velocidad aceptable en hardware que no sea excesivamente nuevo, pero en el readme pongo una configuración que personalmente me gusta mucho como queda, aunque necesita una gráfica más o menos potentilla.

    En este ejemplo también es la primera vez que uso MRT (Multiple Render Targets) para acelerar la visualización, y me temo que lo voy a usar mucho en el futuro... xD  Espero que os guste. ^^

    http://elgoe.blogspot.com
    • Puntos de post: 35
  • 06-03-2008 17:55 en respuesta a

    • Javi
    • Contribuyente Top 10
    • Se unió el 10-11-2006
    • Sevilla
    • Envíos: 373
    • Puntos: 4,565
    • DotNetClub_Coordinadores
      DotNetClub_Miembros
      DotNetClub_XNACommunity
      DotNetClubs_AdminTeam

    Re: Nuevo Ejemplo: God Rays

    Una pasada de ejemplo la verdad, a veces me asombro de como se lo están llevando todo a screen space y que sin embargo los resultados son muy realistas. Un artículo muy bueno ese de GPU Gems 3 que además creo recordar que era de un tio de Electronic Art.

    Y bueno lo del MRT junto con las técnicas Screen Spaces yo creo que es el futuro de todo esto y lo que van a empezar a ponteciar en todos los juegos actuales. Recomiendo a todos le echeis un vistazo. Una idea así rápida sería:

    Estamos acostumbrados funciones para pixelshader dentro de nuestros ejemplos que como elemento de salida es un float4, esta es la información que recibe cada pixel de un buffer. Ahora con técnicas como el Deffered, Depth of field, motion blur, cell shading... se intenta llevar todo a screen space (espacio de imagen), es decir hacer un render con las normales de la escena, otro con la información sobre la profundidad, etc.. Cual es el problema principal que hacer varios renders significa varias pasadas no solo por cada pixel sino también por cada vértice.

    La idea que está detrás del MRT es usar los 8 (0-7) registros de textura de las tarjetas gráficas actuales, de forma que la salida de una función de pixel shader no sea un float4, sino una estructura con dos float4 por ejemplo. Autómaticamente el primer float4 se almacena en el rendertarget(0) y el segundo en el rendertarget(1), eso significa que con un solo recorrido por todos los vértices y un solo recorrido por los pixeles podemos generar dos imágenes que luego se puedan mezclar por ejemplo. Como véis nos estamos ahorrando prácticamente un render que es bastante tiempo.

     

    Bueno una vez que tenéis la idea en la cabeza recordar el ejemplo de Alex de SSAO, también se podría haber acelerado, por si alguien le da por hacerlo XD?

     

    Saludos 

    • Puntos de post: 20
  • 06-03-2008 18:59 en respuesta a

    • mariscal
    • Contribuyente Top 25
    • Se unió el 03-10-2008
    • Málaga
    • Envíos: 59
    • Puntos: 925

    Re: Nuevo Ejemplo: God Rays

     gracias por las explicaciones jejeje, el ejemplo está wapo wapo wapo... con la configuracion inicial me va a unos 42 fps y con la buena a 24 xD 

    enhorabuena por el trabajo, porque está muy muy bien 

    • Puntos de post: 5
  • 06-04-2008 18:27 en respuesta a

    • race
    • Contribuyente Top 25
    • Se unió el 03-22-2008
    • pamplona
    • Envíos: 38
    • Puntos: 625

    Re: Nuevo Ejemplo: God Rays

    Bueno Alex tu ejemplo es demasie lastima que solo lo puedo ver por el video ( !como me jode decir esto!),  cuando tenga tiempo lo mirare mas a fondo a ver si lo soluciono se ve que mi ati es muy delica. Eso si, ERES EL AMO DEL COTARRO!!!.

     

    Saludos,

    • Puntos de post: 20
  • 06-04-2008 23:11 en respuesta a

    • el g0e
    • Contribuyente Top 10
    • Se unió el 03-07-2008
    • Barcelona
    • Envíos: 79
    • Puntos: 1,385
    • DotNetClub_XNACommunity

    Re: Nuevo Ejemplo: God Rays

    xD gracias! Yo me voy a cagar en tu Ati, siempre da problemas con mis ejemplos! xD Te dice algo o simplemente no se ve nada? 

    http://elgoe.blogspot.com
    • Puntos de post: 20
  • 06-05-2008 19:45 en respuesta a

    • race
    • Contribuyente Top 25
    • Se unió el 03-22-2008
    • pamplona
    • Envíos: 38
    • Puntos: 625

    Re: Nuevo Ejemplo: God Rays

    Alex no se ve nada, es como si vieras la pantalla con un rt sin pintar nada con el color ese violeta guarrindongo. Los problemas que surgen con tus ejemplos creo que es devido a que sacas la informacion de libros de Nvidia y por lo normal  no funcionan bien en ati, te lo comento porque yo me he bajadon un moton de demos de nvidia y lo normal es que no funcionen bien con las ati.

     

    Saludos

    • Puntos de post: 20
  • 06-05-2008 22:56 en respuesta a

    • el g0e
    • Contribuyente Top 10
    • Se unió el 03-07-2008
    • Barcelona
    • Envíos: 79
    • Puntos: 1,385
    • DotNetClub_XNACommunity

    Re: Nuevo Ejemplo: God Rays

    Este es el único ejemplo que he sacado de un libro de nVidia, pero igualmente no usa nada específico de estas tarjetas porque con XNA directamente no se puede hacer algo así. Si desactivas el MRT tampoco va? Es que me resulta muy extraño porque usa cosas muy normales... :S

    http://elgoe.blogspot.com
    • Puntos de post: 20
  • 06-06-2008 20:59 en respuesta a

    • race
    • Contribuyente Top 25
    • Se unió el 03-22-2008
    • pamplona
    • Envíos: 38
    • Puntos: 625

    Re: Nuevo Ejemplo: God Rays

    Bueno Alex lo primero perdona por dar tanto por saco.

    Bueno en el ejemplo como tu dices despues de estudiar bien tu codigo no hay nada raro para que no funcione en las ati, el problema por lo que veo es de mi tarjeta en particular. Tengo una Asus 1950 pro que se supone que soporta shader 3.0 pero la muy puuuuu no me pinta las pantallas con spriteBatch que tengan shader 3.0 solo hata el 2.0 cosa que no entiendo con la pasta que me costo la mierda de tarjeta.

     

    Saludos.

    • Puntos de post: 20
  • 06-06-2008 21:55 en respuesta a

    • el g0e
    • Contribuyente Top 10
    • Se unió el 03-07-2008
    • Barcelona
    • Envíos: 79
    • Puntos: 1,385
    • DotNetClub_XNACommunity

    Re: Nuevo Ejemplo: God Rays

    Eso sí que es raro... Sólo ocurre con spritebatch? Podrías probar a pintar el quad tú mismo o usar el QuadRenderComponent que hay en Ziggyware, que no toquetea cosas como estados y tal.

    http://elgoe.blogspot.com
    • Puntos de post: 20
  • 06-07-2008 11:16 en respuesta a

    • race
    • Contribuyente Top 25
    • Se unió el 03-22-2008
    • pamplona
    • Envíos: 38
    • Puntos: 625

    Re: Nuevo Ejemplo: God Rays

    Si señor si le meto el Quad yo mismo funciona a las mil maravillas (por cierto que chulo mejor que verlo en el video)  o bien los drives de mi tarjeta no andan bien con el Xna o es un bug de Xna, que lo normal sera lo primero. Y gracias por la idea.

     

    Saludos.

    • Puntos de post: 5
Página 1 de 1 (10 elementos)
(c) DotNetClubs 2008
Ofrecido por Community Server (Commercial Edition)