COMP 175 COMPUTER GRAPHICS. Lecture 11: Recursive Ray Tracer. COMP 175: Computer Graphics April 9, Erik Anderson 11 Recursive Ray Tracer

Similar documents
Computer Graphics. Lecture 13. Global Illumination 1: Ray Tracing and Radiosity. Taku Komura

Computer Graphics. Lecture 10. Global Illumination 1: Ray Tracing and Radiosity. Taku Komura 12/03/15

Ray Tracing. Rendering and Techniques CS337 INTRODUCTION TO COMPUTER GRAPHICS. 1 of 50. Bin Sheng October 25, 2016

Lecture 10: Ray tracing

So far, we have considered only local models of illumination; they only account for incident light coming directly from the light sources.

Assignment 6: Ray Tracing

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S. Raytracing Basics. rendered in a matter of seconds with Travis Fischer s 09 raytracer

Ray Tracing. Kjetil Babington

COMP371 COMPUTER GRAPHICS

CS 428: Fall Introduction to. Raytracing. Andrew Nealen, Rutgers, /18/2009 1

Problem Set 4 Part 1 CMSC 427 Distributed: Thursday, November 1, 2007 Due: Tuesday, November 20, 2007

Lecture 18: Primer on Ray Tracing Techniques

Ray Tracing. CSCI 420 Computer Graphics Lecture 15. Ray Casting Shadow Rays Reflection and Transmission [Ch ]

Recursive Ray Tracing. Ron Goldman Department of Computer Science Rice University

Lighting. To do. Course Outline. This Lecture. Continue to work on ray programming assignment Start thinking about final project

Movie: For The Birds. Announcements. Ray Tracing 1. Programming 2 Recap. Programming 3 Info Test data for part 1 (Lines) is available

Lecture 17: Recursive Ray Tracing. Where is the way where light dwelleth? Job 38:19

Lighting and Shading

Photorealism: Ray Tracing

Texture. Texture Mapping. Texture Mapping. CS 475 / CS 675 Computer Graphics. Lecture 11 : Texture

CS 475 / CS 675 Computer Graphics. Lecture 11 : Texture

I have a meeting with Peter Lee and Bob Cosgrove on Wednesday to discuss the future of the cluster. Computer Graphics

Ray tracing. Computer Graphics COMP 770 (236) Spring Instructor: Brandon Lloyd 3/19/07 1

Ray Tracing. CS116B Chris Pollett Apr 20, 2004.

Ray-Tracing. Misha Kazhdan

Rendering Part I (Basics & Ray tracing) Lecture 25 December 1, 2015

Ray Tracing. Johns Hopkins Department of Computer Science Course : Rendering Techniques, Professor: Jonathan Cohen

Ray Tracing Basics I. Computer Graphics as Virtual Photography. camera (captures light) real scene. photo. Photographic print. Photography: processing

Ray Tracer Due date: April 27, 2011

COMP 175 COMPUTER GRAPHICS. Ray Casting. COMP 175: Computer Graphics April 26, Erik Anderson 09 Ray Casting

Ray Tracing. Foley & Van Dam, Chapters 15 and 16

Shading, Advanced Rendering. Week 7, Wed Feb 28

INFOGR Computer Graphics. J. Bikker - April-July Lecture 10: Ground Truth. Welcome!

Ray Tracing Foley & Van Dam, Chapters 15 and 16

CS 465 Program 5: Ray II

Announcements. Written Assignment 2 out (due March 8) Computer Graphics

Lecture 11: Ray tracing (cont.)

CS 325 Computer Graphics

Ø Sampling Theory" Ø Fourier Analysis Ø Anti-aliasing Ø Supersampling Strategies" Ø The Hall illumination model. Ø Original ray tracing paper

Lets assume each object has a defined colour. Hence our illumination model is looks unrealistic.

Practical 2: Ray Tracing

CS 488. More Shading and Illumination. Luc RENAMBOT

Implementation Issues

