- 101 Views
- Uploaded on
- Presentation posted in: General

Ray Tracing 2

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Ray Tracing 2

- Anti-aliasing
- Surface Parametrization
- Soft Shadows
- Global Illumination
- Path Tracing
- Radiosity

- Exercise 2

Ray Casting is a form of discrete sampling.

Rendered Image:Sampling of the groundTruth at regular intervals

Ground Truth:

An Exact MathematicRepresentation

Signal Frequency?

Sampling Frequency?

Aliasing: A distortion or artifact as a result of sampling.

- Higher frequency removal
To reproduce the signal fully - Nyquist rate

Signal Sampled

- Related problem – Moiré

- Staircasing
Pixels on the boundary

- Anti-aliasing - The attempt to reduce or eliminate aliasing artifacts

- Instead of sampling one point in every pixel. Sample k2times (for some n) in uniform intervals
- Set the pixel color to the average of the k2colorssampled

Single Pixel - Multiple Sample

Single Pixel - Single Sample

- Constructing a ray through a pixelParameters:
- Eye point – P
- View direction - towards
- Up direction
- Field of view – (xfov, yfov)
- Distance to screen – d
right = towards x up

right and up define theorientation of the screen.

P0 and d define where it’s at.

xfov

center of screen

Pc

yfov

d

up

towards

P0

right

Pc = P0 + towards*d

P is the pixel at (xpixel, ypixel) = (2, 2)

Calculate (xscreen, yscreen)

P = Pc + xscreen*right + yscreen*up

V = (P - P0) / ||P - P0||

ray direction to P.

xfov

P

up

Pc

right

yfov

d

V

towards

ray = P0 + t*V

P0

- Transforming (xpixel, ypixel) to (xscreen, yscreen)

pixel-width = 320 px

xfov = 2.0

+x

+y

+up

yfov = 2.0

Pc

+right

pixel-height = 240 px

Screen – In Object Space

Application Window

Pixel coordinates can now have fractions

Pc = P0 + towards*d

P is the pixel at (xpixel, ypixel) = (2.5, 2.5)

Calculate (xscreen, yscreen)

P = Pc + xscreen*right + yscreen*up

V = (P - P0) / ||P - P0||

ray direction to P.

do this k2 times, average results.

xfov

P

up

Pc

right

yfov

d

V

ray = P0 + t*V

towards

P0

1 sample per pixel

Where should you sample the pixel?

0

½

1

1

0

½

¼

¾

0

0

4 sample per pixel

¼

½

½

¾

1

1

9 sample per pixel

- Global uniformity:Distance betweenSamples is always the same
- What NOT to do:

Two samples in the same point

If the difference between adjacent samples is too great, divide the pixel to 4 and cast more rays

- Smooth pixels need only 4 samples
- Edges can still be reproduced smoothly
- Reuse common rays

- Uniform sampling often still can’t account for frequency issues
- Sub-divide the pixel to a grid
- Choose a random point in every cell

- Makes the interval of sampling non-uniform
- Reduce aliasing by introducing noise

How to add a 2D texture to a surface embedded in 3D?

(x,y,z)

P4

P3

Simple case – rectanglular plane

u

P

v

P1

P2

u [0,1], v [0,1]

P = -v * (P3-P1) + u * (P2-P1)

Baricentric coordinatesEquation

1. Extract (u,v) from P

2. Get the pixel color at (u,v)

P4

P3

Simple case - rectanglular plane

u

P

v

P1

P2

u [0,1], v [0,1]

P = -v * (P3-P1) + u * (P2-P1)

Baricentric coordinatesEquation

1. Extract (u,v) from P

2. Get the pixel color at (u,v)

P

A Little more complex - Sphere

u

v

P = (x,y,z) (,,r)

- u =, v =
Sphertical Coordinates

u [0,1], v [0,1]

1. Extract (u,v) from P

2. Get the pixel color at (u,v)

General Case – A Triangle Mesh

P

