Fase tassellatore (TS)
La fase Tessellator (TS) crea un modello di campionamento del dominio che rappresenta la patch geometrica e genera un set di oggetti più piccoli (triangoli, punti o linee) che collegano questi campioni.
Scopo e usi
Il diagramma seguente illustra le fasi della pipeline grafica Direct3D.
Il diagramma seguente illustra la progressione attraverso le fasi a mosaico.
La progressione inizia con la superficie di suddivisione a dettaglio ridotto. La progressione evidenzia poi la patch di input con la patch geometrica, i campioni di dominio e i triangoli corrispondenti che connettono questi campioni. La progressione evidenzia infine i vertici che corrispondono a questi campioni.
Il runtime Direct3D supporta tre fasi che implementano la tassellatura, che converte le superfici di suddivisione con dettaglio ridotto in primitive di dettaglio superiore nella GPU. La tassellatura modella (o scompone) le superfici di ordine elevato in strutture adatte al rendering.
Le fasi di tassellatura interagiscono per convertire le superfici di ordine superiore (che mantengono il modello semplice ed efficiente) in molti triangoli per il rendering dettagliato all'interno della pipeline grafica Direct3D.
La tassellatura usa la GPU per calcolare una superficie più dettagliata da una superficie costruita da patch quad, patch triangolari o isolinee. Per approssimare la superficie ordinata, ogni patch viene suddivisa in triangoli, punti o linee usando fattori di tassellatura. La pipeline grafica Direct3D implementa la tassellatura usando tre fasi della pipeline:
- Fase hull shader (HS) dello shader programmabile che produce una patch geometrica (e costanti patch) che corrispondono a ogni patch di input (quad, triangolari o linea).
- La fase a Mosaico (TS) Uno stadio di pipeline a funzione fissa crea un modello di campionamento del dominio che rappresenta la patch geometrica e genera un set di oggetti più piccoli (triangoli, punti o linee) che collegano questi campioni.
- Fase Domain Shader (DS):: la fase programmabile dello shader che calcola la posizione del vertice corrispondente a ogni esempio di dominio.
Implementando la tassellatura nell'hardware, una pipeline grafica può valutare i modelli di dettaglio inferiore (numero di poligoni inferiori) ed eseguire il rendering in dettaglio più elevato. Anche se la tassellatura software può essere eseguita, la tassellatura implementata dall'hardware può generare un'incredibile quantità di dettagli visivi (incluso il supporto per il mapping di spostamento) senza aggiungere i dettagli visivi alle dimensioni del modello e paralizzando le frequenze di aggiornamento.
Vantaggi della tassellatura:
- La tassellatura consente di risparmiare molta memoria e larghezza di banda, consentendo a un'applicazione di eseguire il rendering di superfici più dettagliate dai modelli a bassa risoluzione. La tecnica a mosaico implementata nella pipeline grafica Direct3D supporta anche il mapping di spostamento, che può produrre quantità straordinarie di dettagli sulla superficie.
- La tassellatura supporta tecniche di rendering scalabili, ad esempio livelli di dettaglio dipendenti continui o visualizzati, che possono essere calcolati in tempo reale.
- La tassellatura migliora le prestazioni eseguendo calcoli costosi a una frequenza inferiore (eseguendo calcoli su un modello con dettaglio inferiore). Questo potrebbe includere calcoli di fusione usando forme di fusione o destinazioni morph per animazioni realistiche o calcoli di fisica per il rilevamento delle collisioni o le dinamiche del corpo morbido.
La pipeline grafica Direct3D implementa la tassellatura nell'hardware, che carica il lavoro da una CPU all'altra. Ciò può portare a miglioramenti delle prestazioni molto elevati se un'applicazione implementa un numero elevato di destinazioni morphing e/o modelli di rivestimento/deformazione più sofisticati.
Il mosaico è una fase a funzione fissa inizializzata associando uno hull shader alla pipeline. (vedere Procedura: Inizializzare la fase di tassellatura). Lo scopo della fase a mosaico è suddividere un dominio (quad, triangolare o linea) in molti oggetti più piccoli (triangoli, punti o linee). Il mosaico modella un dominio canonico in un sistema di coordinate normalizzato (da zero a uno). Ad esempio, un dominio quad viene tassellato in un quadrato unitario.
Fasi nel livello Mosaico (TS)
La fase del mosaico (TS) opera in due fasi:
La prima fase elabora i fattori di tassellatura, risolvendo i problemi di arrotondamento, gestendo fattori molto piccoli, riducendo e combinando i fattori, usando l'aritmetica a virgola mobile a 32 bit.
La seconda fase genera elenchi di punti o topologie in base al tipo di partizionamento selezionato. Questa è l'attività principale della fase a mosaico e usa frazioni a 16 bit con aritmetica a virgola fissa. L'aritmetica a virgola fissa consente l'accelerazione hardware mantenendo la precisione accettabile. Ad esempio, data una patch larga 64 metri, questa precisione può posizionare punti a una risoluzione di 2 mm.
Tipo di partizionamento Intervallo Fractional_odd [1...63] Fractional_even Intervallo TessFactor: [2...64] Intero Intervallo TessFactor: [1...64] Pow2 Intervallo TessFactor: [1...64]
La tassellatura viene implementata con due fasi programmabili dello shader: hull shader e domain shader. Queste fasi dello shader sono programmate con codice HLSL definito nel modello di shader 5. Le destinazioni dello shader sono: hs_5_0 e ds_5_0. Il titolo crea lo shader, quindi il codice per l'hardware viene estratto dagli shader compilati passati al runtime quando gli shader sono associati alla pipeline.
Abilitazione/disabilitazione della tassellatura
Abilitare la tassellatura creando uno hull shader e associandolo alla fase hull-shader (in questo modo viene impostata automaticamente la fase di tassellatura). Per generare le posizioni dei vertici finali dalle patch a mosaico, è anche necessario creare uno domain shader e associarlo alla fase domain-shader. Una volta attivata la tassellatura, i dati in ingresso alla fase Input Assembler (IA) devono essere dati patch. La topologia dell'assemblaggio di input deve essere una topologia costante patch.
Per disabilitare la tassellatura, impostare hull shader e domain shader su NULL. Né la fase Geometry Shader (GS) Né la fase Stream Output (SO) sono in grado di leggere i punti di output di hull-shader o i dati delle patch.
Input
Il tassellatore funziona una volta per patch usando i fattori di tassellatura (che specificano con quale precisione verrà tassellato il dominio) e il tipo di partizionamento (che specifica l'algoritmo usato per suddividere una patch) che vengono passati dalla fase hull-shader.
Output
Il tassellatore restituisce le coordinate uv (e opzionalmente w) come pure la topologia della superficie nella fase domain-shader.
Argomenti correlati