Compute Shaders
GPU instancing

Buffers de comando de gráficos (buffers de comando de gráficos)

Es posible extender el rendering pipeline de Unity con algo llamado “command buffers”. Un command buffer mantiene una lista de comandos de rendering (“set render target, draw mesh, …”), y puede ser configurado para ejecutarse en varios puntos durante la renderización de cámara.

Por ejemplo, usted puede renderizar algunos objetos adicionales al deferred shading G-buffer después de que todos los objetos regulares hayan acabado.

Una visión general de alto nivel de cómo las cámaras renderizan una escena en Unity se muestra abajo. En cada punto marcados con un punto verde, usted puede agregar command buffers para ejecutar sus comandos.

Ver CommandBuffer scripting class y CameraEvent enum para más detalles.

Los command buffers también se pueden utilizar como un remplazo para, o en conjunto con image effects.

Código Ejemplo

Un proyecto ejemplo demostrando algunas de las técnicas posibles con command buffers: RenderingCommandBuffers.zip.

Blurry Refractions (Refracciones borrosas)

Esta escena muestra una técnica de una “blurry refraction”.

Después de que los objetos opacos y skybox se render, la imagen actual se copia a un objetivo de render temporal, se des-enfoca, y se configura una propiedad global shader. El shader en el objeto de vidrio luego muestra la imagen borrosa, con coordenadas UV desfasadas basadas en un normal map para simula la refracción.

Esto es similar a lo que shader GrabPass hace, excepto que usted puede hacer más cosas personalizadas (en este caso, volver borroso).

Luces de Área Personalizadas en Deferred Shading

Esta escena muestra una implementación de “custom deferred lights”: luces con forma de esfera, y luces con forma de tubo.

Después de que un deferred shading light pass regular se haya hecho, una esfera se dibuja por cada luz personalizada, con un shader que calcula la iluminación y lo agrega al buffer de iluminación.

Decals en Deferred Shading

Esta escena muestra una implementación básica de “deferred decals”.

La idea es: después de que el G-buffer haya terminado, dibuje cada “forma” del decal (una caja) y modifique el contenido del G-buffer. Esto es muy similar a cómo las luces se hacen en deferred shading, excepto que en vez de acumular la iluminación Nosotros modificamos las texturas G-buffer.

Cada decal es implementado como una caja aquí, y afecta cualquier geometría dentro de la caja volumen.

Compute Shaders
GPU instancing