Informatica Grafica Michele Antolini Lezione1 · Informatica Grafica Michele Antolini...

37
Michele Antolini Visualizzazione Il tubo catodico Breve storia Prime applicazioni Sketchpad Tipi di immagini 2D 3D Glossario Grafica 3D OpenGL vs Direct3D GPU Computing Cosa bisogna sapere Prossima lezione 1.1 Lezione1 Informatica Grafica Cos’è la computer grafica Lezione del 10 Marzo 2010 Michele Antolini Dipartimento di Ingegneria Meccanica Politecnico di Milano

Transcript of Informatica Grafica Michele Antolini Lezione1 · Informatica Grafica Michele Antolini...

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