Condividi tramite


Fase input-assembler

L'API Direct3D 10 e versioni successive separa le aree funzionali della pipeline in fasi; la prima fase della pipeline è la fase input-assembler (IA).

Lo scopo della fase dell'assembler di input è leggere i dati primitivi (punti, linee e/o triangoli) dai buffer compilati 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 incluso l'adiacenza, ad esempio, i dati di input conterranno 3 vertici per ogni triangolo e 3 vertici per i dati di adiacenza per ogni triangolo.

Quando viene richiesta la fase input-assembler per l'output dei dati di adiacenza, 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 uno degli attributi dei vertici, indipendentemente dal fatto che il vertice esista o meno. Questa operazione deve anche essere rilevata e gestita da uno shader geometry, anche se il culling di geometria degenerata avverrà nella fase di rasterizzazione.

Durante l'assemblaggio di primitive, lo scopo secondario dell'IA è quello di allegare 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, dopo 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 nella fase vertex shader.

Contenuto della sezione

Argomento Descrizione
Introduzione con la fase di Input-Assembler
Per inizializzare la fase input-assembler (IA) sono necessari alcuni passaggi. Ad esempio, è necessario creare risorse del buffer con i dati dei vertici necessari alla 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 semplici vertex shader e pixel shader che disegnano un singolo triangolo.
Uso dei valori di System-Generated
I valori generati dal sistema vengono generati dalla fase IA (basata sulla semantica di input fornita dall'utente) per consentire determinate efficienze nelle operazioni shader.

Pipeline grafica

Fasi della pipeline (Direct3D 10)