Deferred Shading - PowerPoint PPT Presentation

Jimmy
deferred shading n.
Skip this Video
Loading SlideShow in 5 Seconds..
Deferred Shading PowerPoint Presentation
Download Presentation
Deferred Shading

play fullscreen
1 / 24
Download Presentation
Deferred Shading
219 Views
Download Presentation

Deferred Shading

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Deferred Shading Ariel BrunettoDirectorAquadize Studios abrunetto@aquadize.com

  2. Agenda • Forward Rendering vs Deferred Rendering • G-Buffers • Fuentes Locales vs Fuentes globales • Lighting pass y Convex Hulls • Efectos de postproceso • Materiales • Objetos transparentes • Conclusiones: Ventajas y Desventajas

  3. Single-pass Lighting • Se utiliza un unico shader que aplica todas las luces por cada objeto renderizado en la misma pasada. • El problema radica en la cantidad de combinacion que se producen al combinar los shaders con los distintos tipos de luces. • Existe un gasto de procesamiento innecesario sobre los pixels que sufren redraw. • Existen problemas con la integracion con shadows debido al consumo de VRAM. • Recomendando para escenas con pocas luces. • Es facil alcanzar el limite de instrucciones por shader.

  4. Multipass Lighting • Se realiza una pasada por cada luz. La complejidad es O(cantObjetos * cantLuces). • Al igual que en simple-pass, los pixeles ocultos generan procesamiento innecesario. • Dificultad el batching, debido a que deben enviarse diferentes objetos dependiendo de las luces que lo afectan. Ordenar por luz o por objeto es mutuamente excluyente. • Por cada pasada que se envia el mismo objeto, este es procesado nuevamente por el vertex shader, generando el mismo resultado. Se vuelve a transformar, se vuelven a aplicar filtros anisotropicos, etc…

  5. Deferred Shading • La informacion de shading de cada objeto es almacenada en un G-Buffer. • Luego se utiliza el G-Buffer como entrada al shader de lighting. Las luces se aplican producto de un postproceso utilizando la informacion del G-Buffer como entrada. • Mejora notablemente el batching, procesando cada objeto exactamente 1 vez. • La evaluacion de la pasada de lighting se mantiene constante respecto de la cantidad de objetos (n), convirtiendose de O(n) a O(1). • Permite combinar varias fuentes de luces con baja incidencia en una unica fuente.

  6. Que es un G-Buffer? • Un G-Buffer contiene toda la informacion necesaria para evaluar la ecuacion de per pixel lighting. • Normal • Position • Diffuse color (con ambient oclussion) • Specular factor • Reflection factor • Shadow amount • Material ID

  7. G-Buffer: Requerimientos • Floating-point textures • Multiple Render Targets (MRT), permitiendo almacenar todos los atributos del G-Buffer en una unica pasada. • Floating-point blending. • Limita la cantidad de parametros de la BRDF (Spherical Harmonics se dificultan).

  8. G-Buffer: Position

  9. G-Buffer: 32 bits Depth

  10. G-Buffer: Diffuse

  11. G-Buffer: Normal

  12. Final

  13. G-Buffer: Primera pasada • Se utiliza para almacenar la informacion de los objetos necesaria para el calculo de la BRDF. • Se busca mantener al minimo la utilizacion de memoria. Existen varias tecnicas para packear informacion. • Almacenar unicamente pos.z en viewspace y luego reconstruir la posicion a partir de screenPos.x, screenPos.y y el FOV angle. • Almacenar normal.xy y computar normal.z = sqrt(1-x^2-y^2). Para evitar el overhead de procesamiento se pueden almacenar los resultados en una textura.

  14. MRT • Deben posee la misma cantidad de bits, osea: • RT0: R8G8B8A8 • RT1: R32 • La cantidad de targets activos simultaneamente se encuentran limitados por la GPU.

  15. Fuentes Locales y Globales • Globales: Afectan todos los pixels de la pantalla. Se renderizan a traves de un screen aligned. • Locales: Afectan una porcion de pixeles de la pantalla. Se utiliza geometria creada en author time para definir los pixels afectados.

  16. Lighting • Se renderiza un convex hull por cada fuente, proyectandolo en screen space. De esta forma solo se procesan los pixels afectados. El hull es definido en author time: • Point light: esfera • Spot light: cono • Directional light: box • Se lee la informacion desde el G-Buffer. • Se evalua la BRDF. • Se blendea la informacion en el framebuffer.

  17. Light Convex Hulls • Solo se evaluan los pixels afectados por light volume.

  18. Efectos de postproceso • El G-Buffer y el accumulation buffer se pueden utilizar como entrada para varios efectos de postproceso: • Glow • Edge-smoothing • HDR • Heat haze

  19. Multiples materiales • No escala para multiples materiales. La cantidad de terminos que se pueden almacenar en el G-Buffer son limitados debido a la memoria. • Una solucion seria almacenar las propiedades de un material determinado en una textura de materiales. • Se utiliza una unica BRDF en todo el proceso de lighting. • Se puede utilizar un material id y branching (pixel shader 3.0 hardware) para seleccionar una BRDF distinta por pixel.

  20. Objetos transparentes • No se encuentran directamente soportandos por deferred shading. • Opciones? • Depth peeling, como ultimo recurso, ya que involucra ejecutar el path completo de deferred varias veces. • Utilizar forward rendering para objetos transparentes y luego realizar blending con el resultado de deferred. • Utilizar Screen Door Transparency.

  21. ConclusiónDesventajas del Deferred Shading • Objetos transparentes. • VRAM. • AA. • Una unica BRDF por escena. • Materiales limitados a una cantidad fija de terminos. • High fill rate.

  22. ConclusiónVentajas del Deferred Shading • Geometry batching • Procesar cada geometria exactamente una vez • Calcular el color de cada pixel visible exactamente una vez. • Al igual que las luces, realizar efectos de postproceso es sencillo: simplemente se utilizan como entrada el G-Buffer y el accumulation buffer.

  23. Preguntas?

  24. Gracias!! (ya pueden descansar ^_^)