notJustCode.it
 
\\ Home : Storico : DirectX9 (inverti l'ordine)
Di seguito gli interventi pubblicati in questa sezione, in ordine cronologico.

Di RobyDx (del 29/07/2007 @ 08:33:01, in DirectX9, linkato 1860 volte)

Nonostante la potenza dell'hardware aumenti di anno in anno sembra non sia mai sufficiente il numero di poligoni da renderizzare. Infatti anche se le moderne schede video promettono di gestire centinaia di milioni di poligoni al secondo, in realtà questo numero scende drasticamente senza oppurtune ottimizzazioni. Il problema si manifesta soprattutto quando occorre mandare a schermo tantissimi oggetti separatamente.

Una scena molto complessa viene di solito renderizzata con pochi passaggi cercando di raggruppare i poligoni in modo da fare meno rendering possibili. In genere il motore grafico raggruppa tutti gli elementi con le stesse caratteristiche, li fonde insieme ed effettua il draw di molti vertici contemporaneamente (tecnica di batching). Al contrario non è possibile renderizzare insieme poligoni dinamici perchè la posizione dei vertici cambia continuamente e di conseguenza o si modificano i vertici nel vertexbuffer per ogni frame o si fa il draw separatamente per ognuno. Entrambe le soluzioni uccidono il frame rate. Un simile problema era già stato riscontrato per i point sprite, i sistemi particellari. Occorreva renderizzare tante immagini, ad esempio delle scintille, e non si poteva fare il draw per centinaia o migliaia di sprite. DirectX introdusse quindi un sistema che permettesse di gestire tanti sprite semplicemente come un array di punti ottimizzando moltissimo le prestazioni.

Il geometry instancing è qualcosa di simile ma applicato a modelli interamente 3D. Attraverso il device è possibile caricare un modello 3D e moltiplicarlo sullo schermo dando ad ognuna di queste copie caratteristiche specifiche di posizione, colore o qualsiasi altra cosa vogliate; il tutto accellerato dall'hardware.

Unica nota dolente è che solo le schede video con tecnologia shader 3.0 implementano tale caratteristica e sarà quindi necessario aspettare ancora un pò prima di vedere tale tecnologia sfruttata appieno....

Vai all'articolo...

dividerMark
Di RobyDx (del 29/07/2007 @ 08:39:33, in DirectX9, linkato 2272 volte)

Il rendering delle ombre è sicuramente uno degli aspetti più complessi da analizzare. In attesa che directX gestisca in maniera automatica questo problema vi propongo un nuovo metodo, alternativo allo stencil: lo shadow mapping.

Il presupposto da cui partire è la definizione di ombra. Un ombra è una schermatura tra tutto quello che si trova tra la luce e l'oggetto. Lo shadow mapping si basa su questo: renderizzare su una texture quello che si trova tra la luce e l'oggetto. L'oggetto ombreggiato semplicemente userà questa texture per creare zone d'ombra....

Vai all'articolo...

dividerMark
Di RobyDx (del 29/07/2007 @ 08:45:25, in DirectX9, linkato 2068 volte)

Lo shadow mapping si basa su un concetto semplice ma geniale. Osservate l'immagine:

TSM_Desc

La scena viene renderizzata su una texture inquadrando la scena dalla telecamera. Il pixel shader restituisce per ogni pixel la sua distanza dalla luce. La matrice world_view_projection usata per renderizzare questa scena viene salvata ed utilizzata durante il rendering della scena. Moltiplicando la posizione del vertice per questa motrice si ottiene infatti la posizione del vertice come se fosse inquadrato dalla luce....

Vai all'articolo...

dividerMark
Di RobyDx (del 01/08/2007 @ 11:07:52, in DirectX9, linkato 1228 volte)

Come spiegato nei tutorial di base di Direct3D i triangoli vengono visualizzati solo se disegnari in senso orario. La cosa può essere cambiata (se ad esempio si usa una riflessione l'ordine dei punti viene invertito). Occorre usare la proprietà cullmode del device e cambiarla prima del rendering che vi interessa.

device.RenderState.CullMode = Cull.CounterClockwise

Visualizzazione normale di default

device.RenderState.CullMode =Cull.Clockwise

I triangoli sono visibili ma solo se in senso opposto(antiorario)

device.RenderState.CullMode =Cull.None

Non importa il verso della disposizione, i triangoli sono comunque visibili (ma aumenta il carico grafico per il Pc).

Cambiate a secondo di cosa vi serve.

dividerMark
Di RobyDx (del 01/08/2007 @ 11:08:45, in DirectX9, linkato 1248 volte)

Le figure sono normalmente viste come solidi con facce piene. Per creare alcuni simpatici effetti potete cambiare prima di ogni rendering come riempire le figure impostanto

device.RenderState.FillMode

Uguale ad uno di questi valori.

FillMode.Solid

Standard di default corrisponde a figure piene.

FillMode.Point

Si vedranno solo i vertici del solido

FillMode.WireFrame

Letteralmente "fil di ferro" permette di vedere solo le linee che compongono i triangoli.

dividerMark
Di RobyDx (del 01/08/2007 @ 11:10:28, in DirectX9, linkato 1731 volte)

Il viewport è un oggetto che se passato al device permette di specificare una zona dello schermo di cui rappresentare una scena. Tutta la grafica verrà disegnata all'interno della zona rettangolare specificata. Questo significa che la grafica 3D verrà rimpicciolita all'interno del rettangolo ma quella 2D (sprite e texture) dovrà essere proporzionate e posizionata per bene (altrimenti zone della grafica 2D verranno tagliate)....

Vai all'articolo...

dividerMark
Di RobyDx (del 02/08/2007 @ 08:30:18, in DirectX9, linkato 1535 volte)

La luce speculare è in pratica il riflesso metallico che alcuni oggetti emanano. L'esempio tipico è quello dell'auto che nonostante sia di un colore (ad esempio rosso) ha dei riflessi bianchi sotto la luce del sole. Impostare la luce speculare risulta quindi fondamentale per oggetti metallici (specie se unito ad altri effetti di riflessione dell'immagine).

specLight9

Esempio di teiera con specular light da sinistra a destra: effetto disattivato, con sharpness a 10, con sharpness a 25....

Vai all'articolo...

dividerMark
Di RobyDx (del 02/08/2007 @ 08:32:44, in DirectX9, linkato 1615 volte)

Può risultare utile a volte salvare le texture su file, specie se sono il risultato di un rendering su texture o di un trattamento particolare della stessa. Salvare una texture è molto semplice e non richiede la creazione di nessun oggetto....

Vai all'articolo...

dividerMark
Di RobyDx (del 02/08/2007 @ 08:34:22, in DirectX9, linkato 1170 volte)

Quante volte può essere utile salvare in una immagine lo schermo del vostro gioco (tipo le foto che si vedono sulle recensioni dei giochi sulle riviste)? Di sicuro molte volte. Potete quindi o usare i tasti (stamp+ctrl) e poi copiare sul paint (molti non conoscono questo banale trucco per copiare l'immagine corrente dello schermo) o meglio ancora agire in modo più professionale e cioè farlo fare a directX.

Basta semplicemente prendere il backbuffer (che è una superficie) e salvarla.

SurfaceLoader.Save(path, ImageFileFormat.Bmp, device.GetBackBuffer(0, 0, BackBufferType.Mono))

Basta una riga. Simpatico se dovete salvare la situazione di gioco con una immagine vicino!

dividerMark
Di RobyDx (del 02/08/2007 @ 08:35:27, in DirectX9, linkato 1338 volte)

Dovete caricare una texture ma volete prima conoscerne le caratteristiche? Esiste una semplice istruzione per questo

Dim info As ImageInformation
info = TextureLoader.ImageInformationFromFile(path)

Dove path contiene il percorso della immagine

Info ora contiene tutte le informazioni sulle immagini come larghezza, altezza, formato ecc...

dividerMark
Pagine: 1 2 3 4 5 6 7 8 9
"I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione."

Albert Einstein


Cerca per parola chiave
 

Titolo
Articoli (4)
C++ (4)
Direct3D10 (30)
Direct3D11 (20)
DirectX9 (82)
DotNet (10)
English (9)
FanGames (22)
ManagedDX11 (2)
Materiale Utile (4)
News (39)
Shader Library (12)
SharpDX (1)
Software (25)
Tecnologia (19)
Varie (9)

Gli interventi più cliccati

Ultimi commenti:
If you wish to retai...
23/05/2013 @ 13:07:45
Di chanel outlet
You deficit of self-...
23/05/2013 @ 13:07:13
Di cartier watches uk
Reinforce your own l...
23/05/2013 @ 13:06:37
Di replica watches
Whenever you"re shiv...
23/05/2013 @ 13:06:11
Di swiss replica watches
It's likely you have...
23/05/2013 @ 13:05:02
Di chanel handbags
Cheap automobile ins...
23/05/2013 @ 13:04:28
Di replica watches

Titolo
Con quale tecnologia state realizzando o avete intenzione di realizzare i vostri progetti?

 DirectX11
 DirectX10
 DirectX9
 XNA
 DirectX8 o Precedenti
 OpenGL
 Motori grafici già pronti
 Altro

Titolo
Umorismo (17)

Le fotografie più cliccate



Ci sono 98 persone collegate
Sono state visualizzate  pagine

19/04/2024 @ 07:49:59
script eseguito in 66 ms