Fase de fusión de salida (OM)

La fase Fusión de salida (OM) combina varios tipos de datos de salida (valores de 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/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 último paso 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 de píxel representado final mediante una combinación de lo siguiente:

  • Estado de canalización
  • 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/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 mezcla, 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 combinar. 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 fijados para que las operaciones de mezcla en estos formatos se puedan realizar con al menos una precisión o intervalo iguales como formato de salida. Los ceros con signo y 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 convierte el valor combinado final en espacio sRGB antes de guardar el valor de nuevo en el destino de representación.

Combinación de colores de origen dual

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

La escritura en otras salidas del sombreador de píxeles (o2, o3, etc.) no está definida; es posible que no escriba en un destino de representación si no está enlazado a la ranura 0. La escritura de oDepth es válida 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 los píxeles que 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 funciona la prueba de galería de símbolos de profundidad

Para configurar las pruebas de galería de símbolos de profundidad, consulte Configuración de Depth-Stencil Funcionalidad. 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 galería de símbolos de profundidad o la fase om usará valores predeterminados. Las operaciones de mezcla se realizan por píxel si el muestreo múltiple está deshabilitado. Si el muestreo múltiple está habilitado, la combinación se produce por multimuestra.

El proceso de uso del 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 llegan a 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 y 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 del búfer de profundidad existente. Si no hay ningún búfer de profundidad enlazado, la prueba de profundidad siempre se supera.

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 supera.

Solo se puede activar un búfer de profundidad/galería de símbolos a la vez; cualquier vista de recursos enlazada debe coincidir (el mismo tamaño y dimensiones) la vista de profundidad y 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 muestra (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
  • 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/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

Se puede usar un sombreador de píxeles para representar como mínimo 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 destinos 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. Una vista se puede reutilizar siempre que los recursos no se usen simultáneamente.

En esta sección

Tema Descripción

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.

 

Canalización de gráficos