Di robydx (del 03/10/2007 @ 22:26:58, in Direct3D10, linkato 3898 volte)
La tecnica dello shadow volume è stata una dei più famosi utilizzi dello stencil buffer. Come si può capire dal nome, lo shadow volume permette di visualizzare le ombre all'interno della scena. La tecnica si basa su una semplice ma geniale intuizione. Prendiamo un oggetto, una ipotetica sfera.
L'oggetto avrà un cono d'ombra e tutti gli oggetti che si trovano al suo interno avranno su di loro l'ombra della sfera (che su un pavimento sarà un cerchio). Trasformiamo questo cono in una mesh e renderizziamo con cull normale (vedendo i lati esterni) e poi con cull invertito (vedendo i lati interni) sopra un piano che rappresenterò l'oggetto in ombra. ...
Di robydx (del 16/09/2007 @ 15:23:07, in Direct3D10, linkato 6889 volte)
Il Depth buffer è la superficie addetta alla gestione della profondità. Ogni pixel che sta per essere disegnato a video confronta la sua profondità restituisce un colore ed una profondità. Questo valore viene confrontato con il depth buffer, se minore sostituisce il valore e scrive il colore del pixel sul back buffer.
Normalmente il valore di distanza massima è 1 e passano questo controllo (chiamato depth test) solo i pixel con profondità minore (ricordo che la profondità è letta dopo che è stata applicata la projection matrix che la porta ad essere compresa tra 0 ed 1). In DirectX si può comunque variare questa regola ed utilizzare confronti diversi (ad esempio si può usare un uguaglianza in modo che il rendering successivo vada a video solo per distanze uguali a quelle già sullo schermo, utili per la tecnica chiamata ZOnly)....
Di robydx (del 30/08/2007 @ 20:45:54, in Direct3D10, linkato 3358 volte)
L’Output Stream è una delle nuove funzionalità di DirectX10, che insieme al Geometry Shader permette di trasportare la gestione dei vertici dalla CPU alla GPU.
L’Output Stream è l’equivalente del Rendering su Texture applicato però al vertex buffer. Quando si utilizza un Output Stream i vertici invece di essere mandati al pixel shader vengono inviati in questo buffer che provvede a conservare questi dati. Successivamente si potrà usare l’Output Stream come una normale mesh contenente tutto ciò che ci abbiamo renderizzato sopra.
L’utilizzo di questa tecnologia permette di accelerare il rendering in modo veramente incredibile. ...
Di RobyDx (del 16/08/2007 @ 12:58:40, in Direct3D10, linkato 3365 volte)
Detto anche Toon Mapping è una tecnica di rendering per simulare il disegno dei cartoni animati, caratterizzato dall'utilizzo di ombre nette e di contorni.
Il Cell shading è un algoritmo che si compone di due fasi
Il cell shading vero e proprio, ossia il rendering della scena con ombre nette
L'outline rendering, ossia il rendering dei contorni...
Di RobyDx (del 05/08/2007 @ 16:34:57, in Direct3D10, linkato 3975 volte)
Le cubemap sono particolari rappresentazioni di texture esistenti in DirectX ormai da molte versioni. Come dice il nome, una cubemap è una texture che contiene al sue interno 6 superfici quadrate disposte a cubo.
Il motivo per cui queste sono state create è sostanzialmente per simulare riflessioni dell'ambiente circostante gli oggetti (il cosidetto environment mapping). Come ripeto spesso nei miei tutorial, ogni volta che si renderizza un oggetto questo non può sapere cosa c'è intorno e l'unico modo per un oggetto di vedere ciò che c'è intorno a se è quello di renderizzare su una texture da utilizzare successivamente. ...
Di robydx (del 29/07/2007 @ 21:27:42, in Direct3D10, linkato 2501 volte)
Le tecniche di post processing sono tutti quegli effetti che si basano sull'utilizzo di texture che contengono il rendering della scena. Un esempio è il blur (la sfocatura dell'immagine). Tutta la scena viene renderizzata su una texture che poi viene applicata su un rettangolo e renderizzata con uno shader che restituisce per ogni pixel la media dei pixel circostante. Questo è possibile solo usando una texture contenente la scena in quanto è l'unico modo per poter leggere i pixel intorno a quello che stiamo per renderizzare.
Molte tecniche comunque si basano sulla necessità di avere molteplici rendering contemporaneamente. Non è difficile nei giochi moderni avere scene che necessitano di 2, 4 o anche più versioni della scena (ad esempio contenenti solo le normali, la distanza dalla telecamera etc). Utilizzando il render target su una singola texture è necessario ripetere il rendering tante volte quante sono le scene processando la geometria tante volte. Per ovviare a questo fin da DirectX9 è stato introdotto il rendering su multi texture, ossia la possibilità di renderizzare la scena su 4 texture contemporaneamente.
Questo avveniva utilizzando un pixel shader che restituisse 4 colori, anzichè 1, ognuno da riempire a seconda delle proprie necessità.
Direct3D10 non solo potenzia questo processo portando ad 8 il numero di render target da poter utilizzare contemporaneamente ma supera anche il limite che c'era in DirectX9. ...
Di robydx (del 15/07/2007 @ 20:12:39, in Direct3D10, linkato 3313 volte)
Una delle possibilità che DirectX offre ormai da molte versioni è la possibilità di effettuare il rendering di una scena su di una texture che possiamo poi utilizzare per altri scopi (un esempio è la possibilità di visualizzare una scena che contiene un monitor con all'interno un'altra scena).
La tecnologia di rendering sulle texture è diventata a partire dalla versione DirectX9 qualcosa di fondamentale per la computer grafica. Tramite il rendering sulle texture sono possibili effetti come riflessione e rifrazione delle superfici, post processing (ad esempio la profondità di campo) e tutta una serie di tecniche che fanno la differenza. Ad oggi non esiste prodotto che non fa uso di questa tecnologia.
In Direct3D10 il render to texture è stato reso molto più semplice e potente. Potrete infatti utilizzare fino ad 8 render target contemporaneamente ed indirizzare grafica differente ad ognuno di essi. In questo tutorial vi illustrerò come implementare una scena con un render target.
Di robydx (del 02/07/2007 @ 22:12:06, in Direct3D10, linkato 2702 volte)
Tutto ciò che appariva come funzionalità avanzata in DirectX9, appare come una funzionalità standard in DirectX10. Un esempio è il geometry instancing, una delle ultime funzionalità ad apparire in Direct3D9.
Tramite il geometry instancing possiamo caricare un soldato ed in un'unica istruzione di draw, mandarne a video migliaia di copie, ognuna con caratteristiche di posizione, colore o texture differenti l'uno dall'altro.
La cosa più interessante è la totale gestione in memoria video del processo, permettendo delle prestazioni impensabili normalmente. Infatti ogni volta che si esegue una istruzione di draw ci sono dati che passano dalla RAM alla scheda video o tra zone diverse di quest'ultima: sarà direttamente la GPU ad operare la moltiplicazione dei vertici e degli indici dell'oggetto....
Di robydx (del 26/06/2007 @ 00:04:57, in Direct3D10, linkato 2460 volte)
Una delle cose fondamentali utilizzando DirectX è il poter accedere alle risorse contenuti nei buffer. Ad esempio può essere necessario poter leggere i vertici contenuti nelle mesh e magari modificarli.
Direct3D10 ha modificato in maniera sostanziale la gestione della memoria creando delle regole che possono inizialmente creare dei problemi ma che alla fine diventano un ottimo sistema di gestione. Ogni risorsa infatti è creata in modo da poter essere letta o scritta solamente dalla GPU o dalla CPU. Questo ad esempio può significare che una certa risorsa può essere creata per poter essere letta dalla GPU (esempio una texture quando viene mandata a video) e scritta dalla CPU (per poter essere modificata), oppure il contrario, oppure essere gestita completamente solamente dalla GPU o solamente dalla CPU....