Upload
misae
View
44
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Ray Tracing News. http://www.raytracingnews.org/ RTNv19n1: September 30, 2006 Introduction Ray Tracing Roundup Notes on Efficient Ray Tracing Ray-Box Sorting BVHs and Memory Coherence “So long and thanks for all the fish...” Ray/Box Intersection Optimization SIGGRAPH 2006 Report. - PowerPoint PPT Presentation
Citation preview
Ray Tracing News
• http://www.raytracingnews.org/• RTNv19n1: September 30, 2006
– Introduction– Ray Tracing Roundup– Notes on Efficient Ray Tracing– Ray-Box Sorting– BVHs and Memory Coherence– “So long and thanks for all the fish...”– Ray/Box Intersection Optimization– SIGGRAPH 2006 Report
Ray Tracingen
Global Illuminationpraktische inleiding
over beschikbare software
Ray Tracer from scratch
• practicum CG1
• leerrijk, maar tijdrovend
• matrix, vector, kleur, afbeelding, camera, straal, puntlicht, driehoek, ...
• ontwerpkeuzes
Beschikbare renderers
• “standing on the shoulders of giants”
• doel– hobby ray tracer met beperkte fysische basis
• bv. POV-Ray
– academische, fysisch gebaseerde global illumination renderer
• bv. PBRT, RenderPark, Radiance, …
• basisimplementatie– meer mogelijkheden dan je zelf zou schrijven
• uitbreidbaarheid
Overzicht
• Ray Tracing– korte herhaling van CG1– voorbeeld: POV-Ray
• Global Illumination– korte herhaling van CG1, meer info: zie CG2– voorbeeld: PBRT
Ray Tracing herhaling
• camera
• pixelrooster
• scènecamera
pixelrooster
scène
Ray Tracing herhaling
• primaire straal
Ray Tracing herhaling
• primaire straal
• raakpunt
• schaduw en shading…
Ray Tracing herhaling
• schaduw
• schaduwstraal van raakpunt naar lichtbron
• raakt ander object?raakpunt niet belicht
• diffuus• cosinus (N.L)
Ray Tracing herhaling
• speculair• spiegeling
(N.V) = (N.R)
• recursie
• Phong (glans)• cosinus (R.V) of (N.H)
• exponent n
Ray Tracing herhaling
• recursie– reflectie– refractie
• wet van Snellius
lucht (n=1) glas (n=1,5)
oppe
rvla
k
normaal = buiten
Ray Tracing herhaling
• ray tracingà la Whitted 1980
• uitbreidingen– oppervlaktelichtbron
(zachte schaduwen)– participerende media
• hacks– ambiënt licht
POV-Ray (www.povray.org)
• hobby, artistiek, andere terminologie
• brede basisimplementatie
• uitbreidbaarheid is geen doel
• praktische documentatie en tutorials
• standaard ray tracing
POV-Ray
• fotorealisme mogelijk door te tweaken– Internet Ray Tracing
Competition (www.irtc.org)
• niet fysisch gebaseerd, geen global illumination– radiosity, photon map
uitbreidingen
POV-Ray syntax
camera {
perspective
location <0.0, 0.5,-8.0>
look_at <0.0, 0.0, 0.0>
up <0.0, 1.0, 0.0>
angle 50
}
POV-Ray syntaxlight_source { <-30,30,-30> // positie color rgb <1.0, 1.0, 1.0> pointlight}light_source { <-30,30,-30> // positie color rgb <1.0, 1.0, 1.0> area_light <8, 0, 0> <0, 0, 8> // afmetingen 8, 8 // stratificatie jitter}
POV-Ray syntaxplane { y, -1 // vlak y=-1}box { <-3,-1,-1> <-1, 1, 1> // hoekpunten}sphere { <0.0, 0.0, 0.0>, 1 // center, straal}cone { <2,1,0>, 0.0, // punt op as, straal 0 <2,-1,0>, 1.0 // punt op as, straal 1}
POV-Ray syntaxmesh { triangle { <0,0,0>, <0,1,0>, <1,1,0> // hoeken uv_vectors <0,0>, <0,1>, <1,1> // textuurcoordinaten } smooth_triangle { <0,0,0>, <0,0,1>, // hoek, normaal <1,0,0>, <0,1,1>, // hoek, normaal <1,1,0>, <1,1,1> // hoek, normaal uv_vectors <0,0>, <0,1>, <1,1> // textuurcoordinaten }}
POV-Ray syntax
texture { // materiaal pigment { // basiskleur // ... } normal { // bump map // ... } finish { // glans // ... }}
POV-Ray syntax
pigment { color rgb <1.0,0.0,0.0>}
pigment { image_map { jpeg "filename.jpg" }}
POV-Ray syntax
normal { bumps 0.5 // proceduraal}
normal { bump_map { gif "filename.gif" }}
POV-Ray syntaxfinish { phong 0.9 phong_size 60 // 1 - 250 // of specular 0.9 roughness 0.02 // 0.0005 – 1
reflection 0.8
// modifiers metallic // kleur highlight conserve_energy}
POV-Ray
POV-Ray
• uitbreidbaarheid?• C++• redelijk leesbare code• weinig structuur• code aanpassen• functionaliteit toevoegen?
Overzicht
• Ray Tracing– korte herhaling van CG1– voorbeeld: POV-Ray
• Global Illumination– korte herhaling van CG1, meer info: zie CG2– voorbeeld: PBRT
Global Illumination
• diffuse interreflecties
Global Illumination
• diffuse interreflecties
• glossy reflecties
Global Illumination
• diffuse interreflecties
• glossy reflecties
• caustics
Global Illumination
• diffuse interreflecties
• glossy reflecties
• caustics
• fysisch correct
Global Illumination
• diffuse interreflecties
• glossy reflecties
• caustics
• fysisch correct
radiosity +stochastic ray tracing radiosity
ray tracing foto
Global Illumination herhaling
Global Illumination herhaling
Global Illumination herhaling
• directe/indirecte belichting samen
Global Illumination herhaling
• directe/indirecte belichting apart
Global Illumination herhaling
• path tracing
Global Illumination herhaling
• path tracing
• L = ...
Global Illumination herhaling
• path tracing
• L = ...– emissie
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
komt van overal
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
uit 1 richting
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
komt van ergens
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
recursief
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
recursief
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
recursief
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
recursief
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
recursief
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
recursief
Global Illumination herhaling
• path tracing
• L = ...– emissie– directe belichting– indirecte belichting
recursief– aantal keer
per pixel
Global Illumination herhaling
• path tracing
• in principe volledig• maar soms traag
– bv. caustics
Global Illumination herhaling
• photon mapping
• pass 1: store
Global Illumination herhaling
• photon mapping
• pass 1: store– positie (x, y, z)– inkomende richting– vermogen (r, g, b)
Global Illumination herhaling
• photon mapping
• pass 1: store– positie (x, y, z)– inkomende richting– vermogen (r, g, b)
– in kd-tree
Global Illumination herhaling
• photon mapping
• pass 1: store– positie (x, y, z)– inkomende richting– vermogen (r, g, b)
– in kd-tree– los van geometrie
Global Illumination herhaling
• photon mapping
• pass 1: store– globale map– caustic map
Global Illumination herhaling
• photon mapping
• pass 1: store• pass 2: gather
– soort stochasticray tracing:
emissiedirecte belichtingcaustic mapindirecte belichtingglobale map
PBRT (www.pbrt.org)
• academisch• beperkte basisimplementatie
– moderne, leesbare algoritmes– performant, maar geen micro-optimalisaties
• extreem uitbreidbaar– bijna alles in plugins
• documentatie– directe overeenkomst theorie en implementatie– gekende terminologie
PBRT
• boek: Physically Based Rendering: From Theory to Implementation– M. Pharr, G. Humphreys. 2004.– incl. CD met bin, src v1.0 en prentjes
• site: www.pbrt.org– source code v1.02
• Windows (Visual Studio, Cygwin)• Linux / MacOS X
– plugins– errata & bugtracking
PBRT
• globale belichting, fysisch gebaseerd
• fotorealisme als je realistische invoer geeft
PBRT
• globale belichting, fysisch gebaseerd
• fotorealisme als je realistische invoer geeft
PBRT
• globale belichting, fysisch gebaseerd
• fotorealisme als je realistische invoer geeft
PBRT plugins
• accelerators: kdtree, grid• camera’s: perspective, environment,
orthographic• filters: mitchell, box, gaussian, sinc,
triangle• integrators: directlighting, irradiancecache,
path, photonmap, whitted, ...• samplers: lowdiscrepancy, stratified, ...
PBRT
• lights: area, distant, infinite, point, projection, spot, ...
• materials: matte, glass, mirror, plastic, shinymetal, translucent, uber, ...
• shapes: cone, cylinder, disk, loopsubdiv, nurbs, sphere, trianglemesh, ...
• textures: checkerboard, constant, dots, fbm, imagemap, marble, windy, wrinkled, ...
PBRT syntax
Identifier “class” (“type name” [value])*
Film “image” “string filename” [“foo”]Sampler “stratified” “bool jitter” [“true”]LightSource “spot” “float coneangle” [30]Shape “trianglemesh” “point P” [0 0 0 0 1 0 1 0 0] “normal N” [0 0 1 0 1 1 1 0 1] “vector S” [1 1 0 1 0 0 0 1 0] “integer indices” [0 1 2 ...]
Texture “green” “color” “constant” “color value” [0 1 0]Material “matte” “texture Kd” [“green”]Material “matte” “color Kd” [0 1 0]
PBRT syntax
LookAt 0 10 100 0 -1 0 0 1 0 # camera punt lookat punt up vector
Camera “perspective” “float fov” [30]
SurfaceIntegrator “path”
Accelerator “kdtree”
PBRT syntax
PixelFilter “box” “float xwidth” [.5] “float ywidth” [.5]
Sampler “stratified” “integer xsamples” [2] “integer ysamples” [2] “bool jitter” [“true”]
Film “image” “string filename” [“name.exr”] “integer xresolution” [800] “integer yresolution” [600]
PBRT
• OpenEXR (www.openexr.com)– Industrial Light & Magic (Lucasfilm)– high dynamic range– in postproces exposure aanpassen
PBRT syntax
WorldBegin
LightSource “point” “point from” [0 1 0]
AttributeBegin Translate 0 2 0 Rotate 135 1 0 0 # hoek en as Material “matte” “color Kd” [1 0 0] Shape “sphere” “float radius” [2] # altijd center [0 0 0], dus Translate AttributeEnd
WorldEnd
PBRT plugins
#include “shape.h”class Sphere: public Shape {public: Sphere(...);
BBox ObjectBound() const;
bool Intersect(const Ray &ray, float *tHit, ...) const; bool IntersectP(const Ray &ray) const;
float Area() const;
Point Sample(float u1, float u2, ...) const; float Pdf(...) const;};
PBRT plugins
Shape *CreateShape(...) { float radius = params.FindOneFloat("radius", 1.0f); return new Sphere(radius, ...);}
Shape “sphere” “float radius” [2]
Praktische rendering
• Eigen PC• Graphics “aquarium”
– Athlon 64 X2 (dual core)– uitbreiding
• PC-klas– 40-tal Pentium IV
• Cluster (www.vic.cc.kuleuven.be)– 400-tal Opteron250 cores– binnenkort 480-tal extra