Compartir a través de


Fase de fusión de salida (OM)

La fase fusión de salida (OM) combina varios tipos de datos de salida (valores del sombreador de píxeles, información de profundidad y galería de símbolos) con el contenido del destino de representación y los búferes de profundidad y galería de símbolos para generar el resultado final de la canalización.

Propósito y usos

La fase Fusión de salida (OM) es el paso final para determinar qué píxeles son visibles (con pruebas de galería de símbolos de profundidad) y combinar los colores de píxeles finales.

La fase OM genera el color final de píxel representado mediante una combinación de lo siguiente:

  • Estado de canalización
  • Los datos de píxeles generados por los sombreadores de píxeles
  • El contenido de los destinos de representación
  • Contenido de los búferes de profundidad y galería de símbolos.

Introducción a la combinación

La combinación combina uno o varios valores de píxeles para crear un color de píxel final. En el diagrama siguiente se muestra el proceso implicado en la combinación de datos de píxeles.

diagrama de cómo funciona la combinación de datos

Conceptualmente, puede visualizar este gráfico de flujo implementado dos veces en la fase fusión de salida: el primero combina datos RGB, mientras que en paralelo, un segundo combina datos alfa. Para ver cómo usar la API para crear y establecer el estado de combinación, consulte Configuración de la funcionalidad de fusión.

La combinación de funciones fijas se puede habilitar de forma independiente para cada destino de representación. Sin embargo, solo hay un conjunto de controles de mezcla, por lo que la misma combinación se aplica a todos los RenderTargets con la combinación habilitada. Los valores de Blend (incluido BlendFactor) siempre se fijan en el intervalo del formato de destino de representación antes de mezclarse. La fijación se realiza por destino de representación, respetando el tipo de destino de representación. La única excepción es para los formatos float16, float11 o float10 que no están abrazados para que las operaciones de mezcla en estos formatos se puedan realizar con al menos una precisión o un intervalo iguales como formato de salida. Los ceros y los ceros firmados de NaN se propagan para todos los casos (incluidos los pesos de mezcla de 0,0).

Cuando se usan destinos de representación de sRGB, el tiempo de ejecución convierte el color de destino de representación en un espacio lineal antes de realizar la fusión. El tiempo de ejecución vuelve a convertir el valor combinado final en espacio sRGB antes de guardar el valor en el destino de representación.

Combinación de colores de doble fuente

Esta característica permite que la fase fusión de salida use simultáneamente las salidas del sombreador de píxeles (o0 y o1) como entradas para una operación de combinación con el único destino de representación en la ranura 0. Entre las operaciones de combinación válidas se incluyen: agregar, restar y revsubtract. La ecuación de combinación y la máscara de escritura de salida especifican qué componentes genera el sombreador de píxeles. Se omiten los componentes adicionales.

Escribir en otras salidas del sombreador de píxeles (o2, o3 etcetera).) no está definida; es posible que no escriba en un destino de representación si no está enlazado a la ranura 0. Escribir oDepth es válido durante la combinación de color de origen dual.

Introducción a las pruebas de galería de símbolos de profundidad

Un búfer de galería de símbolos de profundidad, que se crea como un recurso de textura, puede contener datos de profundidad y datos de galería de símbolos. Los datos de profundidad se usan para determinar qué píxeles se encuentran más cerca de la cámara y los datos de la galería de símbolos se usan para enmascarar qué píxeles se pueden actualizar. En última instancia, la fase de fusión de salida usa los datos de valores de profundidad y galería de símbolos para determinar si se debe dibujar o no un píxel. En el diagrama siguiente se muestra conceptualmente cómo se realizan las pruebas de galería de símbolos de profundidad.

diagrama de cómo funcionan las pruebas de galería de símbolos de profundidad

Para configurar las pruebas de galería de símbolos de profundidad, consulte Configuración de la funcionalidad de galería de símbolos de profundidad. Un objeto de galería de símbolos de profundidad encapsula el estado de la galería de símbolos de profundidad. Una aplicación puede especificar el estado de la galería de símbolos de profundidad o la fase om usará valores predeterminados. Las operaciones de fusión se realizan por píxel si se deshabilita el muestreo múltiple. Si el muestreo múltiple está habilitado, la combinación se produce por cada ejemplo.

El proceso de usar el búfer de profundidad para determinar qué píxel se debe dibujar se denomina almacenamiento en búfer de profundidad, también denominado a veces z-buffering.

Una vez que los valores de profundidad alcanzan la fase de fusión de salida (ya sea procedente de la interpolación o de un sombreador de píxeles), siempre se fijan: z = min(Viewport.MaxDepth,max(Viewport.MinDepth,z)) según el formato o la precisión del búfer de profundidad, mediante reglas de punto flotante. Después de la fijación, se compara el valor de profundidad (mediante DepthFunc) con el valor de búfer de profundidad existente. Si no hay ningún búfer de profundidad enlazado, la prueba de profundidad siempre pasa.

Si no hay ningún componente de galería de símbolos en el formato de búfer de profundidad o sin límite de búfer de profundidad, la prueba de galería de símbolos siempre pasa.

Solo un búfer de profundidad/galería de símbolos puede estar activo a la vez; cualquier vista de recursos enlazada debe coincidir (el mismo tamaño y dimensiones) la vista de profundidad/galería de símbolos. Esto no significa que el tamaño del recurso debe coincidir, solo que el tamaño de la vista debe coincidir.

Introducción a la máscara de ejemplo

Una máscara de ejemplo es una máscara de cobertura multimuestra de 32 bits que determina qué muestras se actualizan en los destinos de representación activos. Solo se permite una máscara de ejemplo. Un usuario define la asignación de bits de una máscara de ejemplo a los ejemplos de un recurso. Para la representación de n muestras, se usan los primeros n bits (del LSB) de la máscara de ejemplo (32 bits es el número máximo de bits).

Entrada

La fase Fusión de salida (OM) genera el color de píxel representado final mediante una combinación de lo siguiente:

  • Estado de canalización
  • Los datos de píxeles generados por los sombreadores de píxeles
  • El contenido de los destinos de representación
  • Contenido de los búferes de profundidad y galería de símbolos.

Salida

Introducción a la máscara de escritura de salida

Use una máscara de escritura de salida para controlar (por componente) qué datos se pueden escribir en un destino de representación.

Introducción a varios destinos de representación

Un sombreador de píxeles se puede usar para representar en al menos 8 destinos de representación independientes, todos los cuales deben ser el mismo tipo (buffer, Texture1D, Texture1DArray, etc.). Además, todos los destinos de representación deben tener el mismo tamaño en todas las dimensiones (ancho, alto, profundidad, tamaño de matriz, recuentos de muestras). Cada destino de representación puede tener un formato de datos diferente.

Puede usar cualquier combinación de ranuras de destino de representación (hasta 8). Sin embargo, una vista de recursos no se puede enlazar a varias ranuras de destino de representación simultáneamente. Se puede reutilizar una vista siempre que los recursos no se usen simultáneamente.

En esta sección

Tema Descripción

Configuración de la funcionalidad de 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.

 

Canalización de gráficos