Now3D 的个人资料Now3D Live照片日志列表 工具 帮助

日志


3月9日

N3D e le DirectX

Finalmente l'accelerazione Hardware!!!

Agognata da chiunque utilizzi un programma di grafica 3D, l'accelerazione Hardware ci da la possibilità di sfruttare le potenzialità della nostra Scheda Video.
Dopo tante richieste, l'appurata limitazione della grafica tramite GDI+ e la complessa implementazione del Framework 3.0, ho finalmente implementato una prima versione di accelerazione tramite le DirectX.
Ed ora passiamo alle tante novità di questa volta.
 

ScanLine

L'ultima volta vi descrissi la modalità Flat in ScanLine, adesso parliamo delle ultime modalità ScanLine implementate: Gouraud e Phong.
 
La modalità Gouraud a differenza della Flat effettua una interpolazione dei valori di intensità della luce che giunge ai vertici dei poligoni, è una modalità fino a poco tempo fa, usata molto nei Video Giochi (Vertex Shader).
 
La modalità Phong implementa una interpolazione a livello dei singoli pixel, è la modalità di rendering preferita da molti applicativi professionali, ed è anche la modalità sulla quale sono basati i video giochi di ultima generazione (Pixel Shader).
Per tutte e due le modalità ci sono enormi miglioramenti dei tempi d'elaborazione rispetto alla versione VB6 di Now3D. Per la modalità Gouraud miglioramenti del 600%, mentre per la Phong miglioramenti "solo" del 300%!
 
Aggiunta infine un'ultima modalità d'esportazione chiamata ZBuffer, utile per implementare (fra non molto) nuove caratteristiche in tempo reale non presenti nella versione VB6 di Now3D (es: Ombre e Profondità di Campo).
 
 

Le DirectX

A dire la verità iniziai provando ad implementare le OpenGL. Avevo capito come farlo, ed avevo trovato anche delle DLL x Dot.Net abbastanza semplici nell'uso. Ma, dopo settimane di test e poligoni che non si visualizzavano bene (la causa mi è ancora oscura), ho rinunciato.
Così, ho voluto dare retta a chi mi ha sempre consigliato di implementare le DirectX (vero MaxD? ).
Ho cercato su internet degli esempi di codice, ed ho iniziato a lavorarci.
Da subito ho notato una migliore risposta ai comandi dati via codice, ed anche una maggiore velocità rispetto alle OpenGL.
L'implementazione riguarda la classica modalità Gouraud, mentre per quanto riguarda la Phong (Pixel Shader) la vedo più difficile essendo questa modalità implementabile tramite dei shader scritti in un linguaggio poco pratico (simil assembly).
Ora veniamo al punto cruciale: i Tempi.
Ho notato subito che la scrittura dei poligoni a video tramite le DirectX è immediata, quello che continua a pesare di più è il motore di Now3D.
Con tutte le ottimizzazioni possibili, sono arrivato ai seguenti tempi:
(i test sono stati fatti utilizzando una NVidia 7600GT in modalità AA 4x)
Per quanto riguarda l'applicazione delle DirectX in Now3DPocket (Now3D per Palmare), ho già studiato il codice e lo implementerò sicuramente in un futuro non molto lontano.
 

I Materiali

Sto iniziando anche ad implementare le strutture principali sulle quali si baserà la gestione dei materiali. E' basata su classi ereditabili e con interfacce d'immediato utilizzo, così da renderla facilmente espandibile.
Tra i materiali di default che ho implementato ci sono: Phong, Anisotropico (Ashikhmin), Blinn-Oren Nayar, Glass.
Manca ancora tanto per arrivare alla stessa flessibilità della struttura a materiali e mappe di Now3D VB6, però con molta pazienza sarà implementato tutto e pure meglio.
 

Prima Demo!!!

Per concludere, vi invito a scaricare la prima demo riguardante Now3D.Net e le DirectX al seguente indirizzo: http://www.now3d.it/files/N3DInterface.exe.
Non aspettatevi però meraviglie, è solo una semplice demo per mostrare l'interazione tra il mouse e gli oggetti (passando sopra i cubi cambiano colore e cliccandoci sopra ruotano casualmente) e l'uso delle DirectX (provate a selezionare la casella di spunta: "DirectX").
Se avete qualche idea per abbellire la demo (senza esagerare con le pretese però ) scrivete pure un commento.
 
Alla prossima!
 
Giuliano Cornacchiola
  

Stato Attuale lavori

Caratteristica

% Stato avanzamento

Descrizione

Le Istanze

95% Gestione generica di Oggetti, Telecamere, Luci e molto altro, con la possibilità di condividere uno shape.

Le Azioni

40% Tipologia di oggetti utili a gestire gli input da parte dell'utente (mouse, tastiera e altro)  in azioni su altri oggetti.

Le Quaternion

30% Migliore controllo dell'orientamento di un oggetto.

Le Constraint

0%

 

Le Animazioni

5% Primi test di animazione.

Interfaccia

15%

 

Rendering Scanline

50% Modalità: Flat, Gouraud, Phong.

Materiali

25% Interfaccia standard per i Materiali le Mappe e i Filtri.

Accelerazione Hardware

50% Implementata la modalità Gouraud tramite le DirectX.

Formato file XML

30%

 

Rendering RayTracing

0%