Lighting and Shading Computer Graphics I Lecture 7. Light Sources Phong Illumination Model Normal Vectors [Angel, Ch

Topic 12: Texture Mapping. Motivation Sources of texture Texture coordinates Bump mapping, mip-mapping & env mapping

CPSC GLOBAL ILLUMINATION

CSE528 Computer Graphics: Theory, Algorithms, and Applications

Topic 11: Texture Mapping 11/13/2017. Texture sources: Solid textures. Texture sources: Synthesized

Assignment 3: Path tracing

Indirect Illumination

03 RENDERING PART TWO

Computer Graphics. Si Lu. Fall uter_graphics.htm 11/22/2017

Raytracing. COSC 4328/5327 Scott A. King

Introduction Ray tracing basics Advanced topics (shading) Advanced topics (geometry) Graphics 2010/2011, 4th quarter. Lecture 11: Ray tracing

Topic 11: Texture Mapping 10/21/2015. Photographs. Solid textures. Procedural

Local Illumination. CMPT 361 Introduction to Computer Graphics Torsten Möller. Machiraju/Zhang/Möller

Ambien Occlusion. Lighting: Ambient Light Sources. Lighting: Ambient Light Sources. Summary

Computer Graphics (CS 543) Lecture 13b Ray Tracing (Part 1) Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)

COMP30019 Graphics and Interaction Ray Tracing

Recall: Basic Ray Tracer

Ray tracing. EECS 487 March 19,

Illumination. Courtesy of Adam Finkelstein, Princeton University

COMP environment mapping Mar. 12, r = 2n(n v) v

CS Simple Raytracer for students new to Rendering

Reading. Ray Tracing. Eye vs. light ray tracing. Geometric optics. Required:

Computer Graphics. Ray Tracing. Based on slides by Dianna Xu, Bryn Mawr College

Ray Tracing. CS334 Fall Daniel G. Aliaga Department of Computer Science Purdue University

Sung-Eui Yoon ( 윤성의 )

Deferred Rendering Due: Wednesday November 15 at 10pm

Recollection. Models Pixels. Model transformation Viewport transformation Clipping Rasterization Texturing + Lights & shadows

Reflection and Shading

Indirect Illumination

Effects needed for Realism. Computer Graphics (Fall 2008) Ray Tracing. Ray Tracing: History. Outline

Illumination & Shading: Part 1

Supplement to Lecture 16

Local vs. Global Illumination & Radiosity

Ray Tracing. Brian Curless CSEP 557 Fall 2016

CS354 Computer Graphics Ray Tracing. Qixing Huang Januray 24th 2017

Illumination and Shading

Lighting and Reflectance COS 426

Photorealistic 3D Rendering for VW in Mobile Devices

Computer Graphics Lecture 11

Raytracing CS148 AS3. Due :59pm PDT

Motivation. Sampling and Reconstruction of Visual Appearance. Effects needed for Realism. Ray Tracing. Outline

Shadows. COMP 575/770 Spring 2013

RAYTRACING. Christopher Peters INTRODUCTION TO COMPUTER GRAPHICS AND INTERACTION. HPCViz, KTH Royal Institute of Technology, Sweden

Raytracing & Epsilon. Today. Last Time? Forward Ray Tracing. Does Ray Tracing Simulate Physics? Local Illumination

Topics and things to know about them:

CPSC / Texture Mapping

Introduction to Visualization and Computer Graphics

CS 431/636 Advanced Rendering Techniques

CS 4620 Program 4: Ray II

diffuse diffuse reflection refraction diffuse mapping diffuse reflection reflection filter mapping mapping reflection

CS 130 Final. Fall 2015

CS-184: Computer Graphics. Administrative

Ray Tracing. Local Illumination. Object Space: Global Illumination. Image Space: Backward Ray Tracing. First idea: Forward Ray Tracing

RAY TRACER. Winter 2013 Help Slides

CS3500 Computer Graphics Module: Lighting and Shading

Lecture 19: All Together with Refraction

