37
6 float in 32 bits

Light Pre Pass Deferred lighting

Embed Size (px)

Citation preview

6 float in 32 bits

• Model

• Camera

• Light

• Shader

• For each object

• Encontrar las luces que afectan al objeto

• Renderizar todas las luces y materiales en una pasada

• Explosión de combinaciones• Shader por cada material y tipo de luz

• Perdida de ciclos de GPU• Overdraw

• Triangles fuera del rango de la luz

• For each light

• For each object

• Añadir la contribución de luz

• Shaders para cada tipo de material y luz

• Perdida de ciclos de GPU• Overdraw

• Triangles fuera del rango de la luz

• For each object

• Almacenar todo lo necesario en el G-Buffer

• For each light and pixel iluminado• Usar el G-Buffer para el cálculo de luz

• Añadir el resultado al frame buffer

• Shaders simples

• Elimina la limitación del número de luces

G-Buffer Final Image

• Multi Render Target (MRT)

• Ancho de banda elevado

• MSAA

• No contempla objetos transparentes

• Materiales limitados a la información en G-Buffer

• For each object

• Almacenar Position y Normal

• For each light • Dibujar un volumen de luz

• Calculo de luz con la información almacenada

• Acumular el calculo sobre un lightingRT

• For each object• Dibujar cada pixel utilizando la iluminación

almacenada

• Compresión de normales• Store X & Y, reconstruct Z

• Reconstrucción de Position• Almacenar depth (z / w)

• Reconstrucción de Position

Screen Space

TexCoord X

TexCoord Y

• Reconstrucción de Position

• Desktop (Windows, Linux, MacOS)• DepthBuffer supported

8R (8bits) G (8 bits) B (8 bits) A (8 bits)

Normal X Normal Y Normal Z Specular Power

Depth (24 bits) S8

• Windows Metro• DirectX 9_1 (No Depth, no MRT)

• Windows Phone• DirectX 9_3 (Depth supported)

R (8 bits) G (8 bits) B (8 bits) A (8 bits)

Normal X Normal Y Normal Z Specular Power

Depth (24 bits) S8

R (8 bits) G (8 bits) B (8 bits) A (8 bits)

Normal 1 Normal 2 Depth (16 bits)

• iOS• DepthTexture extensión

R (8 bits) G (8 bits) B (8 bits) A (8 bits)

Normal X Normal Y Normal Z Specular Power

Depth (24 bits) S8

• Android• DepthTexture extensión (OpenGL ES 2.0)

• Tegra GPU (MRT supported)

R (8 bits) G (8 bits) B (8 bits) A (8 bits)

Normal X Normal Y Normal Z Specular Power

Depth (24 bits) S8

R (8 bits) G (8 bits) B (8 bits) A (8 bits)

Normal X Normal Y Normal Z Specular Power

Depth (32 bits)

Thank you

Javier Cantón Ferrero

@jcant0n

http://geeks.ms/blogs/jcanton/