A Little more complex - Sphere

u

v

P = (x,y,z) (,,r)

- u =, v =
Sphertical Coordinates

u [0,1], v [0,1]

1. Extract (u,v) from P

2. Get the pixel color at (u,v)

Questions?

- So far we’ve see only “ideal” light sources
- Light from infinity
- Point Light
- Spot Light

- These produce“Hard Shadows”
- To Create a realisticShadow one option isto use a morerealistic light source

Directed Light

Point Light

Area Light

- Point light - Hard Shadows

Lighs Source

Full Shadow

Umbra

- Simple area light - simulated using a uniform grid of point lights.

Lighs Source

Full Shadow Umbra

Soft Shadow Penumbra

- Disadvantages of the simple uniform method:
- Very time consuming
- If the grid resolution is low, artifacts appear in the shadows.

Monte-Carlo Area light

- Light is modeled as a sphere
- Highest intensity in the middle. Gradually fade out.
- Shoot n rays to random points in the sphere
- Average their value.

- Two types of randomized, probabilistic methods for constructing an algorithm
- Results are statistic – Has an expectancy E(X) to be correct.
- Monte Carlo:
- Has a predictable time complexity.
- Result may not be correct.
- Better results the more you run it

- Las Vegas:
- Time complexity not guaranteed
- Always returns the correct answer

- Convert Monte-Carlo to Las-Vegas?

In the real world light is everywhere.

- Reflects in every direction from every surface onto every surface.
- Anywhere in the world, light comes from infinite directions around.
In the lighting equation we’ve used the Ambient intensity to approximate this.

- Conventional Ray Tracing:
- Cast rays from eye through each pixel
- Trace secondary rays to light sources and reflections

- A generalization of the concept of Monte-Carlo area light
- Cast rays from eye through each pixel
- Cast random rays from the visible point, average contributions

- Cast rays from eye through each pixel
- Cast random rays from the visible point, average contributions
- Recurse

- Cast rays from eye through each pixel
- Cast random rays from the visible point
- Recurse, accumulate contributions

- Cast random rays from the visible point
- Recurse, accumulate contributions
- Sample light from all points we visited

1 random ray per pixel, 1 level recursion

16 random rays per pixel, 3 level recursion

64 random rays per pixel, 3 level recursion

64 random rays per pixel, 3 level recursion

NoticeColor Bleed

To White ball

16 random rays per pixel1 level recursion

16 random rays per pixel100 level recursion

- Ray Casting:
- Cast rays from eye through each pixel, find first hit

- Ray Tracing:
- Cast rays from eye through each pixel, find first hit
- Recourse- Ray changes course/divides into few rays
- Accumulate all results.

- Path Tracing
- Cast rays from eye through each pixel, find first hit
- Recourse- Shoot random rays in the reflect hemisphere
- Accumulate All results

1-3 rays per recursion step

1-100 rays per recursion step

- Direct Illumination
- Find a interaction between objects and emitters of light
- “How much light from light source X hits this point”
- Ray Tracing

- Global Illumination
- Find interaction between objects and complete environment
- “How much light hits this point”, “Indirect lighting”
- Path Tracing
- Faked with The Ambient constant in the light equation.
- Radiosity
- Photon mapping

- A different approach to Global Illumination
- Divide the scene into a set of small areas
- The radiosicy of a patchis the total amount of lightemitted from it
- Calculate all the amountof light a patch receives fromall other patches.
- Calculate the radiosity
- Iterate.

Calculating the amount of light a patch receives

- Construct a “Hemicube” on the patch
- Render the scene on the hemicube
- Average the color.

Rendering on a hemicube

Light emitted = Color * Light received

Initial State

First Iteration

Compute light emissions once,

View from any angle!

32nd iteration

320th Iteration

Direct Illumination

Radiosity

- Using a uniform mesh?
- Wasteful. Smooth areas don’t need a great level of detail

- Hierarchical subdivision
- Areas with large changes get subdivided.