Simple Lighting/Illumination Models

Transcription:

Lecture 11: Recursive Ray Tracer COMP 175: Computer Graphics April 9, 2018 1/40

Note on using Libraries } C++ STL } Does not always have the same performance. } Interface is (mostly) the same, but implementations differ and compilations also differ. } Generally very good, but you don t always know what s happening under the hood. } OpenGL: } Same idea The important thing is that interface is the same. 2/40

Summary Simple, non-recursive raytracer P = eyept for each sample of image Compute d for each object Intersect ray P+td with object Select object with smallest non-negative t-value (visible object) For this object, find object space intersection point Compute normal at that point Transform normal to world space for each light Use world space normal for lighting computations 3/40

Lighting Equation I = I akaoa + $#" ambient åm - lights f att I m [ kdod ( n l) + $!#!" diffuse f ksos ( r v) ] $!#!" specular } Recall that: } I is intensity (for both light and the final color, which appears on the left side of the equation) } O is for object constant } k is for light constant } fatt is for attenuation } f is the amount of specular (how broad/narrow the specular region is) } n, l, r, v are normal that represent normal, light direction, reflective ray, and view vector respectively } The lighting is summed over all lights in the scene (m lights in the equation) in a linear fashion. 4/40

Shadows } In the intersect assignment, we did the following things: 1. Created rays 2. Intersected rays with objects in the scene 1. Found the nearest object 2. Identified the intersection point and the normal 3. For the intersection point, solved the lighting equation } What about shadows? } How would you modify your intersect code to render shadows? 5/40

Shadows } Review our previous lighting equation: numlights objectintensity λ = ambient + Σ attenuation lightintensity λ [diffuse + specular] light = 1 I = I akaoa + $#" ambient åm - lights f att I m [ kdod ( n l) + $!#!" diffuse f ksos ( r v) ] $!#!" specular 6/40

Shadows } Each light in the scene contributes to the color and intensity of a surface, but If and only if it reaches the object! } could be occluded by other objects in scene } could be self-occluding } Construct a ray from the surface intersection to each light } Make sure light is first object intersected } if first object intersected is light, count light s full contribution } if first object intersected is not light, do not count (ignore) light s contribution } this method causes hard shadows; soft shadows are harder to compute 7/40

Recursive Ray Tracing Example Whitted 1980 } Ray traced image with recursive ray tracing: transparency and refractions 8/40

Recursive Ray Tracing (1/4) Simulating global lighting effects (Whitted, 1979) 9/40

Recursive Ray Tracing Simulating global lighting effects (Whitted, 1979) } By recursively casting new rays into scene, we can look for more information } Start from point of intersection } We d like to send rays in all directions, but that s too hard/computationally taxing } Send rays in directions likely to contribute most: } toward lights (blockers to lights create shadows for those lights) } specular bounce off other objects to capture specular inter-object reflections } use ambient hack to capture diffuse inter-object reflection } through object (transparency/refraction) Shadow Ray Recursive Rays Primary Ray 10 of 48 Erik Anderson November 11 Recursive 4, 2010 Ray Tracer 10/40

Recursive Ray Tracing (2/4) } Trace secondary rays at intersections: } light: trace a ray to each light source. If light source is blocked by opaque an object, it does not contribute to lighting } specular reflection: trace reflection ray (i.e. about normal vector at surface intersection) } refractive transmission/transparency: trace refraction ray (following Snell s law) } recursively spawn new light, reflection, and refraction rays at each intersection until contribution negligible / max recursion depth reached } Limitations } recursive inter-object reflection is strictly specular } diffuse inter-object reflection is handled differently } Oldies-but-goodies } Ray Tracing Silent Film, A Long Ray s Journey into Light (http://www.youtube.com/watch?v=b_uqzlbfz4y) 11/40

Recursive Ray Tracing } Your new lighting equation: f I = IakaOa + s s r #"! åm - f lights attim[ kdod ( n l) + ksos ( r v) ] + k O I + #$"$! #$"$! #"! ambient diffuse specular reflected ktot It #"! transmitted } I G is the light intensity that comes from the secondary reflective ray } Finding the value of I G is the recursive part of a recursive ray tracer } You stop the recursion when either: } Maximum recursive level is reached (defined by the user, e.g., 3) } The global contribution falls below a threshold (notice that I G is multiplied by K I, which is the light s specular constant and should be <= 1) } I J is for transmitted rays (for refraction) 12/40

