Configurar la funcionalidad de la galería de símbolos de profundidad

En esta sección se describen los pasos para configurar el búfer de galería de símbolos de profundidad y el estado de galería de símbolos de profundidad para la fase de fusión de salida.

Una vez que sepa cómo usar el búfer de galería de símbolos de profundidad y el estado de galería de símbolos de profundidad correspondiente, consulte técnicas avanzadas de galería de símbolos.

Crear estado de Depth-Stencil

El estado de la galería de símbolos de profundidad indica a la fase de fusión de salida cómo realizar la prueba de galería de símbolos de profundidad. La prueba de galería de símbolos de profundidad determina si se debe dibujar o no un píxel determinado.

Enlazar datos Depth-Stencil a la fase de OM

Enlace el estado de la galería de símbolos de profundidad.

Enlace el recurso de galería de símbolos de profundidad mediante una vista.

Los destinos de representación deben ser el mismo tipo de recurso. Si se usa el suavizado multimuestrado, todos los destinos de representación enlazados y los búferes de profundidad deben tener los mismos recuentos de muestras.

Cuando se usa un búfer como destino de representación, no se admiten pruebas de galería de símbolos de profundidad y varios destinos de representación.

  • Hasta 8 destinos de representación se pueden enlazar simultáneamente.
  • Todos los destinos de representación deben tener el mismo tamaño en todas las dimensiones (ancho y alto, y profundidad para el tamaño de matriz o 3D para *Tipos de matriz).
  • Cada destino de representación puede tener un formato de datos diferente.
  • Las máscaras de escritura controlan qué datos se escriben en un destino de representación. El control de máscaras de escritura de salida en un destino por representación, por componente, qué datos se escriben en los destinos de representación.

Técnicas avanzadas de galería de símbolos

La parte de galería de símbolos del búfer de galería de símbolos de profundidad se puede usar para crear efectos de representación, como la composición, el escalado y la esquematización.

Composición

La aplicación puede usar el búfer de galería de símbolos para componer imágenes 2D o 3D en una escena 3D. Se usa una máscara en el búfer de galería de símbolos para ocluir un área de la superficie de destino de representación. La información almacenada en 2D, como texto o mapas de bits, se puede escribir en el área ocluida. Como alternativa, la aplicación puede representar primitivos 3D adicionales en la región enmascarada de galería de símbolos de la superficie de destino de representación. Incluso puede representar una escena completa.

Los juegos suelen componer varias escenas 3D juntas. Por ejemplo, los juegos de conducción suelen mostrar un espejo retrovisor. El reflejo contiene la vista de la escena 3D detrás del controlador. Básicamente, es una segunda escena 3D compuesta con la vista hacia delante del controlador.

Escalado

Las aplicaciones de Direct3D usan el escalado para controlar qué píxeles de una imagen primitiva determinada se dibujan en la superficie de destino de representación. Las aplicaciones aplican calcales a las imágenes de primitivos para permitir que los polígonos coplanares se representen correctamente.

Por ejemplo, al aplicar marcas de neumáticos y líneas amarillas a una carretera, las marcas deben aparecer directamente en la parte superior de la carretera. Sin embargo, los valores z de las marcas y la carretera son los mismos. Por lo tanto, es posible que el búfer de profundidad no genere una separación limpia entre los dos. Algunos píxeles de la primitiva posterior se pueden representar en la parte superior del primitivo frontal y viceversa. La imagen resultante parece brillar de marco a fotograma. Este efecto se denomina z-fighting o flimmering.

Para resolver este problema, use una galería de símbolos para enmascarar la sección del primitivo posterior donde aparecerá el calcedo. Desactive el almacenamiento en búfer z y represente la imagen del primitivo frontal en el área enmascarada de la superficie de destino de representación.

Se pueden usar varias mezclas de texturas para resolver este problema.

Contornos y siluetas

Puede usar el búfer de galería de símbolos para obtener más efectos abstractos, como esquematización y silhouetting.

Si la aplicación realiza dos pases de representación: uno para generar la máscara de galería de símbolos y el segundo para aplicar la máscara de galería de símbolos a la imagen, pero con los primitivos ligeramente más pequeños en el segundo paso, la imagen resultante contendrá solo el contorno del primitivo. Después, la aplicación puede rellenar el área enmascarada de la galería de símbolos de la imagen con un color sólido, lo que proporciona al primitivo un aspecto en relieve.

Si la máscara de galería de símbolos tiene el mismo tamaño y forma que el primitivo que se va a representar, la imagen resultante contiene un agujero donde debe estar el primitivo. Después, la aplicación puede rellenar el agujero con negro para producir una silueta del primitivo.

Galería de símbolos de dos caras

Los volúmenes de sombra se usan para dibujar sombras con el búfer de galería de símbolos. La aplicación calcula los volúmenes de sombra que se convierten al ocultar la geometría, calculando los bordes de la silueta y extruyéndolas lejos de la luz en un conjunto de volúmenes 3D. Estos volúmenes se representan dos veces en el búfer de galería de símbolos.

La primera representación dibuja polígonos orientados hacia delante e incrementa los valores del búfer de galería de símbolos. La segunda representación dibuja los polígonos orientados hacia atrás del volumen de sombras y disminuye los valores del búfer de galería de símbolos.

Normalmente, todos los valores incrementados y decrementados se cancelan entre sí. Sin embargo, la escena ya se ha representado con geometría normal, lo que hace que algunos píxeles produzcan un error en la prueba del búfer z cuando se represente el volumen de sombras. Los valores que quedan en el búfer de galería de símbolos corresponden a píxeles que están en la sombra. Estos contenidos restantes del búfer de galería de símbolos se usan como máscara, para mezclar alfa un cuadrante negro grande y abarcado en la escena. Con el búfer de galería de símbolos que actúa como máscara, el resultado es oscurecer píxeles que están en las sombras.

Esto significa que la geometría de sombra se dibuja dos veces por fuente de luz, por lo que presiona el rendimiento del vértice de la GPU. La característica de galería de símbolos de dos caras se ha diseñado para mitigar esta situación. En este enfoque, hay dos conjuntos de estados de galería de símbolos (denominados a continuación), uno establecido cada uno para los triángulos frontales y el otro para los triángulos orientados hacia atrás. De este modo, solo se dibuja un solo paso por volumen de sombras, por luz.

Leer el búfer de Depth-Stencil como una textura

Un sombreador puede leer un búfer de galería de símbolos de profundidad inactivo como textura. Una aplicación que lee un búfer de galería de símbolos de profundidad como textura se representa en dos pasos, el primer paso escribe en el búfer de galería de símbolos de profundidad y el segundo paso lee del búfer. Esto permite que un sombreador compare los valores de profundidad o galería de símbolos escritos previamente en el búfer con el valor del píxel que se representa de forma currrent. El resultado de la comparación se puede usar para crear efectos como la asignación de sombras o partículas suaves en un sistema de partículas.

Fase de fusión de salida (OM)

Canalización de gráficos

Fase de fusión de salida