Informatica Grafica - Cos`è la computer grafica

Michele Antolini
Lezione1
Informatica Grafica
Cos’è la computer grafica
Visualizzazione
Lezione del 10 Marzo 2010
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
Michele Antolini
Dipartimento di Ingegneria Meccanica
Politecnico di Milano
1.1
Tubo a Raggi Catodici
Michele Antolini
Cathode Ray Tube - CRT
Visualizzazione
Il tubo catodico
Breve storia
• 1897 - Karl Ferdinand
Braun inventa il primo
dispositivo di scansione a
raggi catodici
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.2
Tubo a Raggi Catodici
Michele Antolini
Cathode Ray Tube - CRT
Visualizzazione
• 1907 - Boris Rosing,
utilizzando un dispositivo
elettromeccanico, riesce a
disegnare semplici forme
geometriche su uno
schermo CRT
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.3
Tubo a Raggi Catodici
Michele Antolini
Oscilloscopio
• L’oscilloscopio è stata una
delle prime applicazioni
del tubo catodico
• Permette di visualizzare
un segnale ripetitivo
(variazione di voltaggio
fornito al cannone
elettronico, electron gun)
Visualizzazione
Il tubo catodico
Breve storia
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Fonte: Wikipedia
Cosa bisogna sapere
Prossima lezione
1.4
Prime applicazioni di computer graphics
Michele Antolini
Sketchpad
• 1963 - Ivan Sutherland
sviluppa una delle prime
GUI (Graphical User
Interface) utilizzando un
plotter 2D e una penna
luminosa, sviluppando il
concetto innovativo di
oggetti e istanze
Visualizzazione
Il tubo catodico
Breve storia
Prime applicazioni
Sketchpad
Tipi di immagini
2D
• È stato la base per i
moderni Computer Aided
Design (CAD), per la
programmazione object
oriented e, in generale, per
le Graphical User
Interfaces (GUI)
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
Fonte: Wikipedia
1.5
Prime applicazioni di computer graphics
Sketchpad
AN INTRODUCTORY EXAMPLE
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.6
Prime applicazioni di computer graphics
Michele Antolini
Sketchpad
RY EXAMPLE
23
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.7
Prime applicazioni di computer graphics
Michele Antolini
Sketchpad
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.8
Prime applicazioni di computer graphics
Michele Antolini
Sketchpad
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.9
Prime applicazioni di computer graphics
Michele Antolini
Sketchpad
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.10
Prime applicazioni di computer graphics
Michele Antolini
Sketchpad
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.11
Prime applicazioni di computer graphics
Michele Antolini
Sketchpad
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.12
Prime applicazioni di computer graphics
Michele Antolini
Sketchpad
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.13
Prime applicazioni di computer graphics
Michele Antolini
Sketchpad
Visualizzazione
• Sketchpad si può considerare il primo esempio di vector
graphics
• La tesi di Sutherland è disponibile online all’indirizzo:
http://www.cl.cam.ac.uk/techreports/
UCAM-CL-TR-574.pdf
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.14
Grafica 2D
Michele Antolini
Definizione
Si definisce attualmente come generazione basata su
calcolatore di immagini digitali come modelli geometrici (2D),
testo, immagini digitali.
Visualizzazione
Il tubo catodico
Breve storia
Si divide in:
• Pixel art: ogni immagine visualizzata è concepita come
un insieme (ordinato) di punti (detti pixel). Ogni
manipolazione modifica il colore di pixel specifici.
Un’immagine definita come griglia di punti si definisce
raster graphics
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
• Grafica vettoriale: le immagini sono generate a partire da
Cosa bisogna sapere
Prossima lezione
primitive geometriche come punti, linee, curve, poligoni,
basandosi su funzioni matematiche
1.15
Grafica 2D
Michele Antolini
Raster vs Vector
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
Fonte: Wikipedia
1.16
Grafica 3D
Michele Antolini
Visualizzazione
Il tubo catodico
In grafica 3D si usa una rappresentazione tridimensionale di
dati geometrici, memorizzati all’interno di un computer, al fine
di eseguire calcoli e di creare immagini (proiezioni)
bidimensionali, dette rendering
Breve storia
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.17
Glossario
Michele Antolini
Visualizzazione
Il tubo catodico
Pixel
Un pixel è la più piccola unità rappresentabile su uno schermo
Breve storia
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.18
Glossario
Michele Antolini
Visualizzazione
Immagine
Un’immagine è un oggetto bidimensionale formato da un
insieme ordinato di pixel
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.19
Glossario
Michele Antolini
Rasterizzazione
• La rasterizzazione è
un’operazione che
permette di trasformare
grafica vettoriale
(descritta
matematicamente) in
un’immagine,
associando un colore
ad ogni pixel
• Se la grafica vettoriale
descrive un modello
tridimensionale si parla
di rendering
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.20
Glossario
Michele Antolini
Rendering
Processo di generazione di un’immagine a partire da un
modello tridimensionale. Per effettuare l’operazione è
necessario specificare:
• Geometria
• Punto di vista e field of view (FOV)
Visualizzazione
Il tubo catodico
Breve storia
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
• Texture (letteralmente “tessuto” )
Glossario
• Illuminazione
Grafica 3D
OpenGL vs Direct3D
• Shading (letteralmente “ombreggiatura” )
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.21
Glossario
Michele Antolini
Rendering
A
Proiezione 3D
Definendo geometria, punto
di vista e campo di visione
(Field of View) è possibile
proiettare la scena 3D su un
piano per ottenere la
successiva rasterizzazione
Visualizzazione
Il tubo catodico
Breve storia
A’
B
Prime applicazioni
Sketchpad
Tipi di immagini
B’
2D
3D
Centro di
proiezione
Piano di
proiezione
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.22
Glossario
Michele Antolini
Rendering
Shading
Lo shading è l’operazione che permette, dato il colore di una
superficie o di una faccia di un poligono, di calcolarne
l’ombreggiatura in base alla direzione della luce (partendo
dalla posizione della sorgente luminosa).
• Flat shading: assegnazione di una tonalità di colore per
ogni faccia dei poligoni contenuti nella scena
• Smooth shading: per ogni pixel dell’immagine
rasterizzata, la tonalità di colore dipende
dall’interpolazione dei vettori normali alle facce del
poligono
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.23
Glossario
Michele Antolini
Rendering - Flat vs smooth shading
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.24
Glossario
Michele Antolini
Rendering
Texture mapping
Applicazione di un’immagine bidimensionale (detta texture)
sulla superficie di un oggetto 3D.
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.25
Glossario
Michele Antolini
Rendering
Texture mapping
Applicazione di un’immagine bidimensionale (detta texture)
sulla superficie di un oggetto 3D.
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.26
Glossario
Michele Antolini
Rendering
Bump mapping
• Uno dei modi più interessanti in cui vengono utilizzate le
texture
• in base alla tonalità di grigio presente in ogni pixel della
texture, la superficie su cui viene applicata la texture viene
modificata creando “rugosità” che verranno renderizzate
adeguatamente durante il processo di shading.
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.27
Grafica 3D
Michele Antolini
• I programmi 3D hanno una struttura molto simile
Visualizzazione
• Fasi:
• Definizione geometrie (vertici, vettori, linee, poligoni,
superfici)
• Definizione punto di vista, FOV, proiezione
• Rasterizzazione, shading (+eventuali texture)
Il tubo catodico
• Sono coinvolti vettori, matrici, equazioni matematiche
Glossario
Breve storia
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.28
Software→Hardware
Michele Antolini
• Presenza di algoritmi maturi per le operazioni 3D
• Necessità di applicare ad un grande numero di dati le
medesime operazioni
Visualizzazione
Il tubo catodico
• 1984: la IBM rilascia il primo tentativo di scheda per PC
dedicata all’accelerazione hardware 2D/3D (con un
processore 8088-2, 8MHz)
• Negli anni ’90 l’accelerazione 2D prima e 3D poi
diventano sempre più importanti per le prestazioni dei
computer, così società come S3, ATI, Matrox cominciano
a produrre schede di accelerazione hardware sempre più
performanti.
Breve storia
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.29
Librerie grafiche
Michele Antolini
Visualizzazione
Il tubo catodico
• Nascono le librerie grafiche
• OpenGL vs. Direct3D
Breve storia
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.30
OpenGL vs Direct3D
Michele Antolini
Direct3D
• Interfaccia proprietaria, sviluppata da Microsoft e
implementata solo per sistemi Microsoft
Visualizzazione
Il tubo catodico
Breve storia
• Estremamente legata all’hardware e alle funzionalità
fornite dalle schede grafiche
• Per ogni versione, la backward compatibility è difficilmente
garantita
• Dalla versione 9 in poi le prestazioni sono molto elevate e
l’architettura è diventata matura
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.31
OpenGL vs Direct3D
Michele Antolini
OpenGL
• È una specifica, un insieme di API.
Visualizzazione
• 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 iniziale
non è mai cambiata (es. principio della macchina a stati,
astrazione dalle funzionalità hardware)
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.32
GPU
Michele Antolini
• Le schede grafiche (GPU) non sono più “semplici”
rasterizer ma gestiscono luci, texture e shading
• Negli anni 2000 i produttori di GPU forniscono gli
strumenti per programmare direttamente sull’hardware gli
algoritmi di shading
• Ogni pixel viene processato da un programma residente
sulla GPU che può includere texture aggiuntive o altri tipi
di input
• Ogni vertice può essere ulteriormente processato
dall’hardware
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.33
GPGPU
Michele Antolini
• Le schede grafiche odierne non si occupano più solo di
grafica
• La programmabilità e la capacità di eseguire calcoli
complessi da applicare ad un gran numero di dati in
contemporanea (alto parallelismo a livello hardware) fa
preferire l’esecuzione di alcuni algoritmi su GPU piuttosto
che su CPU
• Questa tecnica si definisce General Purpose (Computing)
on GPU (GPGPU)
Visualizzazione
Il tubo catodico
Breve storia
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
• Esistono numerose applicazioni in grado di sfruttare le
GPU, principalmente di tipo scientifico. Esistono anche
diverse implementazioni di encoder/decoder audio/video
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.34
Librerie per GPGPU
Michele Antolini
Le principali librerie che permettono l’esecuzione di codice su
GPU sono:
• OpenCL (standard utilizzato dal sistema operativo Snow
Leopard)
Visualizzazione
Il tubo catodico
Breve storia
Prime applicazioni
Sketchpad
• CUDA (sviluppato per le schede NVidia)
• Stream (sviluppato per le schede Ati)
Oltre gli scopi del corso, consiglio di curiosare le potenzialità di
CUDA e OpenCL
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.35
Cosa bisogna sapere per occuparsi di computer grafica (3D)
Michele Antolini
Chi si occupa di computer grafica deve necessariamente avere
una serie di conoscenze di base:
• Geometria ed algebra dei vettori (coordinate omogenee,
rappresentazione dei vettori, operazioni tra vettori –
prodotto scalare, vettoriale, normalizzazione, etc) e delle
matrici (determinante, inversione di matrici, matrici di
trasformazione per rototraslazioni e altre operazioni lineari
• Programmazione: il linguaggio più utilizzato è senza
dubbio il C++, anche se anche Java copre una parte delle
applicazioni
• Modellazione 3D: a partire dalla creazione di modelli, alle
texture, alla programmazione degli shaders
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
• Giochi: chi si occupa di giochi (e vuole fare tutto da solo)
deve anche conoscere e saper utilizzare le leggi della
fisica, le tecniche di multithreading, intelligenza artificiale,
multimedialità in genere!
1.36
Venerdi 12 marzo
Michele Antolini
Visualizzazione
Il tubo catodico
Breve storia
La prossima lezione si terrà in aula 18 dalle 11.30 alle 13.30
Prime applicazioni
Sketchpad
Tipi di immagini
2D
3D
Glossario
Grafica 3D
OpenGL vs Direct3D
GPU Computing
Cosa bisogna sapere
Prossima lezione
1.37