ray-tracing photorealism reflection, refraction bump maps
Post on 21-Dec-2015
226 views
TRANSCRIPT
Ray-tracing
PhotorealismReflection, Refraction
Bump maps
Overview
• Textures review• Lighting re-visited• Photorealism + Global Illumination
– Reflection– Refraction
• Bump Maps / Normal maps• Lab
© Gilles Tran
The Phong Illumination algorithm cannot generate images like these
The Rendering Equation
• I(x, x’) = intensity of light passing from x to x’ – (two point transport)
• g(x, x’) =
– (geometry factor)• (x, x’) = intensity of light emitted by x and passing to x’ • ρ (x, x’, x”) = bi-directional reflectance scaling factor for
light passing from x” to x by reflecting off x’• S = all surfaces in the scene
s
dxxxIxxxxxxxgxxI ]")",'()",',()',()[',()',(
0 if x and x’ are not mutually visible
1/r2 where 'xxr
[Kajiya 1986]
Attenuation (distance from x to x’)
A physicists representation of light transport in the scene, describing the amount of light going from any point x to another point x’:
• Light_transport_from B to A:– Emmitance of B– Visibility of B from A– Distance to B from A
• Also:– Reflectance of B– Light_transport_fro
m Ci to B• Emmitance of C• Visibility of C from B• Distance to C from B
A
B
C1
C2
C3
D1
Assumptions• I on both sides of the equation suggests an
infinitely recursive path of light transfer.– We need to make some simplifying assumptions in order
to solve this equation
• Local Illumination algorithms assume light only “bounces” once travelling from light source to a point in the scene and then to the eye
• Global Illumination algorithms account for light transport between several points on the scene before reaching the eye (several bounces)– Thus can account for refraction, shadows, reflections etc.
More expensive, usually used in off-line rendering
Less realistic, usually used in real-time rendering
Local vs. Global Illumination
LocalLocal GlobalGlobal
Illumination depends on local object &light sources only
Illumination at a point can dependon any other point in the scene
Ray Tracing• A photo-realistic
rendering algorithm
• Current ray tracing methods are attributed to Turner Whitted (Bell Labs. 1980) Whitted Illumination Model
• First implementation of ray tracing in computer graphics = Appel (IBM 1968)
• Recursive Raytracing, 1979• Recorded in “An Improved
Illumination Model for Shaded Display” (Bell Labs, 1980).
Ray-tracing based on ideas employed since early Renaissance artists e.g. daVinci & Dürer
Albrecht Dürer (1471-1528)
Ray Tracing
• The Direct Diffuse Term Ilocal is calculated empirically (using Phong illumination)
• In the global ray-traced terms, diffusion of light due to surface imperfections is totally ignored.
I(P) = Ilocal(P) + krgI(Pr) + ktgI(Pt)Local term
(as in Phong)Reflected Transmitted
Ray Tracing from Eye
Traditional ray-tracing
Tracing from light source
Starting at the light position traces many rays that never reach the eye. Thus the traditional ray-tracing method is to start at the eye and trace rays back-wards to the source.
Eye Ray and Object Intersection
Cast a ray from camera position through each pixel into the scene.
Calculate where this intersects with objects in the scene. Get the first intersection.
Diffuse Term
• Extend a “Shadow Feeler” (or light ray) and see if it is occluded by an object in the scene
• If so the object is in shadow from this light source • Otherwise solve the phong model to calculate the
contribution of this point to the colour of the pixel.• If object is diffuse stop here.
Reflection
• For this new ray, we will again check whether…– it intersects an object, – if so is this object in shadow– what is the contribution of this object to the colour of the
pixel?
• Each ray contributes to the colour of the pixel it originated from
• If object is specular THEN create a ray in the direction of perfect specular reflection.
Refraction
• Similarly if the object is transmissive (not-opaque) then generate a transmitted (or refracted) ray and repeat…
The Angle of Refraction
• When light passes from a material of one optical density to another it changes direction.
• The amount by which the direction changes is determined by the optical densities of the two media.
• Optical density (and thus the amount of bending is related to a value we call the refractive index of the material.
45i
32r 28r 17r
Diamond
Air
Glass
Air
Water
Air
45i 45i
Index of Refraction (ior)Material Index of Refraction
Vacuum 1.0000 <--lowest optical density
Air 1.0003
Ice 1.31
Water 1.333
Ethyl Alcohol 1.36
Plexiglas 1.51
Crown Glass 1.52
Light Flint Glass 1.58
Dense Flint Glass 1.66
Zircon 1.923
Diamond 2.417
Rutile 2.907
Gallium phosphide 3.50 <--highest optical density
You can try these refracted index values in POVRay.
Ray Tracing Summary
Ray Tracing Issues
1) Cast a ray2) Determine Intersections3) For closest Intersection:
– Extend light(shadow feeler) ray + calculate local term
– Spawn Transmitted Ray (step 1)– Spawn Reflected Ray (step 1)
I(P) = Ilocal(P) + krgI(Pr) + ktgI(Pt)
Ray Tree
The spawning of reflected and refracted rays can be represented in tree structure.
Terminating Recursion
• All of the spawned rays contribute to the pixel that the tree originated from.
• However each new ray contributes less and less to the pixel.
• Unlike in the real-world, we can’t keep bouncing around for ever so we stop the recursion at some stage recursion clipping.– Stop after a set number of bounces.– Or stop when the contribution becomes less
than a certain value.
Recursion Clipping
max level = 1max level = 1 max level = 2max level = 2
max level = 4max level = 4max level = 3max level = 3Very high maximum recursion level
Object Intersection
• Intersection testing is solved mathematically. But is an inherently expensive geometrical problem. (out of the scope of current lecture)
Where does ray intersect object?
Where does ray intersect scene?
for each pixel in viewport{ determine eye ray for pixel intersection = trace(ray, objects) colour = shade(ray, intersection)}
Intersection trace(ray, objects){ for each object in scene intersect(ray, object) sort intersections return closest intersection}
The Ray Tracing Algorithm
colour shade(ray, intersection){ if no intersection return background colour
for each light source if(visible) colour += Phong contribution
if(recursion level < maxlevel) { ray = reflected ray intersection = trace(ray, objects) colour += refl*shade(ray, intersection) ray = transmitted ray intersection = trace(ray, objects) colour += trans* shade(ray, intersection) } return colour}
The Ray Tracing Algorithm
Reflection
finish{
reflection 0.5//phong etc…
}
Translucency
texture { pigment { rgbf <1, 1, 1, .8> } }
Filter value of 0 is fully opaque, 1 is fully transparent.
Refraction texture { pigment { rgbf <1, 1, 1, .8> } } interior { ior 3 }
Caustics texture { pigment { rgbf <1, 1, 1, .8> } } interior { ior 3 caustics 1 }
Bump Mapping
A “real” bump distorts the directions of the normals (this effects calculations of light reflectance)
“Fake” bumps created by distorting the normals although the geometry is still flat.
A bump-map texture applied to a flat polygon.
Normal Maps
• We can add bumps, dents, wrinkles, ripples and waves to our objects.
Sample Scene (no normal maps)
box{ < -4, -.25, -4 > < 4, .25, 4 > pigment { White } finish { reflection .4 } normal { //add normal pattern here **** } }
Bumps
normal { bumps 1 }
Dents
normal { dents 1 }
Wrinkles
normal { wrinkles 1 }
Ripples
normal { ripples 1 }
Waves
normal { waves 1 }
Bump Map
normal { bump_map { gif "bumpmap.gif" } rotate 90*<1, 0, 0> scale 8 }
Lab
1. Reflection in POV-Ray: use the reflection parameter in the finish statement to generate photorealistic reflective surfaces
2. Refraction in POV-Ray: use the interior definition and ior values to generate photorealistic refraction
3. Use a bump map/ normal map to generate some of the following effects:
Normal Maps
dents
bumps ripples
wrinkles
Bump Map
Bump Map image file https://www.cs.tcd.ie/John.Dingliana/bumpmap.gif
(or use your own)
POV-Ray Objects
• If you want to create more interesting scenes with real world objects, you can find POV-Ray objects on several sites including:
• http://objects.povworld.org/cat/