Compartir a través de


Fase del sombreador de casco (HS)

La fase del sombreador de casco (HS) es una de las fases de teselación, que divide eficazmente una sola superficie de un modelo en muchos triángulos. La fase del sombreador de casco (HS) 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). Un sombreador de casco se invoca una vez por revisión y transforma los puntos de control de entrada que definen una superficie de orden bajo en puntos de control que componen una revisión. También realiza algunos cálculos por revisión para proporcionar datos para la fase de teselador (TS) y la fase del sombreador de dominio (DS).

Propósito y usos

diagrama de la fase del sombreador de casco

Las tres 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. Las fases de teselación incluyen la fase del sombreador de casco (HS), la fase de teselador (TS) y la fase del sombreador de dominio (DS).

La fase de sombreador de casco (HS) es una fase de sombreador programable. Un sombreador de casco se implementa con una función HLSL.

Un sombreador de casco funciona en dos fases: una fase de punto de control y una fase de constante de revisión, que el hardware ejecuta en paralelo. El compilador HLSL extrae el paralelismo en un sombreador de casco y lo codifica en código de bytes que controla el hardware.

  • La fase de punto de control funciona una vez para cada punto de control, leyendo los puntos de control de una revisión y generando un punto de control de salida (identificado por un ControlPointID).
  • La fase de constante de revisión funciona una vez por revisión para generar factores de teselación de borde y otras constantes por revisión. Internamente, muchas fases de constante de revisión se pueden ejecutar al mismo tiempo. La fase de constante de revisión tiene acceso de solo lectura a todos los puntos de control de entrada y salida.

Entrada

Entre 1 y 32 puntos de control de entrada, que definen una superficie de bajo orden.

  • El sombreador de casco declara el estado requerido por la fase de Tessellator (TS). Esto incluye información como el número de puntos de control, el tipo de cara de revisión y el tipo de creación de particiones que se van a usar al teselar. Esta información aparece como declaraciones normalmente en la parte frontal del código del sombreador.
  • Los factores de teselación determinan cuánto subdividir cada parche.

Salida

Entre 1 y 32 puntos de control de salida, que juntos componen una revisión.

  • La salida del sombreador está entre 1 y 32 puntos de control, independientemente del número de factores de teselación. La fase de sombreador de dominio puede consumir la salida de puntos de control de un sombreador de casco. Un sombreador de dominio puede consumir datos constantes de revisión. Los factores de teselación pueden ser consumidos por la fase de teselador (TS) y la fase de sombreador de dominio (DS).
  • Si el sombreador de casco establece cualquier factor de teselación de borde en ≤ 0 o NaN, la revisión se seleccionará (se omitirá). Como resultado, la fase del teselador puede o no ejecutarse, el sombreador de dominio no se ejecutará y no se generará ninguna salida visible para esa revisión.

Ejemplo

[patchsize(12)]
[patchconstantfunc(MyPatchConstantFunc)]
MyOutPoint main(uint Id : SV_ControlPointID,
     InputPatch<MyInPoint, 12> InPts)
{
     MyOutPoint result;
     
     ...
     
     result = TransformControlPoint( InPts[Id] );

     return result;
}

Vea Cómo: Crear un sombreador de casco.

Canalización de gráficos