Transparent Surfaces (Transmitted Rays) } For a partially transparent surface I K = 1 k JP I KP + k JP I KR } I K = the final intensity (λ denotes a color channel, r, g, or b) } k JP = the transparency value of surface 1 (0 = opaque, 1=fully transparent) } I KP = the intensity calculated at surface 1 } I KR = the intensity calculated at surface 2 Surface 1 I λ1 I λ2 Surface 2 13/40

Transparent Surface (Refraction) } Refraction is modeled using Snell s Law sin θ G sin(θ U ) = η G η U } r = refraction, i = incident } η G =index of refraction for medium 2 } η U =index of refraction for medium 1 } Note that we need to model each color channel (R, G, B) independently, so we could re-write the equation as: sin θ G sin(θ U ) = η G W η UW medium 1 r medium 2 14/40

Reflection + Transparency n isect 2 isect 1 } Remember that both I X and I Y contribute to the final intensity of the light (I) 15/40

Reflection + Transparency + Direct Illumination L 1 L 2 n isect 2 isect 1 } With direct illumination, be mindful of potential shadows } That is, remember to compute if a light source can reach the intersection point (isect 1) 16/40

Reflection + Transparency + Direct Illumination + Recursion L 1 L 2 n isect 2 isect 1 } In this particular case, if we examine the contribution of I X at the recursive depth of 1 (that is, no more secondary rays), I X should contribute no light 17/40

Recap of Recursive Ray Tracing } Again, there are 3 types of secondary rays: } Shadow Check, Reflection, Refraction } Controlling the recursion: } Recursively spawn secondary rays until lighting contribution falls below a certain threshold OR a max recursive depth is reached } Skip reflection rays if the material properties of the object is not reflective } Skip refraction rays if the object is opaque 18/40

Tree of Light Rays } (Note we re not showing the shadow checks in these images) } T is for Transmitted Rays (refraction), and R is for Reflective Rays (reflection) 19/40

Programming Tip! } Once we find an intersection (P) and cast shadow check rays against light sources (L1 and L2), we need to intersect the rays with the object of which P is on. } In checking with L1, this works great. We find that there is an intersection between P and L1, and the intersection occurs at t=0 (where P is, that is, starting point of the ray) } In checking with L2, this approach falls apart. We will also find that an intersection occurs at t=0!! } Solution: move the intersection out by epsilon amount L 1 n P L 2 20/40

Questions? 21/40

Texture Mapping with Ray Tracer } Texture mapping is supported by OpenGL. } The general idea is to wrap a texture around a geometric surface } It can be incorporated into a Ray Tracer, which will allow for additional lighting effects (diffuse, ambient, specular, transparency, shadows, etc.) 22/40

Texture Mapping with Ray Tracer 23/40

Texture Mapping } In general, we can think of texture mapping as a function that maps between two domains, position on the surface of an object (domain), and a pixel value from the texture image (co-domain) } This is typically done in two steps: 1. Map a point on the geometry to a point on a unit square 2. Map the unit square onto a texture image 24/40

2. Map from Unit Square to Texture Image } Map a point in the unit (u, v) square to a texture of arbitrary dimension } This can be done by linear interpolation between the coordinate space of the unit square to the texture } Unit Square coordinate: u is from 0.0-1.0, v is also from 0.0-1.0 } Texture coordinate: w is from 0-width pixels, and h is from 0-height pixels v (1.0, 1.0) (200, 100) unit texture square (0, 0) texture map (0.0, 0.0) u } In the above example: } (0.0, 0.0)->(0, 0); (1.0, 1.0)->(200, 100); (0.7, 0.45)->(140, 45) } Note that the coordinates in (u, v) might not map perfectly to integer values that correspond to pixels. Need to do some interpolation (filter) 25/40

