Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.1
Lezione1Informatica GraficaCos’è la computer grafica
Lezione del 10 Marzo 2010
Michele AntoliniDipartimento di Ingegneria Meccanica
Politecnico di Milano
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.2
Tubo a Raggi CatodiciCathode Ray Tube - CRT
• 1897 - Karl FerdinandBraun inventa il primodispositivo di scansione araggi catodici
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.3
Tubo a Raggi CatodiciCathode Ray Tube - CRT
• 1907 - Boris Rosing,utilizzando un dispositivoelettromeccanico, riesce adisegnare semplici formegeometriche su unoschermo CRT
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.4
Tubo a Raggi CatodiciOscilloscopio
• L’oscilloscopio è stata unadelle prime applicazionidel tubo catodico
• Permette di visualizzareun segnale ripetitivo(variazione di voltaggiofornito al cannoneelettronico, electron gun)
Fonte: Wikipedia
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.5
Prime applicazioni di computer graphicsSketchpad
• 1963 - Ivan Sutherlandsviluppa una delle primeGUI (Graphical UserInterface) utilizzando unplotter 2D e una pennaluminosa, sviluppando ilconcetto innovativo dioggetti e istanze
• È stato la base per imoderni Computer AidedDesign (CAD), per laprogrammazione objectoriented e, in generale, perle Graphical UserInterfaces (GUI)
Fonte: Wikipedia
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.6
Prime applicazioni di computer graphicsSketchpad AN INTRODUCTORY EXAMPLE 23
Figure 1.5: (Originally on page 15.)
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.7
Prime applicazioni di computer graphicsSketchpad
AN INTRODUCTORY EXAMPLE 23
Figure 1.5: (Originally on page 15.)
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.8
Prime applicazioni di computer graphicsSketchpad
AN INTRODUCTORY EXAMPLE 23
Figure 1.5: (Originally on page 15.)
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.9
Prime applicazioni di computer graphicsSketchpad
AN INTRODUCTORY EXAMPLE 23
Figure 1.5: (Originally on page 15.)
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.10
Prime applicazioni di computer graphicsSketchpad
AN INTRODUCTORY EXAMPLE 23
Figure 1.5: (Originally on page 15.)
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.11
Prime applicazioni di computer graphicsSketchpad
AN INTRODUCTORY EXAMPLE 23
Figure 1.5: (Originally on page 15.)
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.12
Prime applicazioni di computer graphicsSketchpad
AN INTRODUCTORY EXAMPLE 23
Figure 1.5: (Originally on page 15.)
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.13
Prime applicazioni di computer graphicsSketchpad
AN INTRODUCTORY EXAMPLE 23
Figure 1.5: (Originally on page 15.)
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.14
Prime applicazioni di computer graphicsSketchpad
• Sketchpad si può considerare il primo esempio di vectorgraphics
• La tesi di Sutherland è disponibile online all’indirizzo:
http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-574.pdf
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.15
Grafica 2D
Definizione
Si definisce attualmente come generazione basata sucalcolatore di immagini digitali come modelli geometrici (2D),testo, immagini digitali.
Si divide in:• Pixel art: ogni immagine visualizzata è concepita come
un insieme (ordinato) di punti (detti pixel). Ognimanipolazione modifica il colore di pixel specifici.Un’immagine definita come griglia di punti si definisceraster graphics
• Grafica vettoriale: le immagini sono generate a partire daprimitive geometriche come punti, linee, curve, poligoni,basandosi su funzioni matematiche
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.16
Grafica 2DRaster vs Vector
Fonte: Wikipedia
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.17
Grafica 3D
In grafica 3D si usa una rappresentazione tridimensionale didati geometrici, memorizzati all’interno di un computer, al finedi eseguire calcoli e di creare immagini (proiezioni)bidimensionali, dette rendering
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.18
Glossario
Pixel
Un pixel è la più piccola unità rappresentabile su uno schermo
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.19
Glossario
Immagine
Un’immagine è un oggetto bidimensionale formato da uninsieme ordinato di pixel
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.20
Glossario
Rasterizzazione
• La rasterizzazione èun’operazione chepermette di trasformaregrafica vettoriale(descrittamatematicamente) inun’immagine,associando un coloread ogni pixel
• Se la grafica vettorialedescrive un modellotridimensionale si parladi rendering
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.21
Glossario
Rendering
Processo di generazione di un’immagine a partire da unmodello tridimensionale. Per effettuare l’operazione ènecessario specificare:
• Geometria• Punto di vista e field of view (FOV)• Texture (letteralmente “tessuto” )• Illuminazione• Shading (letteralmente “ombreggiatura” )
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.22
GlossarioRendering
Proiezione 3D
Definendo geometria, puntodi vista e campo di visione(Field of View) è possibileproiettare la scena 3D su unpiano per ottenere lasuccessiva rasterizzazione
Centro di proiezione
A
B A’
B’
Piano di proiezione
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.23
GlossarioRendering
Shading
Lo shading è l’operazione che permette, dato il colore di unasuperficie o di una faccia di un poligono, di calcolarnel’ombreggiatura in base alla direzione della luce (partendodalla posizione della sorgente luminosa).
• Flat shading: assegnazione di una tonalità di colore perogni faccia dei poligoni contenuti nella scena
• Smooth shading: per ogni pixel dell’immaginerasterizzata, la tonalità di colore dipendedall’interpolazione dei vettori normali alle facce delpoligono
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.24
GlossarioRendering - Flat vs smooth shading
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.25
GlossarioRendering
Texture mapping
Applicazione di un’immagine bidimensionale (detta texture)sulla superficie di un oggetto 3D.
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.26
GlossarioRendering
Texture mapping
Applicazione di un’immagine bidimensionale (detta texture)sulla superficie di un oggetto 3D.
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.27
GlossarioRendering
Bump mapping
• Uno dei modi più interessanti in cui vengono utilizzate letexture
• in base alla tonalità di grigio presente in ogni pixel dellatexture, la superficie su cui viene applicata la texture vienemodificata creando “rugosità” che verranno renderizzateadeguatamente durante il processo di shading.
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.28
Grafica 3D
• I programmi 3D hanno una struttura molto simile• Fasi:
• Definizione geometrie (vertici, vettori, linee, poligoni,superfici)
• Definizione punto di vista, FOV, proiezione• Rasterizzazione, shading (+eventuali texture)
• Sono coinvolti vettori, matrici, equazioni matematiche
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.29
Software→Hardware
• Presenza di algoritmi maturi per le operazioni 3D• Necessità di applicare ad un grande numero di dati le
medesime operazioni• 1984: la IBM rilascia il primo tentativo di scheda per PC
dedicata all’accelerazione hardware 2D/3D (con unprocessore 8088-2, 8MHz)
• Negli anni ’90 l’accelerazione 2D prima e 3D poidiventano sempre più importanti per le prestazioni deicomputer, così società come S3, ATI, Matrox comincianoa produrre schede di accelerazione hardware sempre piùperformanti.
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.30
Librerie grafiche
• Nascono le librerie grafiche• OpenGL vs. Direct3D
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.31
OpenGL vs Direct3DDirect3D
• Interfaccia proprietaria, sviluppata da Microsoft eimplementata solo per sistemi Microsoft
• Estremamente legata all’hardware e alle funzionalitàfornite dalle schede grafiche
• Per ogni versione, la backward compatibility è difficilmentegarantita
• Dalla versione 9 in poi le prestazioni sono molto elevate el’architettura è diventata matura
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.32
OpenGL vs Direct3DOpenGL
• È una specifica, un insieme di API.• Non è legato all’hardware, ma permette un’astrazione
delle funzionalità• È uno standard aperto e ne esistono implementazioni per
diversi sistemi operativi (anche di tipo mobile (iPhone,Android, Symbian)
• L’interfaccia si è evoluta nel tempo, ma la filosofia inizialenon è mai cambiata (es. principio della macchina a stati,astrazione dalle funzionalità hardware)
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.33
GPU
• Le schede grafiche (GPU) non sono più “semplici”rasterizer ma gestiscono luci, texture e shading
• Negli anni 2000 i produttori di GPU forniscono glistrumenti per programmare direttamente sull’hardware glialgoritmi di shading
• Ogni pixel viene processato da un programma residentesulla GPU che può includere texture aggiuntive o altri tipidi input
• Ogni vertice può essere ulteriormente processatodall’hardware
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.34
GPGPU
• Le schede grafiche odierne non si occupano più solo digrafica
• La programmabilità e la capacità di eseguire calcolicomplessi da applicare ad un gran numero di dati incontemporanea (alto parallelismo a livello hardware) fapreferire l’esecuzione di alcuni algoritmi su GPU piuttostoche su CPU
• Questa tecnica si definisce General Purpose (Computing)on GPU (GPGPU)
• Esistono numerose applicazioni in grado di sfruttare leGPU, principalmente di tipo scientifico. Esistono anchediverse implementazioni di encoder/decoder audio/video
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.35
Librerie per GPGPU
Le principali librerie che permettono l’esecuzione di codice suGPU sono:
• OpenCL (standard utilizzato dal sistema operativo SnowLeopard)
• CUDA (sviluppato per le schede NVidia)• Stream (sviluppato per le schede Ati)
Oltre gli scopi del corso, consiglio di curiosare le potenzialità diCUDA e OpenCL
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.36
Cosa bisogna sapere per occuparsi di computer grafica (3D)
Chi si occupa di computer grafica deve necessariamente avereuna serie di conoscenze di base:
• Geometria ed algebra dei vettori (coordinate omogenee,rappresentazione dei vettori, operazioni tra vettori –prodotto scalare, vettoriale, normalizzazione, etc) e dellematrici (determinante, inversione di matrici, matrici ditrasformazione per rototraslazioni e altre operazioni lineari
• Programmazione: il linguaggio più utilizzato è senzadubbio il C++, anche se anche Java copre una parte delleapplicazioni
• Modellazione 3D: a partire dalla creazione di modelli, alletexture, alla programmazione degli shaders
• Giochi: chi si occupa di giochi (e vuole fare tutto da solo)deve anche conoscere e saper utilizzare le leggi dellafisica, le tecniche di multithreading, intelligenza artificiale,multimedialità in genere!
Informatica Grafica
Michele Antolini
Visualizzazione
Il tubo catodicoBreve storia
Prime applicazioniSketchpad
Tipi di immagini2D
3D
Glossario
Grafica 3DOpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.37
Venerdi 12 marzo
La prossima lezione si terrà in aula 18 dalle 11.30 alle 13.30