Indice dei contenuti
Lo Shader Model 5 introduce molti nuovi stadi, stages, nella pipeline grafica e programmabile, come mostrato nel diagramma qui sotto.
Questo stadio è responsabile per la preparazione dell'input della geometria perché sia disponibile per il Vertex Shader.
Innanzitutto la geometria deve fornire una struttura, layout, che indica come i vertici sono disposti nella memoria (formato, dimensione, semantica).
Quindi creiamo un Layout di Input per far combaciare l'Input del Vertex Shader e della Geometria. L'Input Assembler raccoglierà quindi i dati per inviarli al Vertex Shader.
Come nelle precedenti versioni DirectX, Vertex Shader consente di modificare i vertici.
Tenete presenti due cose:
Questo stadio rappresenta la prima parte del processo di tassellatura, tessellation.
I dati ricevuti dal Vertex Shader come punti di controllo (patches), che è possibile modificare nello Hull Shader.
Deve inoltre essere fornita una Funzione Costante dello Hull Shader, Hull Shader Constant Function, che fornirà i fattori di tessellation (quanto tasselliamo la geometria di input).
Questo stadio non è programmabile, la tassellatura hardware suddividerà la geometria secondo i punti di controllo ed i fattori di tessellation.
In questo stadio vengono processati i dati della tassellatura.
A seconda del tipo di tassellatura richiesta, verranno ricevuti differenti tipi di dati, ma tutti nella forma di coordinate baricentriche.
A questo punto è possibile processare ciascuno nuovo vertice generato nel modo che preferiamo (attraverso il displacement, ad esempio).
Questo shader consente di modificare la geometria completamente.
Invece che ricevere singoli vertici come negli altri stadi, qui si riceve un primitivo unico, fully assembled, costituito da vertici che ne descrivono punti, linee e triangoli. In output possiamo avere uno qualsiasi di questi tipi di dati (tristrip, linestrip, pointlist) e su cui è possibile operare su qualsiasi tipo di dato (solo un per volta, ma è possibile generare molti o nessuno di quei tipi).
Questo stadio è opzionale, e può essere eseguito dopo gli stadi Vertex\Domain o Geometry.
Stream Output consente di fare direttamente l'output dei vertici\primitivi modificati in un nuovo buffer, che può essere riusato in seguito.
Questo stadio è controllato dallo stadio Rasterizer. La rasterizzazione riceve il primitivo e lo prepara per il Pixel Shader (culling, clipping, depth test).
Qui le cose funzionano come in precedenza: è possibile processare ogni pixel che ce la fa ad arrivare sullo schermo.
Tenete presente che in Shader Model 5 è possibile anche per il Pixel Shader scrivere in un buffer.
La Pipeline di vvvv è stata adattata in certi modi per poter lavorare con le nuove caratteristiche di DirectX 11.
Non è più presente la Mesh di DirectX9, che è stata sostituita da una fatta appositamente e più flessibile. L'Index Buffer non è più obbligatorio, e la topologia delle geometria può essere una qualsiasi consentita dalla pipeline, il che significa poter inviare anche punti e linee ad uno shader.
Ora inoltre è possibile unire un Drawer alla geometria. Di default, uniamo un "drawer default", che disegnerà gli oggetti nella stessa maniera cui eravamo abituati con DX9.
Questo drawer può essere modificato (questo NON modifica la geometria) per poter usare tecniche avanzate (Instancing, Indirect drawing, Per Vertex...)
Anche il sistema Layer è stato modificato. In un'altra pagina verranno forniti maggiori dettagli, ma per sommi capi:
Anche il nodo shader funziona in modo differente:
anonymous user login
~4h ago
~6d ago
~6d ago
~7d ago
~21d ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago