fase Input-Assembler
L'API Direct3D 10 e superiore separa le aree funzionali della pipeline in fasi; la prima fase della pipeline è la fase input-assembler (IA).
Lo scopo della fase input-assembler è leggere i dati primitivi (punti, linee e/o triangoli) dai buffer riempiti dall'utente e assemblare i dati in primitive che verranno usate dalle altre fasi della pipeline. La fase IA può assemblare vertici in diversi tipi primitivi (ad esempio elenchi di linee, strisce di triangoli o primitive con adiacenza). Sono stati aggiunti nuovi tipi primitivi (ad esempio un elenco di linee con adiacenza o un elenco di triangoli con adiacenza) per supportare lo shader geometry.
Le informazioni sull'adiacenza sono visibili a un'applicazione solo in uno shader geometry. Se un geometry shader è stato richiamato con un triangolo che include l'adiacenza, ad esempio, i dati di input contengono 3 vertici per ogni triangolo e 3 vertici per i dati di adiacenza per triangolo.
Quando viene richiesta la fase input-assembler per i dati di adiacenza di output, i dati di input devono includere dati di adiacenza. Ciò può richiedere la fornitura di un vertice fittizio (formando un triangolo degenerato) o forse contrassegnando in uno degli attributi del vertice se il vertice esiste o meno. Questa operazione deve essere rilevata e gestita anche da uno shader geometry, anche se lo scellino di geometria degenerata si verificherà nella fase di rasterizzazione.
Durante l'assemblaggio di primitive, uno scopo secondario dell'IA è associare valori generati dal sistema per rendere gli shader più efficienti. I valori generati dal sistema sono stringhe di testo denominate anche semantica. Tutte e tre le fasi dello shader vengono costruite da un core dello shader comune e il core dello shader usa valori generati dal sistema (ad esempio un ID primitivo, un ID istanza o un ID vertice) in modo che una fase dello shader possa ridurre l'elaborazione solo a quelle primitive, istanze o vertici che non sono già stati elaborati.
Come illustrato nel diagramma a blocchi della pipeline , una volta che la fase IA legge i dati dalla memoria (assembla i dati in primitive e collega i valori generati dal sistema), i dati vengono restituiti alla fase del vertex shader .
In questa sezione
Argomento | Descrizione |
---|---|
Introduzione alla fase di Input-Assembler |
Per inizializzare la fase di input-assembler (IA) sono necessari alcuni passaggi. Ad esempio, è necessario creare risorse del buffer con i dati dei vertici necessari per la pipeline, indicare alla fase IA dove si trovano i buffer e il tipo di dati che contengono e specificare il tipo di primitive da assemblare dai dati. |
topologie primitive |
Direct3D 10 e versioni successive supporta diversi tipi primitivi (o topologie) rappresentati dal tipo enumerato D3D_PRIMITIVE_TOPOLOGY. Questi tipi definiscono il modo in cui i vertici vengono interpretati e sottoposti a rendering dalla pipeline. |
Uso della fase di Input-Assembler senza buffer |
La creazione e l'associazione di buffer non è necessaria se gli shader non richiedono buffer. Questa sezione contiene un esempio di vertex semplice e pixel shader che disegnano un singolo triangolo. |
uso di valori System-Generated |
I valori generati dal sistema vengono generati dalla fase IA (in base all'input fornito dall'utente semantica) per consentire determinate efficienze nelle operazioni shader. |
Argomenti correlati
-
fasi della pipeline (Direct3D 10)