Computer Graphics
Marco Tarini
Università dell’Insubria Corso di Laurea in Informatica Anno Accademico 2014/15
Accenni ad alcuni argomenti lasciati fuori da questo corso
(*) img byScott Kim.
Alcuni meccanismi propri del rasterization based rendering che non abbiamo visto
• Nuovi stage nel pipeline HW:
– geometry shader – tesselator
• Tecniche di rendering multipassata
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Geometry Shader / Tesselator
Fr am m en ti & at tri bu ti in te rp ol at i Ve rti ci & lo ro a ttr ib ut i
Screen buffer Ve rti ci p or ie tta ti & at tri bu ti co m pu ta ti
rasterizer triangoli rasterizer segmenti rasterizer punti
co m pu ta zi on i pe r v er tic e co m pu ta zi on i pe r f ra m m en to
Nuove + vecchie primitive!
Geometry Shader / Tesselator
Fr am m en ti & at tri bu ti in te rp ol at i Ve rti ci & lo ro a ttr ib ut i
Screen buffer
Ve rti ci p or ie tta ti & at tri bu ti co m pu ta ti ra st er iz er tri an go li ra st er iz er se gm en ti
ra st er iz er pu nt i
co m pu ta zi on i pe r v er tic e co m pu ta zi on i pe r f ra m m en to
geometry
shader
tesselator +
Geometry Shader / Tesselator
• Geometry Shader:
– da OpenGL 3.2
(e Direct3D 10)• Tesselator
– da OpenGL 4.0
(e Direct3D 11)• concept: on card geometry creation
– creazione di ulteriori primitive sulla GPU (on-card geometry creatrion) – mando N primitive ad alto livello,
vengono rasterizzate un numero M maggiore di primitive
• Utilizzato molti rendering algorithms algoritmi come:
– suddividere (sup. di suddivisione) – marching cubes on the GPU?
– aggiungere flaps – shadow volumes – point sprites…
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Geometry Shader / Tesselator
• Stage opzionali – dopo il vertex shader
– prima del Primitive assembely (e rasterizz)
• programmabili GLSL (OpenGL) / HLSL (DirectX) + comandi come: emitVertex endPrimitive
• accedono:
+ agli N vertici (già processati) della primitiva + loro attributi
+ qualche informazione di adiacenza
• producono nuove primitive – on-card!
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tecniche di Rendering multipassata
• Techniche che prevedono di scomporre un rendering in diverse passate successive:
• Molti possibili modi, per es:
– prima passata scrive solo alcuni dei buffer, magari parzialmente (depth, stencil, alpha…)
• e.g. in tecniche come «deferred shading», «depth peeling»
– prima passata produce, invece che i buffer in uscita, una (o più) tessiture per la passata successiva
• «render-to-texture», usando «Frame Buffer Objects»
– prima passata memorizza i vertici processati in un vertex buffer (invece che passarli all’Primitive Assembly)
• «transform-feedback»
– …
• NB: ma sempre evitando pesanti read-back di buffer di memoria – letture «all’indietro»: della memoria video alla main memory
Rendering Multipassata
Fr am m en ti + va ry in g in te rp .
Ve rti ci in o bj . s pa ce + at tri bu ti
Screen buffer (RGBA) Depth Buffer Stencil Buffer Ve rti ci in c lip s pa ce + va ry in gs rasterizer lines
rasterizer triangles rasterizer points ve rte x sh ad er
Textures fra gm en t sh ad er Vertex
Buffer
Index
Buffer
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Rendering Multipassata
Fr am m en ti + va ry in g in te rp .
Ve rti ci in o bj . s pa ce + at tri bu ti Ve rti ci in c lip s pa ce + va ry in gs rasterizer lines rasterizer triangles rasterizer points ve rte x sh ad er
Vertex Buffer Index Buffer
Texture(s) per la passata succes- fra gm en t sh ad er siva
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Rendering Multipassata
Fr am m en ti + va ry in g in te rp .
Ve rti ci in o bj . s pa ce + at tri bu ti Rendering finale Ve rti ci in c lip s pa ce + va ry in gs rasterizer lines
rasterizer triangles rasterizer points ve rte x sh ad er
Textures fra gm en t sh ad er Vertex
Buffer Index Buffer
Rendering Multipassata: transform feedback
Ve rti ci in o bj . s pa ce + at tri bu ti Vertex
Buffer Index Buffer
Ve rti ci in c lip s pa ce + va ry in gs
ve rte x sh ad er tra ns fo rm fe ed ba ck
nuovo Vertex Buffer!
(per le passate)prox
Rendering Multipassata
Ve rti ci in o bj . s pa ce + at tri bu ti Ve rti ci in c lip s pa ce + va ry in gs ve rte
x sh ad er Fr am m en ti + va ry in g in te rp . Screen buffer (RGBA) Depth Buffer Stencil Buffer rasterizer
lines rasterizer triangles rasterizer points
Textures fra gm en t sh ad er Nuovo
Vertex
Buffer
Index
Buffer
Per cosa si usano questi meccansimi?
• Higher quality surface rendering effects!
– Tecniche di rendering non fotorealistico
• illustrativo, o imitativo
• es: “toon shading”: lighting quantizzato, identificazione bordi – Mirroring Reflections
• specchi, anche curvi
– Cast Shadows (ombre proiettate)
• shadow mapping
• shadow volumes
– Simulazione / approssimazione di illuminazione globale
• scattering diffusivi multipli
• e.g. “screen space ambient occlusion”
– Simulazione di diffrazione
• es attraverso un vetro / acqua
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Per cosa si usano questi meccansimi?
• Higher quality surface rendering effects!
– Simulazione di (limited) depth-of-field – Simulazione di high-dynamic range effects
• “a fuoco solo in un certo intervallo”
– Equazioni di lighting più sofisticate
• e.g. effetto “fresnel”
• illuminatori ad aera (non puntiformi)
– Modellazione più fisicamente plausibile /accurata di materiali
• e.g. BRDF complesse, incluse quelle non isotropiche – Tecniche di ottimizzazione: deferred shading – Effetti di scattering sotto-superficiale della luce – Order independent Alpha blending
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Per cosa si usano questi meccansimi?
• Higher quality surface rendering effects!
– “Impostors”
• pannelli 2D che rappresentano oggetti 3D – Espansione della geometria on card
• es: on the fly tessellation of parametric / subdivision surfaces – Displacement maps
• (interactive) GP-GPU
– e.g.: physics on the GPU: con oggetti rigidi, liquidi, etc
• Raytracing on GPU
• Direct volume rendering on GPU
– rendering di strutture volumetriche voxelizzate – “diretto” = senza passare da iso-superfici
Rendering: al di fuori del rasterization based
– Ray-tracing / Ray-marching – Global illumination
• «radiosity» algorithms
• e.g. «Monte carlo» methods
• « Photon mapping » – e.g. per simulare «caustics»
– Direct volume rendering
• rendering di strutture volumetriche voxelizzate
• “diretto” = senza passare da iso-superfici – “Frameless” rendering
• (in ciascuno caso: in CPU, o in GPU)
CG: non solo rendering…
MODELLING
• Modelli 3D digitali
– creazione
• modellazione procedurale
• strumenti per la modellazione user-driven
• acquisizione automatica (confina con la computer vision) – Shape from X
– Range scanning – Fotogrammetria – …
– strutture dati per modelli 3D
• (ma abbiamo visto da vicino quelle per le mesh, e accennato ad aclune semplici altre)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
CG: non solo rendering…
MODELLING
• Modelli 3D digitali
– riconoscimento / catalogazione automatica
• e.g. ricerche da esempi in databases – processing
• smoothing, enhancement, parameterization, simplification…
• «geometry processing»
– browsing / databases / GIS – cleaning
• e.g.: hole filling
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
CG: non solo rendering…
MODELLING
• Modelli 3D digitali
– compressione / streaming – deformazione / morphing – strutture multirisoluzione
• (oltre alla semplice piramide LOD)
– analisi / estrazione features geometriche
• es normali, ma anche curvatura, smoothness, feature lines…
– analisi / estrazione features ad alto livello
• stile,
• semantica
CG: non solo rendering…
ANIMAZIONE
• Simulazione
– fisica (di tessuti, di oggetti rigidi, …)
– flocking (simulazioni di stormi / greggi / gruppi) – deformazioni semirigide
• Modelli per oggetti 3D animabili, e animazioni
– strutture dati
• Digital humans / digital characters
• Autonomous characters
• Animation capture / performace capture
CG: non solo rendering…
ANIMAZIONE
• Facial animations
– expressions – lip sync – …
• Planning / learning / optimizing animations
• Processing / analisi delle animazioni
• Interactive animation techniques
• Particle systems
• …
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
CG: non solo rendering…
advanced DEVICES for Interaction
• Output:
– Holographic displays – Stereo display
• active
• passive
– Head mounted displays – Force feedback …
• Input:
– haptic devices – depth cameras …
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a