190 likes | 351 Views
Monte Carlo Path Tracing Coursework Notes. Insu Yu (Research Fellow) i.yu@cs.ucl.ac.uk James Tompkin (Research Engineer & T.A.) j.tompkin@cs.ucl.ac.uk (email me with questions). What you need to do (in brief). Shoot many rays through each pixel with stratified, jittered sampling.
E N D
Monte Carlo Path Tracing Coursework Notes Insu Yu (Research Fellow) i.yu@cs.ucl.ac.uk James Tompkin (Research Engineer & T.A.) j.tompkin@cs.ucl.ac.uk (email me with questions) Insu Yu 2006, James Tompkin 2010
What you need to do (in brief) • Shoot many rays through each pixel with stratified, jittered sampling. • Modify the direct lighting calculations to add support for area light sources. • Add support for sampling a BRDF. • Add support for evaluating the BRDFs at a surface point. • Put it all together to form paths that sample all the integrals; pixels, direct lighting and BRDFs. • Add importance sampling OR unbiased path termination (Russian roulette). • Make your own scenes.
Path Tracing Review
Simple Stochastic Path Tracing • Radiance for each ray (eye to pixel in view plane) is calculated by • The integral cam be evaluated using Monte Carlo integration by generating N random direction ψi on hemisphere Ωx distributed according to some probability density function P(x)
Monte Carlo Path Tracing • Rendering Equation
The Coursework Notes for each part
Part 1: Stratified Jittered sampling Function: LitScene::renderPixel, SimpleCamera::StratifiedRandomRay • Generate N x N stratified Sample per pixel at (i,j) • Generate random variable λ1 & λ2 to index stratified sample • Generate Ray: COP to sampled position at (i+ λ1,j+ λ2) • Radiance = Total Radiance / N_RAYS_PER_PIXEL • Remember to change N_RAYS_PER_PIXEL = 1 to 1, 64, 256, 1024 rays, etc.
Part 2: Direct Lighting Example: Spherical Light sampling • Samples the sphere over the solid angle as seen from a point • Find direction toward sphere in polar coordinates : • Transform local to world coordinates with U,V,N. • Find intersection point (x’): • Reference: Section 3.2 'Sampling Spherical Luminaries’ in "Monte Carlo Techniques for Direct Lighting Calculations," ACM Transactions on Graphics, 1996
Part 2: Direct Lighting Polygon Light sampling Function: Polygon::TriangularSampling, Polygon::RectangularSampling • Sampling Rectangular Luminaries • The uniform random sampled are given by: • Sampling Triangular Luminaries • Use barycentric coordinates of triangles. • The uniform random sampled are given by: • Sampling Polygon Luminaries • Up to you! • Reference: Section 3.3 'Sampling Planar Luminaires’ in "Monte Carlo Techniques for Direct Lighting Calculations," ACM Transactions on Graphics, 1996
Part 3,4,5: Lambertian Reflection ModelFunction: lambertianBRDF::reflection, lambertianBRDF::brdf
Part 3,4,5: Modified Phong Reflection ModelFunction: phongBRDF::reflection, phongBRDF::brdf
Part 3,4,5: Modified Phong Reflection ModelFunction: phongBRDF:reflection, phongBRDF:brdf
Part 3,4,5: Modified Phong Reflection Model • Reading Lafortune and Willem’s Using the Modified Phong Reflectance Model for Physically-based Rendering will help.
Part 6: Importance Sampling/Russian Roulette • Look up the references on the webpage for these techniques to read more about them. • Reading Avro and Kirk’s Particle Transport and Image Synthesis is a good place to start. • Try to demonstrate advantages and disadvantages of path tracing in your scenes. • What limitations exist? Which types of scene require more sampling to reduce noise? Part 7: D.I.Y. scenes
General Tips • Use the paper references! • They contain valuable background information which will help you understand the problem. • Dutre’s Global Illumination Compendium is named precisely. • A simple screenshot function exists in mainray.cpp for automating capture to .bmp. You can use it for your documentation. • screenshot(int windowWidth, int windowHeight, char* filename) • Any other questions, e-mail j.tompkin@cs.ucl.ac.uk