corso di elementi di grafica digitale prof. matjaz hmeljak anno accademico 2008/2009 presentazione...
TRANSCRIPT
![Page 1: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/1.jpg)
Corso di “Elementi di Grafica Digitale”Prof. Matjaz HmeljakAnno Accademico 2008/2009
Presentazione diMaicol Petozzi
![Page 2: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/2.jpg)
DirectX è un set multimediale di API per lo sviluppo semplificato di videogiochi per Windows
I componenti delle librerie DirectX sono disponibili al programmatore come oggetti corrispondenti alle specifiche COM (Component Object Model)
Versioni attuali: Windows XP e precedenti: DirectX 9.0C Windows Vista: DirectX 10 (WGF 2.0) / DirectX 9.0L (WGF
1.0)
![Page 3: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/3.jpg)
Nel 1994-95 Microsoft è sul punto di rilasciare un nuovo SO Windows 95
(con qualche problema per il futuro del suo prodotto...)
DOSPermette l’accesso diretto alla schede video, tastiera, mouse, periferiche audio e a tutte le altre parti del SO.
Windows 95Con il concetto di plug-and-play, limita l’accesso a tutti i dispositivi lavorando su un modello più standardizzato.
Il DOS sarebbe stato considerato come migliore piattaforma per la programmazione di videogiochi,
limitando il successo di Win95
Risultato:HW
DOS APP
HW
WIN
APP
![Page 4: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/4.jpg)
1. Fine ’94: Microsoft inizia lo sviluppo da zero di un API grafica
2. Febbraio ’95: decide di acquisire British 3D RenderMorphics e la sua API
3. Settembre ‘95: risviluppa l’API acquisita e rilascia la prima versione delle DirectX (con il nome di Windows Games SDK)
1994 1995 1996(2)(1) (3)
Struttura a livelli per la grafica di Windows 95 alla sua uscita
Struttura a livelli per la grafica di Windows 95 con l’introduzione di WG SDK
![Page 5: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/5.jpg)
OpenGL (Open Graphics Library) è una specifica che definisce un API per più linguaggi e piattaforme per scrivere applicazioni che producono computer grafica 2D e 3D
OpenGL ha un ampio ventaglio di capacità: Sviluppo di videogiochi, applicazioni CAD, CAE e realtà
virtuali Ambiente Unix:
Standard di fatto per la computer grafica 3D Retrocompatibile
![Page 6: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/6.jpg)
OpenGL garantisce due aspetti importanti:
OpenGL è un API procedurale a basso livello Richiede al programmatore i passi precisi per disegnare
una scena▪ Al contrario, API descrittive ad alto livello richiedono una
descrizione generica della scena
Nascondere la complessità di interfacciamento con acceleratori 3D differenti
Offrendo al programmatore un API unica ed uniforme
Nascondere le capacità offerte dai diversi acceleratori 3D
Richiedendo che tutte le implementazioni supportino completamente l'insieme di funzioni
![Page 7: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/7.jpg)
OpenGL viene arricchito dal vari pacchetti, che contengono librerie per fornire differenti funzionalità: GLU (GL Utility) contiene funzioni di più alto livello, utili ad
esempio per la creazione di sfere o altri oggetti complessi o per impostare particolari matrici di proiezione e per facilitare alcune operazioni al programma client
GLUT (GL Utility Toolkit) si tratta di un toolkit che permette di scrivere programmi completi nascondendo le differenze di implementazione tra i gestori finestre dei vari sistemi operativi. Non viene usata a livello professionale
GLUI (GL User Interface) è una libreria per l’interfaccia grafica, basata su GLUT, che fornisce controlli come buttons, checkboxes, radio buttons e spinners alle applicazioni OpenGL
![Page 8: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/8.jpg)
IRIS GL di Silicon Graphics (SGI) Predecessore di OpenGL Inizialmente nata come libreria grafica 2D Evoluta poi in grafica 3D Utilizzata su HW dedicato (IRIS graphics workstations)
Tentativo di espansione nel mercato:
HW dedicato(IRIS graphics workstation)
HW generico(Altre piattaforme HW )
Problemi passaggio
Nasce OpenGL, risultato degli sforzi di SGI per incrementare la portabilità di IRIS GL
Risultato
![Page 9: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/9.jpg)
Il nuovo linguaggio offre: Potenzialità di (IRIS) GL Potenzialità di essere “Open”
OpenGL Versione 1.0, 1 Giugno 1992
Con lo scopo di definire e promuovere lo standard nasce l’ARB (Architecture Review Board) Composto inizialmente da: SGI, Digital Equipment
Corporation, IBM, Intel, Microsoft Successivamente altre aziende si uniscono all’ARB SGI controllava comunque le licenze OpenGL
Adattabile a diverso HW e OS
![Page 10: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/10.jpg)
giugno1992
OpenGL 1.0/1
DirectX 1.0
settembre
1995
DirectX 2.0 giugno
1996
2.0a DirectX
3.0 settembr
e1996
3.0a 3.0b
DirectX 4.0
DirectX 5.0 luglio
1997
marzo1998 1.2
5.2 maggio1998
DirectX 6.0 agosto
1998
ottobre1998 1.2.1
6.1 febbraio1999
6.1a DirectX
7.0 settembr
e1999
7.0a
7.1 settembr
e1999
DirectX 8.0
novembre2000
agosto2001 1.38.0a
8.1 novembr
e20018.1a 8.1b 8.2 giugno2002 1.4
DirectX 9.0 dicembre2002
giugno2003 1.59.0a 9.0b 9.0c agosto2004
settembr
e2004
OpenGL 2.0
agosto2006 2.1
DirectX 10 novembr
e2006
agosto2008
OpenGL 3.0
![Page 11: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/11.jpg)
![Page 12: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/12.jpg)
![Page 13: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/13.jpg)
Riprogettazione delle API
Nuove DLL più veloci: Abbandono retrocompatibilità
Windows Vista gestione parallela DirectX 10 versione ottimizzata e più performante DirectX 9.0L versione ottimizzata per il nuovo OS e
retrocompatibile
![Page 14: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/14.jpg)
DirectInput Modifica gestione periferiche di input Programmazione più semplice
DirectSound Miglioramento qualità e gestione dell’audio
DirectPlay Tramite tag permette di giocare online con un singolo
username DirectShow
Gestione più fluida/intelligente dei flussi audio e video DirectMusic
Componente invariato Direct3D
XACT (X3DAudio)
Xinput
Game for Windows Live
Microsoft Media Foundation
Direct3D10
![Page 15: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/15.jpg)
Cambiamenti di rilievo: Maggiori possibilità per i programmatori (Shader Model 4.0
e Geometry Shaders) Specifiche hardware fisse Prestazioni migliorate (cicli di comando ridotti per frame)
Riduzione Sovraccarico CPU:▪ Riprogettazione chiamate di drawing e cambiamento di stato▪ Riduzione dipendenza Scheda Video dalla CPU▪ Esecuzione di più funzioni con un solo comando
Insieme di istruzioni unificate (HLSL) Stream I/O (il Geometry Shader può scrivere nella memoria)
▪ Possibilità di Creare/Distruggere dati legati alla geometria della scena
Ottimizzazioni anti-aliasing e supporto alla global illumination
![Page 16: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/16.jpg)
DirectX 9 con Shader Tradizionali DirectX 10 con Unified Shader
+Velocità +Parallelismo (DirectX 8 – Shader Model
1.0/1.1): Separare nettamente i compiti in unità di elaborazione:
Shader▪ Pixel Shader: Maggior realismo della scena (illuminazione,
texture)▪ Vertex Shader: Calcoli su poligoni ed oggetti 3D (posizione)
Miglioramento: Unified Shader
1 unità di esecuzione per tutte le istruzioni
Più unità di esecuzione, parallelismo
Unità per l’elaborazione dei vertici
Unità per l’elaborazione dei pixel
2 Tipi di unità di esecuzione statiche 1 Tipi di unità di esecuzione
intelligente
![Page 17: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/17.jpg)
Versione Shader Model (Anno)1.1 (2001) 2.0 (2002) 3.0 (2004) 4.0 (2006)
Instruction SlotsVertex 128 256 512
64000Pixel 4+8 32+64 512
Constant RegistersVertex 96 256 256
16x4096Pixel 8 32 224
Temporary RegistersVertex 12 12 32
4096Pixel 2 12 32
Input RegistersVertex 16 16 16 16Pixel 2 12 32 32
Render Targets ---- 1 4 4 8Samplers ---- 8 16 16 16
TexturesVertex ---- ---- 4
128Pixel 8 16 16
Max Texture Size ---- ---- ---- 4048x4048 8096x80962D Texture Sizes ---- No No No YesInteger Operations ---- No No No YesLoad Operations ---- No No No YesSample Offsets ---- No No No Yes
Trascendental Operations
Vertex No No NoYes
Pixel No No No
Derivative Operations ---- No No Yes Yes
Flow ControlVertex ---- S S/D
DynamicPixel ---- ---- S/D
![Page 18: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/18.jpg)
Introdotti con DirectX 10
Gestione di intere geometrie Controllo di più vertici per volta (punto, linea, triangolo) A differenza dei Vertex Shader = 1 vertice alla volta
Possibilità di creare geometrie senza passare dalla CPU
Gestione ombre-illuminazione-texture tramite GPU
Possibilità di lavorare con più elementi grafici
![Page 19: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/19.jpg)
HLSL (High Level Shader Language) è un linguaggio sviluppato da Microsoft per la creazione di shader da usare in DirectX (Molto simile al linguaggio Cg di Nvidia)
L'HLSL permette di scrivere complessi calcoli grafici che possono essere eseguiti molto velocemente dalla GPU, e rappresenta inoltre il primo passo per una pipeline grafica completamente programmabile
Input Assembler
Pixel Shader
Output Merger
Stream Output
MEMORY VIDEO
Vertex Shader
Geometry Shader
Rasterizer
Schema Pipeline Grafica DirectX 10
![Page 20: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/20.jpg)
Si possono inserire molti più elementi grafici nella scena, senza sovraccaricare la CPU
Risultato grazie all’introduzione dei Geometry Shader:
![Page 21: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/21.jpg)
DirectX 9.0c
DirectX 10
![Page 22: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/22.jpg)
DirectX 9.0c
DirectX 10
![Page 23: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/23.jpg)
DirectX 9.0c
DirectX 10
![Page 24: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/24.jpg)
![Page 25: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/25.jpg)
DirectX 8.1
DirectX 10
DirectX 9.0
![Page 26: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/26.jpg)
2007 - Tante promesse da parte di ARB Riscrittura dell’intera API Innovazioni (in ambito di videogiochi) etc ...
Stato attuale, 11 Agosto 2008 OpenGL 3.0: Espansione OpenGL 2.1 Implementazione delle sole funzionalità supportate da
DirectX 10▪ Rimozione Fixed Function Pipeline▪ etc ...
Delusione da parte dei programmatori
![Page 27: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/27.jpg)
Promoter Membership $25,000 annually
Contributor Membership $7,500 annually
![Page 28: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/28.jpg)
OpenGL ES (Embedded System) è un API multi piattaforma, con accesso completo a funzioni di grafica 2D e 3D su sistemi embedded (cellulari, PDA, console)
E’ un sottoinsieme di funzioni OpenGL che rappresenta un interfaccia flessibile di basso livello tra SW e acceleratori grafici
Vantaggi: Standard e royalty-free Poco spazio in memoria e Basso consumo energetico Estensibile ed in Evoluzione Facile da usare e Ben documentata
![Page 29: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/29.jpg)
Dove trovare OpenGL ES? OpenGL ES su Symbian OS e Android OpenGL ES 1.0/2.0 e Cg(Nvidia) su Playstation 3 è una
delle API grafiche ufficiali OpenGL ES 1.1 è la libreria grafica per l’iPhone SDK OpenGL ES 2.0 è usata sulla console Pandora
![Page 30: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/30.jpg)
Dove? Windows Vista (Windows 7 e Futura console Microsoft)
HW? Compatibilità con Schede Video DirectX 10-10.1
Quando? Durante l’anno, 2009
Novità? Shader Model 5.0 Tecnologia Tesselation: figure poligonali più dettagliate
anche se viste da vicino Gestione Applicazioni Multi-threaded (CPU multi-core) Compute Shaders HLSL Version 5.0
![Page 31: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/31.jpg)
“OpenGL 3.0 è un solido passo nella direzione di rendere più snelle OpenGL,” Trevett – Vice President di Khronos membro Nvidia – “Ci sono elementi che sono stati pensati alla versione 3.0 e che usciranno nella versione 3.1”
Uscita OpenGL 3.1 fra qualche mese
![Page 32: Corso di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Anno Accademico 2008/2009 Presentazione di Maicol Petozzi](https://reader035.vdocuments.mx/reader035/viewer/2022081516/5542eb59497959361e8c4459/html5/thumbnails/32.jpg)
http://www.google.com/ http://www.dholm.com/ http://www.bcb-tools.com/ http://underdeep.wordpress.co
m/ http://www.tomshw.it/ http://www.legitreviews.com/ http://wapedia.mobi/it/ http://www.overclock3d.net/ http://scriptionary.com/blog/ http://www.levysoft.it/ http://notebookitalia.it/ http://www.hwupgrade.it/ http://opengles.altervista.org/
http://wikipedia.org/ http://www.dinoxpc.com/ http://
natonelbronx.wordpress.com/ http://www.opengl.org/ http://www.microsoft.com/ http://openskill.info/ http://www.cs.unc.edu/ http://www.programmazione.it/ http://www.webnews.it/ http://www.onehardware.it/ http://www.khronos.org/ http://www.apple.com/
“OpenGL Super Bible”, Richard S. Wright, Benjamin Lipchack