1. Map a point on the geometry to a point on a unit square } We have 4 geometric objects to consider in our ray tracer: } Cube } Sphere } Cone } Cylinder } Cube is pretty easy The faces of the cube map nicely to a unit square 26/40

Mapping a Cube - Tiling w J]^J_G], h J]^J_G] (0, 0) texture map } Note that we can allow for tiling if the face of a cube is too large } If we map a single texture, it could stretch and look terrible } So a possible alternative is to use tiling 27/40

Tiling Example Without Tiling Texture With Tiling 28/40

Mapping a Cylinder / Cone } Recall: the goal is to map a point in (x, y, z) into (u, v) } For a cylinder, we can break down the object into two parts: } The cap, which we will treat as a square surface } The body, which we will unroll into a square (see below) } Cone is a special case of a cylinder, need to interpolate as we go up from the base to the tip z y u v P P x u =.85 z P x v =.4 29/40

z Mapping a Cylinder / Cone } Help on computing the u value: P P x } We need to map all points on the surface to [0, 1] } The easiest way is to say u = d, and use the dot product to find θ, but Re it s hard to determine the signs (e.g. acos returns a value between 0 and π, same for atan) } For example, atan (1, 1) = atan (-1, -1) = e R } So instead we use atan2 (x, y), which returns a values between π and π. (Notice the discontinuity at u = 0.5) u =.85 30/40

Mapping a Sphere } Find (u, v) coordinate for P } Find u the same way as before for cylinders } v maps to the latitude of the sphere between 0 and 1 (the two caps) } At v=0 and v=1, there is a singularity. So set u = a predefined value (e.g., 0.5) } v is a function of the latitude of P: φ = sin ip P k r π 2 φ < π 2 r = radius v = φ π +.5 31/40

Questions? 32/40

Texture Mapping Complex Geometry } Sometimes, texture mapping the polygons of an object doesn t get what you are looking for Original Geometry Texture each face separately (notice discontinuities) Texture the object as a continuous object 33/40

Basic Idea } Use a bounding sphere } Find the ray s intersection (in object space) with a bounding sphere, called P } Find P s coordinate in the texture map s (u, v) coordinate } Apply the texture to the point on the underlying geometry (the house) 34/40

Slightly More Advanced } Turns out that we don t have to use the bounding sphere at all. } Just intersect the geometry (house) at point P, and assume that P lies on a sphere. } Same result, but need to find the radius at different parts of the geometry } Compute a new radius for each intersected point by finding the center of the geometry (house) and connect the center to the intersection point 35/40

Slightly More Advanced } Turns out that you don t have to use a sphere as a bounding surface } You can use a cylinder or planar mappings for complex objects. Each has drawbacks: } Sphere: warping at the poles of the object } Cylinder: discontinuities between cap and body of the cylinder } Planar: one dimension needs to be ignored } But can do cool tricks with this } The problem is kind of hard. Since the object is in 3D, mapping it to 2D usually means some drawback 36/40

Questions? 37/40

Supersampling } Notice the jaggies in this (recursively) ray-traced image } What s wrong with it? } How can we fix it? 38/40

Supersampling } Left image: one ray per pixel (through pixel center) } Right image: 5 rays per pixel (corners + center) } Do weighted average of the rays to color in the pixel } Adaptive sampling } Supersampling: more samples where we need it (e.g., where geometry or lighting changes drastically) } Subsampling: fewer samples where we don t need detail (faster computation) } Beam tracing: track a bundle of neighboring rays together 39/40

COMP 175 COMPUTER GRAPHICS Supersampling With Supersampling Erik Anderson 11 Recursive Ray Tracer Without Supersampling 40/40