Compartir a través de


Fase del sombreador de dominios (DS)

La fase del sombreador de dominio (DS) calcula la posición del vértice de un punto subdividido en la revisión de salida; calcula la posición del vértice que corresponde a cada ejemplo de dominio. Un sombreador de dominio se ejecuta una vez por punto de salida de fase de teselador y tiene acceso de solo lectura a las constantes de revisión de salida del sombreador de casco y de revisión de salida, y las coordenadas UV de la fase de teselador.

Propósito y usos

La fase del sombreador de dominio (DS) genera la posición del vértice de un punto subdividido en la revisión de salida, en función de la entrada de la fase sombreador de casco (HS) y la fase de teselador (TS).

diagrama de la fase del sombreador de dominio

Entrada

  • Un sombreador de dominio consume puntos de control de salida de la fase Sombreador de casco (HS). Las salidas del sombreador de casco incluyen:
    • Puntos de control.
    • Revisión de datos constantes.
    • Factores de teselación. Los factores de teselación pueden incluir los valores utilizados por el teselador de función fija, así como los valores sin procesar (antes de redondear por teselación de enteros, por ejemplo), lo que facilita la geomorfización, por ejemplo.
  • Se invoca un sombreador de dominio una vez por coordenada de salida desde la fase de Tessellator (TS).

Salida

  • La fase Del sombreador de dominio (DS) genera la posición del vértice de un punto subdividido en la revisión de salida.

Una vez completado el sombreador de dominio, la teselación finaliza y los datos de canalización continúan hasta la siguiente fase de canalización, como la fase sombreador de geometría (GS) y la fase sombreador de píxeles (PS). Un sombreador de geometría que espera primitivos con adyacencia (por ejemplo, 6 vértices por triángulo) no es válido cuando la teselación está activa (esto da como resultado un comportamiento indefinido, que la capa de depuración se quejará).

Ejemplo

void main( out    MyDSOutput result, 
           float2 myInputUV : SV_DomainPoint, 
           MyDSInput DSInputs,
           OutputPatch<MyOutPoint, 12> ControlPts, 
           MyTessFactors tessFactors)
{
     ...

     result.Position = EvaluateSurfaceUV(ControlPoints, myInputUV);
}

Canalización de gráficos