Di robydx (del 20/06/2007 @ 22:16:16, in Direct3D10, linkato 2541 volte)
Uno sprite è una immagine bidimensionale all'interno della scena, solitamente utilizzata per visualizzare menù (esempio la barra della vita nei giochi). In Direct3D lo sprite è un rettangolo 3D orientato permanentemente verso la telecamera e renderizzato in modo da superare depth test (il calcolo della profondità). Il risultato è un oggetto sempre in primo piano che dà l'aspetto di una immagine bidimensionale. La classe ID3DX10Sprite è un set di funzioni di utilità che gestiscono questo tipo di rendering. ...
Di robydx (del 28/05/2007 @ 20:54:54, in Direct3D10, linkato 1892 volte)
Normalmente ogni volta che DirectX effettua un rendering, aggiorna i pixel del backbuffer con quelli del nuovo oggetto. L'alphablending è una caratteristica di DirectX che permette invece di effettuare un' operazione di confronto tra il pixel che si sta per mandare a video e quello già presente sullo schermo. In questo modo si possono creare ad esempio effetti di trasparenza impostando l'alphablending in modo che l'oggetto che si sta renderizzando sia una media tra lo sfondo e l'oggetto.
Il colore finale dei pixel dell'oggetto che si sta renderizzando rispettano questa formula
Final Color = ObjectColor * SourceBlendFactor + PixelColor * DestinationBlendFactor
Dove ObjectColor è il colore dell'oggetto, PixelColor quello del backbuffer in quel punto (quindi ciò che è già stato renderizzato) mentre SourceBlendFactor e DestinationBlendFactor sono le impostazioni dell'alphablending. ...
Di robydx (del 20/05/2007 @ 19:44:48, in Direct3D10, linkato 1866 volte)
Il rastering è il processo che partendo dalla descrizione dei poligoni (in DirectX solo di tipo triangolare), genera a video i triangoli. Nei precedenti tutorial è già stato spiegato in teoria come funziona il processo: il vertex shader valorizza i vertici, il rasterizer calcola tutti i pixel necessari per riempire il triangolo e per ognuno di questi fa una media pesata tra i 3 vertici in base alla posizione mandando il risultato al pixel shader.
Su questo processo è possibile intervenire. A differenza di DirectX9, in DirectX10 tali settaggi vengono fatti da codice shader (anche se vi mostrerò come poterlo fare comunque da codice).
I settaggi vengono contenuti in una variabile RasterizerState nel codice HLSL e passati tramite l’istruzione SetRasterizerState all’interno del pass....
Di robydx (del 13/05/2007 @ 10:50:33, in Direct3D10, linkato 1758 volte)
Passiamo ora ad un nuovo modello di illuminazione, il Phong , quello di default per le vecchie DirectX (con la differenza però che noi calcoliamo tutto nel pixel shader evitando i difetti dell'interpolazione lineare ed ottenendo una qualità molto più elevata).
Il modello di illuminazione phong riprende il modello lambertian inserendo però l'effetto speculare (il bagliore delle auto è un esempio di specular).
La luce speculare dipende sia dall'oggetto, attraverso le normali, sia dalla posizione dell' osservatore.
Di robydx (del 07/05/2007 @ 20:05:36, in Direct3D10, linkato 1877 volte)
L’elemento più importante nel mondo visivo è la luce. Tutto ciò che noi vediamo dipende unicamente da questo fattore e per questo le luci sono l’elemento chiave di ogni rappresentazione visiva, dal disegno agli effetti speciali nei film.
Per prima cosa bisogna partire da un presupposto importante: la luce reale non può essere rappresentata, e forse non lo sarà mai. La luce è composta da infinite particelle che rimbalzano contro gli oggetti determinandone il colore. ...
Di RobyDx (del 27/04/2007 @ 12:06:18, in Direct3D10, linkato 3086 volte)
Un oggetto 3D in DirectX10 è formato principalmente da 2 buffer, il vertex buffer e l’index buffer. Essendo questi oggetti sempre in coppia la SDK ci fornisce un oggetto che li gestisce entrambi: la ID3DX10Mesh.
Una mesh incapsula il vertex e l’index buffer e ci permette di fare molte operazioni in modo più semplice. Per chi viene da DirectX9 c’è da dire che purtroppo molte funzioni utili sono state rimosse, forse perché ritenute troppo restrittive in vista del nuovo approccio completamente orientato agli shader....
Di RobyDx (del 16/04/2007 @ 21:41:01, in Direct3D10, linkato 1970 volte)
Il Geometry Shader è la novità più conosciuta e forse più importante di DirectX10. Questo nuovo tipo di Shader si posiziona tra il Vertex Shader ed il Pixel Shader.
La pipeline di DirectX10 esegue questi step:
ogni vertice viene passato al Vertex Shader che restituisce il vertice trasformato
i vertici vengono raggruppati in primitive e passati al Geometry Shader che restituisce la primitiva trasformata
DirectX10 prende la primitiva e per ogni Pixel contenuta in essa calcola il valore interpolato da passare al Pixel Shader (operazione di Rastering)
Il Pixel Shader prende il valore dal rastering e restituisce il colore finale
Il colore viene confrontato con quello già presente ed il risultato viene stampato sul target...
In DirectX10 è possibile utilizzare la texture sia direttamente, cosa non possibile prima, che tramite i sample. La sintassi è molto cambiata quindi conviene leggere di seguito. ...
Di robydx (del 01/04/2007 @ 12:03:14, in Direct3D10, linkato 2147 volte)
DirectX memorizza tutte le sue risorse in buffer di memoria. Abbiamo già visto alcuni tipi di risorsa, come i vertex buffer.
Un tipo ormai fondamentale di risorsa è la texture. Una texture è una risorsa adibita alla gestione di immagini che sono utilizzate come rivestimento per il modello 3D. L’utilità è abbastanza ovvia. Per simulare la forma di un oggetto servono triangoli e se di dovesse rappresentare come triangoli ogni singolo dettaglio di un oggetto ne servirebbero troppi anche per una scheda DirectX10. Per questo si tende a rappresentare molti dei dettagli che non necessitano di uno spessore su di una immagine bitmap che viene avvolta attorno all’oggetto. Così un nostro ipotetico serpente non avrà le squame poligonali ma sarà un tubo con la foto della pelle applicata al modello. ...