La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Deferred Shading Ariel Brunetto Director Aquadize Studios

Presentaciones similares


Presentación del tema: "Deferred Shading Ariel Brunetto Director Aquadize Studios"— Transcripción de la presentación:

1 Deferred Shading Ariel Brunetto Director Aquadize Studios

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 OUT.color0.xyz = IN.wPos.xyz;

9 G-Buffer: 32 bits Depth

10 G-Buffer: Diffuse OUT.color1.xyz = tex2D(IN.kDiffuseMap,IN.uvw0).xyz;

11 G-Buffer: Normal OUT.color2.xyz = normal.xyz;

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ón Desventajas 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ón Ventajas 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 ^_^)


Descargar ppt "Deferred Shading Ariel Brunetto Director Aquadize Studios"

Presentaciones similares


Anuncios Google