physically-based rendering for physically-based rendering 3.1introduzione il physically-based...
Post on 16-Oct-2019
6 views
Embed Size (px)
TRANSCRIPT
Physically-based Rendering for OpenGL
Studente/i
Brian Dalle Pezze
Relatore
Achille Peternier
Correlatore
—
Committente
SUPSI
Corso di laurea
Ingegneria Informatica
Modulo
C09910
Anno
2017/18
Data
31 Agosto 2018
i
Indice
Abstract 1
1 Contesto del Progetto 3
1.1 Descrizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Compiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Obbiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Tecnologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Milestones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Teorie fondamentali 5
2.1 Riflessione e rifrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Microfacet Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Physically-based Rendering 9
3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.1 BRDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.2 Equazione di rendering . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Cook-Torrance BRDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.1 Normal Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 Fresnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.3 Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Implementazione 17
4.1 Primi passi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.1 Risultati intermedi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Passaggio a Overvision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2.1 Decisioni finali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2.2 Modifiche alla classe Material . . . . . . . . . . . . . . . . . . . . . . . 24
4.2.3 Modifiche al Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2.3.1 Over3DS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.3.2 OVOreader . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Physically-based Rendering for OpenGL
ii INDICE
4.2.3.3 Conversione materiali . . . . . . . . . . . . . . . . . . . . . . 30
4.3 Shader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5 Conclusione 43
5.1 Risultati ottenuti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 Miglioramenti futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2.1 Subsurface Scattering . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2.2 Image-based Lighting . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Allegati 53
Bibliografia 55
Physically-based Rendering for OpenGL
iii
Elenco delle figure
1 Incidenza della luce luce su una superficie . . . . . . . . . . . . . . . . . . . 5
2 Dimostrazione grafica della Microfacet Theory . . . . . . . . . . . . . . . . . . 7
3 Normal Distribution in funzione della roughness, valore crescente da sinistra
verso destra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Diverse intensità di Fresnel su sfere viste in controluce . . . . . . . . . . . . . 13
5 Effetto della Geometry Function con roughness crescente: si può notare
come l’ombra si faccia più marcata e la distinzione meno nitida mentre la
superficie si scurisce leggermente . . . . . . . . . . . . . . . . . . . . . . . . 16
6 Serie di sfere per testare le caratteristiche: sull’asse x c’è un valore crescente
di roughness, mentre sull’asse y un valore crescente di metalness . . . . . . . 18
7 Vista ravvicinata delle sfere metalliche . . . . . . . . . . . . . . . . . . . . . . 19
8 Vista ravvicinata delle sfere dielettriche . . . . . . . . . . . . . . . . . . . . . 20
9 Sfere viste in controluce: notare Fresnel ben visibile su quelle centrali . . . . . 21
10 La sfera a sinistra è mappata come ferro arrugginito, quella a destra come
marmo liscio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
11 Snippet delle API di IGameMaterial, si possono notare i getter dei tipici para-
metri per Phong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
12 Sfere renderizzate con il modello di Phong (demoBullet) . . . . . . . . . . . . 31
13 Sfere renderizzate con PBR (demoBullet) . . . . . . . . . . . . . . . . . . . . 31
14 Dettaglio di un punto caldo di riflessione con Phong (demoBullet) . . . . . . . 32
15 Dettaglio di un punto caldo di riflessione con PBR (demoBullet) . . . . . . . . 32
16 Dettaglio testa di leone con Phong (demo) . . . . . . . . . . . . . . . . . . . . 33
17 Dettaglio testa di leone con PBR (demo) . . . . . . . . . . . . . . . . . . . . . 33
18 Dettaglio statua di marmo con Phong (demo) . . . . . . . . . . . . . . . . . . 34
19 Dettaglio statua di marmo con PBR (demo) . . . . . . . . . . . . . . . . . . . 34
20 Scena generale della demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
21 Dettaglio statua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
22 Dettaglio pistola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Physically-based Rendering for OpenGL
iv ELENCO DELLE FIGURE
23 Dettaglio sfere di vari materiali . . . . . . . . . . . . . . . . . . . . . . . . . . 47
24 Dettaglio spada. Notare il riflesso del metallo tipico del PBR. . . . . . . . . . . 48
25 Dettaglio teiere di materiale metallico (sopra) e dielettrico (sotto) con rough-
ness crescente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
26 Esempi di Subsurface Scattering a diverse profondità . . . . . . . . . . . . . . 50
27 L’IBL consente di avere un riflesso della scena circostante, rendendo la per-
cezione dei materiali più realistica . . . . . . . . . . . . . . . . . . . . . . . . 51
Physically-based Rendering for OpenGL
v
Elenco delle tabelle
1 F0 per vari materiali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Physically-based Rendering for OpenGL
vi ELENCO DELLE TABELLE
Physically-based Rendering for OpenGL
1
Abstract
Il Physically-based rendering (o PBR) è un modello di illuminazione che cerca di simulare in
modo simile alla fisica il funzionamento della luce nel mondo reale, allo scopo di aumentare
il fotorealismo delle scene o rendere più naturali e piacevoli all’occhio i materiali renderizzati.
I PBR sono caratterizzati dall’utilizzo di BRDF (Bidirectional Reflective Distribution Function),
che simulano la riflessione della luce, la conservazione dell’energia (distinzione mutualmen-
te esclusiva tra luce riflessa e rifratta) e l’applicazione della Microfacet Theory, che simula il
comportamento generalizzato di ogni superficie dipendentemente dalla sua rugosità.
Physically-based rendering (PBR) is a lighting model that tries to mimic in a physical-like
manner how light works in the real world in order to improve photorealism and to make ma-
terials appear more natural and pleasant to the human eye.
PBRs are characterized by the implementation of a BRDF (Bidirectional Reflective Distri-
bution Function), that emulates light reflection, an energy conservation principle (mutual di-
stinction between refracted and reflected light) and the applicaton of the Microfacet Theory,
that simulates the general behaviour of a surface based on its roughness.
Physically-based Rendering for OpenGL
2 ELENCO DELLE TABELLE
Physically-based Rendering for OpenGL
3
Capitolo 1
Contesto del Progetto
1.1 Descrizione
Lo scopo di questo progetto è quello di riuscire a implementare un modello di illuminazione
physically-based nel motore grafico fornito dal docente e utilizzato al DTI per vari progetti.
Vanno vagliate le opzioni disponibili per quanto riguarda i metodi di rendering physically-
based in utilizzo al momento e la loro compatibilità con le pipeline già presenti nel motore.
1.2 Compiti
• Investigare l’ultima generazione di PBR sviluppata, dalla teoria alla sua implementa- zione
• Discutere con il docente le diverse varianti di PBR da implementare con attenzione al miglior rapporto tra potenza computazionale richiesta, complessità algoritmica e
compatibilità con il software di rendering esistente
• Definire il tipo di informazioni che un modello 3D necessita per funzionare con il PBR, inclusa la ricerca di campioni da usare per sviluppo, testing e validazione
• Integrare il PBR nel software di rendering 3D basato su OpenGL fornito dal docente
1.3 Obbiettivi
• Implementare il PBR 3D in real-time al m