Compartir a través de


Fase de Tessellator (TS)

La fase de Tessellator (TS) crea un patrón de muestreo del dominio que representa la revisión de geometría y genera un conjunto de objetos más pequeños (triángulos, puntos o líneas) que conectan estos ejemplos.

Propósito y usos

En el diagrama siguiente se resaltan las fases de la canalización de gráficos direct3D.

diagrama de la canalización direct3d 11 que resalta las fases de sombreador de casco, teselador y sombreador de dominio

En el diagrama siguiente se muestra la progresión a través de las fases de teselación.

diagrama de progresión de teselación

La progresión comienza con la superficie de subdivisión de bajo detalle. La progresión resalta a continuación la revisión de entrada con la revisión de geometría, los ejemplos de dominio y los triángulos correspondientes que conectan estos ejemplos. La progresión finalmente resalta los vértices que corresponden a estas muestras.

El entorno de ejecución de Direct3D admite tres fases que implementan teselación, que convierte superficies de subdivisión de bajo detalle en primitivos de mayor detalle en la GPU. Mosaicos de teselación (o divide) superficies de orden alto en estructuras adecuadas para la representación.

Las fases de teselación funcionan conjuntamente para convertir superficies de orden superior (que mantienen el modelo sencillo y eficaz) en muchos triángulos para la representación detallada dentro de la canalización de gráficos direct3D.

La teselación usa la GPU para calcular una superficie más detallada a partir de una superficie construida a partir de revisiones cuádruples, revisiones de triángulos o isolíneas. Para aproximarse a la superficie ordenada de alto nivel, cada parche se subdivide en triángulos, puntos o líneas mediante factores de teselación. La canalización de gráficos de Direct3D implementa la teselación mediante tres fases de canalización:

  • Fase del sombreador de casco (HS): una fase de sombreador programable que genera una revisión de geometría (y constantes de revisión) que corresponden a cada revisión de entrada (quad, triángulo o línea).
  • Fase de Tessellator (TS): una fase de canalización de función fija que crea un patrón de muestreo del dominio que representa la revisión de geometría y genera un conjunto de objetos más pequeños (triángulos, puntos o líneas) que conectan estas muestras.
  • Fase del sombreador de dominio (DS): una fase de sombreador programable que calcula la posición del vértice que corresponde a cada muestra de dominio.

Mediante la implementación de teselación en hardware, una canalización de gráficos puede evaluar modelos de menor detalle (recuento de polígonos inferiores) y representarlos con mayor detalle. Aunque la teselación de software se puede realizar, la teselación implementada por hardware puede generar una cantidad increíble de detalles visuales (incluida la compatibilidad con la asignación de desplazamiento) sin agregar los detalles visuales a los tamaños del modelo y paralización de las tasas de actualización.

Ventajas de la teselación:

  • La teselación ahorra mucha memoria y ancho de banda, lo que permite a una aplicación representar superficies más detalladas a partir de modelos de baja resolución. La técnica de teselación implementada en la canalización de gráficos direct3D también admite la asignación de desplazamiento, lo que puede producir impresionantes cantidades de detalles de la superficie.
  • La teselación admite técnicas de representación escalable, como niveles de detalle dependientes de vista o continuos, que se pueden calcular sobre la marcha.
  • La teselación mejora el rendimiento realizando cálculos costosos con menor frecuencia (realizando cálculos en un modelo de detalle inferior). Esto podría incluir la combinación de cálculos mediante formas de mezcla o objetivos de transformación para cálculos realistas de animación o física para la detección de colisiones o dinámicas corporales suaves.

La canalización de gráficos de Direct3D implementa la teselación en hardware, lo que desactiva el trabajo de la CPU a la GPU. Esto puede dar lugar a mejoras de rendimiento muy grandes si una aplicación implementa un gran número de destinos de morfo o modelos de deformación o skinning más sofisticados.

El teselador es una fase de función fija inicializada mediante el enlace de un sombreador de casco a la canalización. (consulte Cómo: Inicializar la fase de teselador). El propósito de la fase de teselador es subdividir un dominio (quad, tri o línea) en muchos objetos más pequeños (triángulos, puntos o líneas). El teselador teselator mosaico un dominio canónico en un sistema de coordenadas normalizado (cero a uno). Por ejemplo, un dominio cuadrático se tesela en un cuadrado de unidad.

Fases en la fase de Tessellator (TS)

La fase de Tessellator (TS) funciona en dos fases:

  • La primera fase procesa los factores de teselación, solucionando problemas de redondeo, controlando factores muy pequeños, reduciendo y combinando factores, utilizando aritmética de punto flotante de 32 bits.

  • La segunda fase genera listas de puntos o topologías en función del tipo de creación de particiones seleccionada. Esta es la tarea principal de la fase de teselador y usa fracciones de 16 bits con aritmética de punto fijo. La aritmética de punto fijo permite la aceleración de hardware al tiempo que mantiene una precisión aceptable. Por ejemplo, dada una revisión de 64 metros de ancho, esta precisión puede colocar puntos en una resolución de 2 mm.

    Tipo de creación de particiones Intervalo
    Fractional_odd [1...63]
    Fractional_even Rango de TessFactor: [2..64]
    Entero Intervalo de TessFactor: [1..64]
    Pow2 Intervalo de TessFactor: [1..64]

     

La teselación se implementa con dos fases de sombreador programables: un sombreador de casco y un sombreador de dominio. Estas fases del sombreador se programan con código HLSL definido en el modelo de sombreador 5. Los destinos del sombreador son: hs_5_0 y ds_5_0. El título crea el sombreador y, a continuación, el código del hardware se extrae de los sombreadores compilados pasados al tiempo de ejecución cuando los sombreadores están enlazados a la canalización.

Habilitación o deshabilitación de teselación

Habilite la teselación mediante la creación de un sombreador de casco y el enlace a la fase del sombreador de casco (esto configura automáticamente la fase de teselador). Para generar las posiciones finales del vértice a partir de las revisiones teseladas, también deberá crear un sombreador de dominio y enlazarlo a la fase del sombreador de dominio. Una vez habilitada la teselación, la entrada de datos a la fase ensamblador de entrada (IA) debe ser datos de revisión. La topología del ensamblador de entrada debe ser una topología constante de revisión.

Para deshabilitar la teselación, establezca el sombreador de casco y el sombreador de dominio en NULL. Ni la fase del sombreador de geometría (GS) ni la fase de salida de flujo (SO) pueden leer los puntos de control de salida del sombreador de casco o los datos de revisión.

Entrada

El teselador funciona una vez por revisión mediante los factores de teselación (que especifican la precisión de la teselación del dominio) y el tipo de creación de particiones (que especifica el algoritmo utilizado para segmentar una revisión) que se pasan desde la fase del sombreador de casco.

Salida

El tesellador genera coordenadas uv (y opcionalmente w) y la topología expuesta a la fase del sombreador de dominio.

Canalización de gráficos