Introduzione alla computer graphics I

INTRODUZIONE ALLA COMPUTER
GRAPHICS
Sommario
• Cos’è la Computer Graphics (CG)
– Ambiti di applicazione
• Breve Storia della Computer Graphics
• Tecnologie dei display
• Grafica Raster e Grafica Vettoriale
Cos’è la CG
• La Computer Graphics (CG) si occupa di sintesi di
immagini, cioè delle tecniche di produzione di
scene rappresentanti oggetti del mondo reale o
contenuti astratti.
• Nel primo caso, entrano a far parte della CG
anche tutte le tecniche volte a fornire una
visualizzazione realistica del contenuto
dell’immagine.
– Rendering foto-realistico
– Rendering non foto-realistico
Cos’è la CG
• Per contro, la disciplina che si occupa di analisi di
immagini è denominata “Image Processing”.
• In questo caso gli obiettivi dell’elaborazione possono
essere quelli di aumentare il contenuto informativo,
ridurre il rumore, restaurare una immagine e così via.
–
–
–
–
Image enhancement
Image restoration
Image analysis
…
Cos’è la CG
• In ogni caso in Image Processing si assume di
partire da un’immagine digitale già acquisita e
la si elabora, mentre in CG l’immagine digitale
è l’obiettivo ultimo dell’elaborazione.
• Altri ambiti che si occupano di immagini
digitali sono la “Computer Vision” e la
“Pattern Recognition” .
Cos’è la CG
• La “Computer Vision” tenta di riprodurre i processi
percettivi propri della visione basandosi su sistemi
artificiali di acquisizione/elaborazione dei dati.
• Nell’ambito della “Pattern Recognition” si cerca di
individuare la presenza di “strutture” più o meno
complesse in un’immagine al fine di svolgere compiti
di riconoscimento, sorveglianza, ispezione di
manufatti per individuazione di guasti e così via.
Cos’è la CG
• Alcune tecniche di elaborazione sono ormai
patrimonio della CG
– Fotoritocco: effetti speciali che sono
trasformazioni operate sul contenuto informativo
delle immagini di partenza.
– Image warping: trasformazioni delle strutture
presenti in un’immagine a fini ludici o di
correzione di deformazioni introdotte dai
dispositivi di acquisizione.
Ambiti di applicazione della CG
• Disegno delle interfacce utente
– Graphical User Interfaces (GUI)
– Interfacce Web (grafica bidimensionale abilitata da
opportuni linguaggi di scripting e descrizione delle forme
con formalismi XML)
• Simulazioni
– Scientifiche (processi fisici, chimici...)
– Professionali (simulazioni di dispositivi, CAD)
Simulazione tridimensionale
di onde e campi
elettromagnetici
Simulazione metereologica
Immagine sintetica
Immagine Sintetica
La Computer Graphics nella
realizzazione di film di animazione
• 1) Modellazione
• 2) Rigging
3) Texturing
4) Animazione
5) Rendering
Modellazione
• http://www.youtube.com/watch?v=jQpGmnM
kUJk (a partire dal minuto 21)
Rigging
• Il termine “rig” normalmente si utilizza per
definire il sistema di movimenti e di controllo
delle marionette: lo stesso si farà con il nostro
personaggio, ne costruiremo uno scheletro
che muoveremo come una marionetta per il
posizionamento di braccia e gambe.
Texturing di un modello 3d
•
•
•
•
•
•
•
Per rendere realistici gli oggetti modellati
occorre definire accuratamente l'aspetto
delle loro superfici.
Il modo piu' semplice consiste nel
sovrapporvi speciali immagini.
Queste immagini prendono il nome di
texture o mappe.
Animazione
• Muovendo opportunamente i rig si dà vita al
modello
• http://www.youtube.com/watch?v=ukJMrvxM
oWU
Animation Studio’s Dreamwork
• 1998, Z la formica
Animation Studio’s Dreamwork
2001, Shrek
• 2004 Shrek 2
• 2005 Magadascar (MAYA)
• 2006 Giù per il tubo
• 2008 Kung fu Panda(MAYA)
• 2010 Shrek e vissero felici e contenti
• 2011 Il gatto con gli stivali
• Avatar
(MAYA) 2009
• King Kong 2005
Blue Sky Studios
• L’era Glaciale
Pixar studio Animation
• 1995 Toy Story – Il mondo dei giocattoli
• 1998 - A Bug's Life - Megaminimondo
• 1999 - Toy Story 2 - Woody e Buzz alla riscossa
• 2001 - Monsters & Co.
• 2003 - Alla ricerca di Nemo
• 2004 - Gli Incredibili - Una "normale" famiglia
di supereroi
• 2006 - Cars - Motori ruggenti
• 2007 - Ratatouille
• 2009 - Up
• 2010 - Toy Story 3 - La grande fuga
• 2011 - Cars 2
Grafica Pubblicitaria
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Lavatrici Ariston Aqualtis
http://www.youtube.com/watch?v=2j2f5ONDU4c
Ariston Hot Quadro
http://www.youtube.com/watch?v=dimtH0Fsiic&feature=relmfu
Parmareggio
http://www.youtube.com/watch?v=Eqtc69kzMi8
http://www.youtube.com/watch?v=vaOm03b-u6I&NR=1
Gocciole Pavesi
http://www.youtube.com/watch?v=mfsEkP6ZSq4
Intrattenimento
– Videogames
• God of War III
• Rayman Raving Rabbids
Realtà aumentata
• La Realtà Aumentata (dall'inglese Augmented
Reality) è un sistema di grafica interattiva che
permette di intervenire su un flusso di
immagini video live, modificando la realtà con
l’aggiunta, in tempo reale, di contenuti ed
animazioni virtuali.
Realtà aumentata
• Realtà virtuale: si osserva su uno schermo la
proiezione di un mondo totalmente fittizio e costituito
interamente da oggetti virtuali.
• Realtà aumentata: non si è vincolati ad una
visualizzazione su schermo, ma qualsiasi superficie può
diventare un supporto per visualizzare il flusso video in
Realtà Aumentata; ciò che viene ripreso, inoltre, è
un’integrazione fra immagini reali ed oggetti virtuali.
• Per cui:
• realtà virtuale = mondo virtuale
• Realtà Aumentata = mondo reale + oggetti virtuali
Sistema di realtà aumentata
Schema di un sistema di realtà aumentata:
1. meccanismo di riconoscimento di un particolare elemento grafico detto marker
(una sorta di codice a barre bidimensionale ),
2. un sistema di tracciamento dei movimenti (della webcam o del marker) e un
engine per la creazione e l’animazione di oggetti tridimensionali. I marker sono
degli elementi grafici, su cui è stampato un simbolo facilmente riconoscibile
(anche quando ruotato), che vengono “individuati e tracciati” attraverso una
videocamera.
• Esempio di sistema di realtà aumentata
• http://www.youtube.com/watch?v=1_7NW_u
3VFo
Navigatore con la realtà Aumentata
Applicazioni in Medicina
– Ricostruzioni di parti anatomiche da TAC/RM/PET a fini
diagnostici
3D Projection mapping
Consiste nel realizzare una mappatura di un palazzo o di un edificio sul quale
attraverso l'uso di proiettori molto potenti verranno proiettate delle animazioni in
3d e motion graphic.
• Si procede con la scansione e mappatura dellla facciata su cui verranno
proiettate le immagini;
• con un accurato studio di proiezioni si fa interagire in modo realistico ogni punto
dell'oggetto con il video realizzato, facendo corrispondere ogni angolo, finestra
e elemento architettonico.
• Si realizza una mappatura esatta della facciata trasferendo su questa le
animazioni che si andranno a realizzare.
Il risultato è uno spettacolo coinvolgente dove l'architettura su cui si proietta si
anima creando scenari e spettacoli visivi sorprendenti.
• La tecnologia usata per la realizzazion edi uno
spettacolo con la tecnica del 3D Projection
mapping si avvale di proiettori con portata
massima fino a 1,5 Km. Co una potenza di luce
che parte da 18.000 fino a 35.000 Ansi Lumen (=
emissione di luce)
• Chi realizza questo tipo di spettacoli deve avere
una conoscenza aprofondita di tutti i programmi
di 3D Animazione e Motion Graphic per garantire
uno spettacolo all'altezza della situazione.
• http://3dmapping.lumosidea.it/videoblog/3d-mapping-intrattenimento.html
Altre applicazioni
• Simulatori di volo: per l’addestramento di
piloti civili e militari basati su realtà virtuale e
realtà aumentata
• In cartografia: l’utilizzo di sistemi informativi
territoriali consente la produzione di carte
topografiche, schematiche e tematiche con
facilità maggiore rispetto alle modalità
manuali.
Interattività vs Non Interattività
•
La grafica generata con un calcolatore può o meno essere interattiva, ovvero può o
meno permettere ad un operatore esterno di interagire in tempo reale con uno
qualsiasi (o tutti) dei parametri della rappresentazione grafica
•
Nel caso di grafica interattiva si richiede una risposta in tempo reale ai comandi
dell’operatore; questo implica
– necessità di hardware particolari (schede grafiche acceleratrici, processori
potenti,molta memoria)
– un modello semplificato di resa grafica (in genere le applicazioni interattive non sono
fotorealistiche)
•
Con la grafica non interattiva si possono raggiungere qualità dell’immagine elevate a
piacere, è solo questione di quanto tempo si è disposti ad aspettare per generarle
•
Entrambi i tipi di grafica sono interessanti ed hanno diverse applicazioni, a volte
complementari;
Interattività vs Non Interattività
Schema di una applicazione grafica
In genere le applicazioni grafiche di cui discuteremo (e che implementeremo) si possono
inquadrare, piu’ o meno, nel seguente schema:
•
Vi è una descrizione di qualche tipo (procedurale o meno) del mondo che deve essere
rappresentato.
•
La produzione di tale descrizione (modello) prende il nome di modellazione.
•
Da tale descrizione si ottiene una immagine bidimensionale; tale processo è chiamato
globalmente rendering
•
La sequenza di procedure ed algoritmi che implementano il rendering prende il nome di
pipeline grafica;
•
L’immagine ottenuta viene quindi visualizzata sullo schermo (in applicazioni interattive, per
esempio) o salvata su file
Schema di una applicazione grafica
La descrizione del mondo che viene utilizzata dalla pipeline grafica comprende in genere tre
elementi:
1. Gli oggetti che popolano il mondo; possono essere oggetti veri e propri (cubi, robot, mele..)
oppure dati (punti nello spazio 3D, iso-superfici ..). Gli oggetti hanno proprietà posizionali
(dove sono, come sono orientati etc) e di apparenza (di che colore, com’è fatta la
superficie, se sono riflettenti etc)
2. Le luci che determinano le proprietà di illuminazione del mondo; hanno anch’esse proprietà
posizionali, ma non di apparenza (tipicamente le luci non si vedono, al più si vedono degli
oggetti che rappresentano l’emettitore di luce).
3. L’osservatore che descrive gli algoritmi che servono
a generare una immagine 2D (lo schermo) dalla
descrizione 3D del mondo, ovvero implementa una
telecamera virtuale; anch’esso possiede proprietà
posizionali, ma non di apparenza
Processo di modellazione
Il modello di un oggetto da rappresentare può essere ottenuto essenzialmente in tre modi:
•
Manuale, ovvero viene “disegnato” tramite un opportuno strumento grafico. In genere si
ottengono oggetti complessi assemblando assieme oggetti semplici; es sfera, questa spesso
viene disegnata tramite il mouse, selezionando il centro e trascinando il puntatore fino ad
ottenere il raggio desiderato.
•
Automatica da strumenti che consentono l’acquisizione di un modello digitale di un oggetto
reale. Per esempio le tecniche basate sulle immagini dell’oggetto sono molto studiate in
Visione Computazionale, ed ultimamente anche in grafica. Spesso vengono indicare come
Image based modeling
•
Procedurale, ovvero viene generato tramite una procedura opportuna. Un esempio tipico
sono gli oggetti frattali, che hanno varie applicazioni nella grafica al calcolatore, o gli oggetti
geometrici, come sfere, cubi, poliedri regolari o altro. Ad esempio una sfera è ottenuta
specificando il raggio e la posizione del centro, poi ci pensa una procedura basata
sull’equazione analitica della sfera a disegnarla.
Le tecniche si possono mescolare tra di loro.
Processo di modellazione
3d modeler
3d scanners
Editor
3d scanners
Modello: battistero di Cremona
Hardware: laser scanner + camera
3d scanners
Processo di rendering
In base a tutte queste informazioni, dobbiamo effettuare un certo numero di passi per
ottenere l’immagine desiderata:
•
Proiezione: proiettare (geometricamente) la scena dallo spazio 3D allo spazio 2D dello
schermo della telecamera virtuale.
•
Shading: per ogni punto dell’immagine dobbiamo determinare il suo colore, che è
funzione del colore della superficie dell’oggetto e della sua orientazione, della posizione
delle luci e (nei modelli cosiddetti “globali”) della riflessione indiretta della luce da parte
di altre superfici.
•
Rimozione delle superfici nascoste: gli elementi più vicini alla telecamera coprono
quelli più lontani: dobbiamo determinare quali superfici sono visibili e quali no.
•
Rasterizzazione: quando sappiamo che colore assegnare a ciascun punto della
immagine, il passo finale è mappare questa informazione sul display (ovvero: accendere
i pixel).
Modellazione vs Rendering
In un immagine generata al calcolatore (3D o 2D, interattiva o meno) concorrono
essenzialmente due elementi:
•
I modelli geometrici degli oggetti (o dati) rappresentati
•
Le loro caratteristiche di colore, ombreggiatura, tessitura, etc.; queste ultime
vanno sotto il nome di shading
•
Alle volte è praticamente impossibile ottenere un modello di un oggetto con i
dettagli desiderati; in tal caso si aggiungono i dettagli nella fase di rendering
(alterando lo shading).
•
In genere è uno spreco di risorse costruire un modello complicato quando è
possibile ottenere lo stesso effetto con un modello semplice ed un suo opportuno
shading.
Shading
Add
Lines
Add colors
Distance falloff
“Real world”
shading
Breve storia della CG
• La CG nasce insieme ai calcolatori, ma si
mantiene fuori dal mercato del grande
consumo per effetto dei costi elevati dei
dispositivi grafici.
• Il suo sviluppo nasce dalla necessità di
rappresentare in maniera semplice e
altamente flessibile i dati elaborati dal
calcolatore; è il caso di applicazioni
scientifiche e di simulazione di processi.
Breve storia della CG
• Problemi connessi con la larga diffusione delle
applicazioni di CG:
– costo HW grafico
– necessità di elevate risorse computazionali
– difficoltà di scrivere programmi interattivi (epoca
del FORTRAN)
– SW dedicato per l’HW grafico.
Breve storia della CG
• La diffusione, negli anni '80, dei primi
calcolatori (ad esempio Apple Macintosh) che
usano monitor con display di concezione
moderna favorisce lo sviluppo di applicazioni
grafiche per uso diffuso
• Prime fra tutte si sviluppano le interfacce
grafiche che consentono agli utenti inesperti
di interagire con sistema operativo e le
applicazioni presenti su un calcolatore.
Breve storia della CG
• I primi display per la visualizzazione grafica sono
basati sull’uso di monitor del tipo televisivo in cui un
“Tubo a Raggi Catodici” (Cathode Ray Tube: CRT)
forma le immagini comandando la deflessione di un
fascio focalizzato di elettroni (pennello elettronico).
• Il fascio è in grado di colpire qualunque punto del
fondo del tubo sul quale è disposto uno strato di
materiale fotosensibile (fosfori) che reagisce
all’impatto emettendo luce.
Tubo a raggi catodici
Architettura del sistema
Il Video controller
• Il componente hardware che, all’interno
dell’ambiente computer monitor è
responsabile di guidare il fascio elettronico è il
video controller che trasforma informazioni
grafiche(digitali) in impulsi elettrici (analogici).
• La tecnologia del video controller può essere
di due tipi: raster o vettoriale.
• I primi dispositivi di output grafico basati sull’uso del CRT, erano
detti vettoriali (dove il termine vettoriale è da intendersi come
sinonimo di lineare).
• In questi dispositivi, il fascio di elettroni può muoversi direttamente
da una posizione all’altra, guidato dal computer, secondo l’ordine
arbitrario dei comandi di display, e durante il moto traccia una linea.
• Chiaramente, annullando l’intensità del fascio, questo può essere
spostato in una nuova posizione, senza modificare l’immagine
visibile sullo schermo.
• Questa tecnica, chiamata random scan (scansione casuale), è
rimasta in uso fino agli anni settanta, quando hanno cominciato a
diffondersi i sistemi di grafica raster, basati sulle tecnologia
televisiva.
• Il termine raster (o percorso di scansione) è sinonimo di matrice.
• Nella grafica raster, ogni immagine viene infatti rappresentata
tramite una matrice di elementi, i cosiddetti pixel, ciascuno dei
quali corrisponde ad una precisa porzione dell’immagine.
• L’elaborazione delle immagini è dunque basata su matrici di pixel,
che vengono memorizzate in un’apposita area di memoria, il frame
buffer, localizzata nella memoria della CPU, o in una memoria
separata.
• Il contenuto del frame buffer, ovvero la rappresentazione in
memoria delle matrici di pixel, è chiamato pixmap (da pixel map) o
bitmap. La risoluzione del frame buffer, definita dal numero di pixel
che può memorizzare, determina la qualità dell’immagine
visualizzata.
• L’immagine complessiva su un display di tipo
raster si ottiene effettuando una scansione
sistematica, raster scan, della matrice di pixel
attraverso il fascio di elettroni, ovvero scorrendo
sequenzialmente le linee di scansione orizzontali,
composte da righe di pixel, una alla volta, e
regolando l’intensità del fascio in modo da
riflettere l’intensità di ciascun pixel. Ogni volta
che il fascio di elettroni completa un ciclo di
scansione, si dice che il CRT è refreshed.
• I principali vantaggi della grafica raster rispetto a quella vettoriale
includono costi più bassi (grazie allo sviluppo tecnologico che ha
reso disponibili memorie di capacità elevata a basso costo) e la
possibilità di visualizzare aree piene di colore, e disegni.
• Uno dei principali svantaggi consiste invece nella natura
intrinsecamente discreta della rappresentazione tramite pixel: le
primitive grafiche (quali linee, cerchi, poligoni), devono essere
convertite nelle matrici di pixel che meglio le rappresentano, per
poter essere visualizzate su un display di tipo raster.
• Questa operazione è chiamata scan conversion. Inoltre, mentre
nella grafica vettoriale è possibile disegnare curve continue tra una
qualsiasi coppia di punti del CRT, la riduzione a matrici di pixel può
comportare problemi di frastagliamento delle immagini.
Monitor LCD
•
•
•
Cristalli liquidi: determinate sostanze cristalline con struttura tipica di un solido,
che se opportunamente riscaldate assumono una consistenza semiliquida, pur
mantenendo una struttura cristallina al loro interno. I cristalli liquidi al microscopio
appaiono come dei piccoli filamenti.
I filamenti cristallini facendo parte di una sostanza semifluida sono caratterizzati da
una certa libertà di movimento ed inoltre rifrangono i fasci di luce su di essi
emessi. La rifrazione dipenderà dal loro orientamento.
Questi filamenti, sotto lo stimolo di un opportuno campo elettrico possono
modificare il proprio orientamento e di conseguenza modificare le caratteristiche
del fascio di luce che li attraversa.
I display a cristalli liquidi (LCD) dipendono da una sorgente di luce esterna. Essi
funzionano polarizzando la luce dell’ambiente esterno.
Alla base del funzionamento dei monitor LCD troviamo l’utilizzo della luce
polarizzata.
• La luce è un’onda elettromagnetica che viaggia nel
vuoto. E' di solito non polarizzata in quanto prodotta
da cariche elettriche che vibrano in tutte le direzioni .
• E' possibile trasformare la luce non polarizzata in luce
che vibra in una sola direzione (luce polarizzata
linearmente).Il processo si dice di polarizzazione.
• La luce viene polarizzata facendole attraversare un
filtro che permette il passaggio solo di vettori luminosi
posti su piani paralleli (es: solo orizzontali o solo
verticali etc..).
•
Se polarizzassimo la luce per piani orizzontali e questa incontrasse poi un filtro che
polarizza per piani verticali, essa non potrebbe passare e verrebbe quindi bloccata
totalmente.
Per passare attraverso un filtro polarizzante per piani verticali la luce polarizzata
orizzontalmente necessita di essere ruotata di 90°.
•
I monitor LCD sono composti da ben sette strati. Internamente abbiamo delle
lampade a fluorescenza che producono la luce. Poi un pannello che polarizza la
luce per orizzontali e due pannelli centrali che racchiudono uno strato di celle
contenenti i cristalli liquidi. Più esternamente abbiamo un altro pannello che
polarizza la luce per piani orizzontali. E infine il cristallo esterno del display LCD.
Viene applicato un campo elettrico. I cristalli
vengono attivati e perdono la loro disposizione a
elica. La luce, polarizzata orizzontalmente, non può
più seguire i cristalli e non viene quindi ruotata.
Arrivando ancora polarizzata orizzontalmente
contro il filtro di polarizzazione verticale, la luce
viene quindi bloccata.
Non viene applicato nessun campo elettrico. I
cristalli presentano la tipica disposizione a elica.
La luce, che entra polarizzata orizzontalmente,
ruota di 90° seguendo i cristalli e può così
attraversare il filtro di polarizzazione verticale
Retroilluminazione a LED
• Quando si parla di schermi a LED non si intende una nuova tecnologia di
generazione dell'immagine. Un termine più appropriato sarebbe "schermo
LCD basato su retroilluminazione a LED" in quanto il pannello che produce
le immagini resta quello di uno schermo piatto tradizionale.
All'interno dello schermo a LED la luce emessa da 2160 piccoli LED rossi,
verdi e blu, si combina per formare una luce bianca. Il fascio di luce
attraversa una piastra di diffusione che la rende omogenea.
•
•
Il vantaggio più evidente rispetto alla lampada tradizionale è la migliore
qualità dei colori: il neon degli schermi LCD tradizionali, non restituisce
infatti un bianco perfetto e la luce deve essere corretta utilizzando filtri di
colore che non garantiscono risultati sorprendenti.La luce bianca illumina
quindi il pannello a cristalli liquidi per formare l'immagine finale.
La durata dello schermo LCD basato su tecnologia a LED è nell'ordine delle
100 mila ore mentre quella di uno schermo tradizionale è di 50 mila ore.
Grazie alla tecnologia a LED è possibile costruire degli schermi sottilissimi
spessi anche un paio di millimetri.
Evoluzione dei controllori grafici
• Pipeline di rendering
• Cenni storici sui controllori grafici
• Implementazione della pipeline di rendering
– Pipeline logica programmabile
– Pipeline mappata sul processore
• Architetture dei sistemi GPU
• Cenni alla programmazione delle GPU
Pipeline di rendering
Cenni storici sui controllori grafici
• Video and Graphics Array controller - VGA
(<1990)
– Controllore di una memoria DRAM chiamata framebuffer e
generatore di segnali (RAMDAC) collegato direttamente al video
– Basato sul principio della grafica vettoriale
– Implementa l’aritmetica intera indicizzata
• 1990 – 1997 circa
– Si aggiungono funzioni al controllore VGA
• Gestione triangoli
• Rasterizzazione triangoli
• Shading
Cenni storici sui controllori grafici
• Anni 2000
– Chip integrato che incorpora praticamente tutti gli
elementi di una pipeline di rendering
– Nasce la Graphics Processing Unit (GPU)
• > 2005
– GPU con implementazione dell’aritmetica in virgola fissa e
mobile
– GPU programmabili
• API di alto livello (OpenGL, Direct3D)
• shaders delle geometrie, dei vertici e dei pixel
Architettura GPU Unificata di base
• Adesso (>2008 circa)
– I processori sono massicciamente paralleli e
multithread
• Streaming Processors (SP) a flusso continuo
• Gli SP sono organizzati in Streaming Multiprocessors
(SM)
• La memoria è condivisa due livelli
– Dentro lo SM tra gli SP
– Tramite rete di interconnessione tra gli SM
• Soluzione scalabile
Pipeline mappata su schiera di processori
Adesso (>2008 circa)
L’esecuzione degli shaders viene mappata sulla
“schiera di processori unificati”
Architettura di una GPU unificata
Arch. TESLA
112 SP
14 SM
1 SP  96 thread
DRAM 64 bit
NVIDIA GeForce 8800
Programmazione Grafica
• Tre livelli
– API grafiche
• OpenGL
• Direct3D
– Linguaggi di shading
• GLSL
• HLSL
• Cg
– API di programmazione diretta dei core SP
• CUDA
• OpenCL
API grafiche
• Sono API di alto livello che definiscono
logicamente la pipeline di rendering
– L’applicazione si sviluppa definendo i vari stadi con
primitive di alto livello
– I dettagli sono nascosti allo sviluppatore e gestiti
dalle API
Linguaggi di shading
• Gestiscono i tre tipi di shader
– Shader dei vertici
• Mappano la posizione dei vertici dei triangoli nello schermo,
modificando posizione, colore e orientamento
– Shader delle geometrie
• Lavorano sulla base di primitive geometriche (ad es. interi
triangoli) definite come insiemi di vertici; le modificano
ovvero ne aggiungono di nuove
– Shader dei pixel (o dei frammenti)
• Dipingono il pixel sullo schermo e gestiscono gli artefatti
visivi
Linguaggi di shading
• Gli shader sono programmati a “a flusso
continuo” cioè su sequenze ininterrotte di
dati; l’I/O è implicito
• Le strutture di dati su cui operano consentono
un elevato parallelismo e quindi possono
essere lanciati più thread dello stesso shader
• Hanno primitive per operazioni
trigonometriche e su matrice, interpolazione,
filtraggio …
Programmazione dei core SP
• Sono API per programmazione general purpose
su GPU
– GPGPU: General Purpose computing on GPU
• Il problema viene parallelizzato mappandolo
sull’architettura
• Il programmatore CUDA scrive una procedura
detta kernel che istanzia tante esecuzioni di
thread paralleli
CUDA program can execute on any number of processor cores as illustrated by
Figure 1-4, and only the runtime system needs to know the physical processor
count.
This scalable programming model allows the CUDA architecture to span a wide
market range by simply scaling the number of processors and memory partitions:
from the high-performance enthusiast GeForce GPUs and professional Quadro and
Tesla computing products to a variety of inexpensive, mainstream GeForce GPUs
(see Appendix A for a list of all CUDA-enabled GPUs).
Programmazione CUDA
• I thread sono
organizzati
gerarchicamente in
blocchi 1D, 2D o 3D i
quali sono
organizzati in griglie
1D, 2D o 3D
• Il mapping dipende
dai core SP
disponibili ed è
scelto dal
programmatore
Multithreaded CUDA Program
Block 0
Block 1
Block 2
Block 3
Block 4
Block 5
Block 5
Block 6
Block 6
Block 7
GPU w ith 2 Cores
GPU w ith 4 Cores
Core 0
Core 1
Core 0
Core 1
Core 2
Core 3
Block 0
Block 1
Block 0
Block 1
Block 2
Block 3
Block 2
Block 3
Block 4
Block 5
Block 6
Block 7
Block 4
Block 5
Block 6
Block 7
A multithreaded program is partitioned into blocks of threads that execute independently from each
other, so that a GPU with more cores will automatically execute the program in less time than a GPU
with fewer cores.
Figure 1-4. Automatic Scalability