**CS888: Advanced Topics in Computer Graphics** **(Ray Tracing Seminar)** ![Denoising an image produced by Monte Carlo path tracing using the method of [Vogels et al. 2018](http://drz.disneyresearch.com/~jnovak/publications/KPAL/KPAL.pdf)](denoising.jpg) **Instructors**: [Morgan McGuire](https://casual-effects.com), [Craig Kaplan](http://www.cgl.uwaterloo.ca/csk/), [Stephen Mann](http://www.cgl.uwaterloo.ca/smann/) This is a seminar course with a majority of the lecture time devoted to student-led presentations. In each session, a student will present and critique one or two assigned papers related to the term's topic. They will discuss the paper or papers, and offer their own thoughts about what could have been done differently and how the work could be extended. The rest of the students are expected to read the papers, attend the presentations, and participate in the following discussion. Students who take the course for credit are also expected to complete a small project at the end of the term. Topics covered: - Monte Carlo Integration - Markov Chain Monte Carlo - Bounding Volume Hierarchies - Parallel Ray Tracing - Quasi-Monte Carlo and Low-Discrepancy Patterns - Photon Mapping - Path Tracing - Metropolis Light Transport - Participating Media - Image Reconstruction (Denoising) Room: DC 2568
Time: Friday 10am-1pm
First meeting September 6, 2019 Student Reponsibilities =============================================================================== Background ------------------------------------------------------------------------------- - Intro graphics through Whitted ray tracing (CS488/688) - Derivative and integral calculus (MATH138) - Probability (STAT230) Audit ------------------------------------------------------------------------------- Students who wish to audit the course must: - Read all assigned papers - For each paper, write a one-paragraph summary distinguishing that paper from previous work - Attend all lectures - Participate in discussions - Present one seminar Credit ------------------------------------------------------------------------------- Students who take the course for credit must complete all the above work as well as complete a programming project at the end of the term. Marks will be assigned as follows: - Participation (including attendance and weekly paragraphs): 25% - Warmup programming project (Path Tracing): 10% - Seminar presentation and lecture notes: 30% - Project (including written report): 35% Meta-Topics =============================================================================== We begin the course by discussing strategies for reading technical papers in computer graphics rendering and how you should present and critique such work. The remaining lectures will be by students in accordance with these guidelines. Implicit goals of the course are to teach you to work with primary sources in this field, to develop your intuition for important techniques and problems, and to connect research theory with implementation practice. At the beginning of the course, we'll present two lectures reviewing ray tracing, the rendering equation, importance sampling, Monte Carlo, path tracing, and parallel processing. These will use the Graphics Codex for supplemental reading and cover the material for the warmup programming project of implementing a naive pure path tracer. Schedule =============================================================================== We will read a subset of the following papers, driven by enrolment and student preferences. Please submit your 1-paragraph summary of each assigned paper _before_ class via LEARN. Late work or missing will receive a failing grade. The Graphics Codex path tracing content is in the _web edition_ (Amazon) in September. The iOS edition is a point release behind because of Apple's review process and will not be up to date until mid-September. 1. Sep 6, *Path tracing*: + Lecture: - Welcome to the ray tracing seminar [[PPT](welcome.pptx)|[PDF](welcome.pdf)] - How to read rendering research papers [[PPT](reading-research.pptx)|[PDF](reading-research.pdf)] - How to present a research paper [[PPT](present-research.pptx)|[PDF](present-research.pdf)] - Sign up for presentation dates - Global illumination, Monte Carlo, and path tracing review [[PPT](path-tracing-review.pptx)|[PDF](path-tracing-review.pdf)] - Example importance sampling pure path tracer [[C++](https://casual-effects.com/g3d/G3D10/samples/simplePathTracer/main.cpp)] + Required reading (after class, no summary paragraph required): - "Numerical Calculus" and "Path Tracing" chapters in the [Graphics Codex](http://graphicscodex.com), version 2.16 - [The rendering equation](https://dl.acm.org/citation.cfm?id=15902), Kajiya, SIGGRAPH'86 - Further optional reading: - [Bidirectional estimators for light transport](http://graphics.stanford.edu/papers/bidir/), Veach and Guibas, EGSR'94 - [A radiosity method for non-diffuse environments](https://www.researchgate.net/publication/220720201_A_Radiosity_Method_for_Non-Diffuse_Environments), Immel et al., SIGGRAPH'86 - Kaplan and ½ Mann out 1. Sep 13, *Materials*: + Lecture: Parallel path tracing [[PPT](parallel-path-tracing.pptx)|[PDF](parallel-path-tracing.pdf)] + Andrew Na presents [Physically-based shading at Disney](https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf), Burley, SIGGRAPH'12 Courses - Sign up for a _second_ presentation - Recommended reading: - "Materials" chapter in the [Graphics Codex](http://graphicscodex.com) - [Microfacet models for refraction through rough surfaces](https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.html), Walter et al., EGSR'07 - Kaplan ½ out 1. Sep 20, *Re-using paths*: + Ze Ran Lu presents [Instant radiosity](https://dl.acm.org/citation.cfm?id=258769), Keller, SIGGRAPH'97 + Ilene Lu presents [Global illumination using photon maps](http://graphics.ucsd.edu/~henrik/papers/photon_map/), Jensen, EGSR'96 - Recommended reading: - "Rendering Algorithms" chapter in the [Graphics Codex](http://graphicscodex.com), version 2.16 - Warmup path tracer due 1. ~~Sep 27, *Sampling*~~: Class is cancelled in acknowledgement of community participation in [Global Climate Strike](https://globalclimatestrike.net/). _University participants plan to gather at 10 a.m. in the Arts Quad before heading to Uptown to join the region's 11:30 am event in Waterloo Town Square._ The required reading is: + The "Parallel Architectures" chapter in the [Graphics Codex](http://graphicscodex.com), version 2.17 (available Sep. 19, no summary paragraph required) + Your choice of _one_ of the following, for which you must submit a paragraph as usual: - [Sampling the GGX distribution of visible normals](http://jcgt.org/published/0007/04/01/), Heitz, JCGT'18 - [A low-discrepancy sampler that distributes Monte Carlo errors as blue noise in screen space](https://belcour.github.io/blog/research/2019/06/17/sampling-bluenoise.html), Heitz et al., EGSR'19 - [Analysis of Sample Correlations for Monte Carlo Rendering](https://pdfs.semanticscholar.org/59bc/d7a48ea034236391c71acdd2cd749b3da485.pdf), Singh et al., Eurographics'19 1. Oct 4, *Optimal MCMC*: + Joshua Liu presents [Metropolis light transport](https://dl.acm.org/citation.cfm?id=258775), Veach and Guibas, SIGGRAPH'97 - Towaki Takikawa presents [Fusing State Spaces for Markov Chain Monte Carlo Rendering](https://dl.acm.org/citation.cfm?id=3073691), Otsu et al., SIGGRAPH'17 - [A Simple and Robust Mutation Strategy for the Metropolis Light Transport Algorithm](), Kelemen et al., Computer Graphics Forum 2002 - [Charted Metropolis Light Transport](https://dl.acm.org/citation.cfm?id=3073677), Pantaleoni, SIGGRAPH'17 - [Neural importance sampling](http://drz.disneyresearch.com/~jnovak/publications/NIS/index.html), Müller et al., SIGGRAPH'19 - [Optimal multiple importance sampling](https://graphics.cg.uni-saarland.de/publications/kondapaneni-2019-siggraph-optimal-mis.html), Kondapaneni et al., SIGGRAPH'19 - Kaplan out 1. Oct 11, *Volumes*: - Sina Nabizadeh presents [Gradient-domain volumetric photon density estimation](https://dl.acm.org/citation.cfm?id=3201363), Gruson et al., Transactions on Graphics 2018 - Allen Yeh presents [Multi-scale modeling and rendering of granular materials](https://cs.dartmouth.edu/~wjarosz/publications/meng15granular.html), Meng et al., SIGGRAPH'15 - Lizhe Chen presents [Deep scattering: rendering atmospheric clouds with radiance-predicting neural networks](https://dl.acm.org/citation.cfm?id=3130880), Kallweit et al., SIGGRAPH'17 1. Oct 25, *Denoising*: - Andrew Tinits presents [Sample-based Monte Carlo Denoising using a Kernel-Splatting Network](https://groups.csail.mit.edu/graphics/rendernet/), Gharbi et al., SIGGRAPH'19 - Qingnan Duan presents [Texture space caching and reconstruction for ray tracing](https://dl.acm.org/citation.cfm?id=2982407), Munkberg et al., Transactions on Graphics 2016 - [Denoising with kernel prediction and asymmetric loss functions](https://dl.acm.org/citation.cfm?id=3201388), Vogels et al., SIGGRAPH'18 - [On Filtering the Noise from the Random Parameters in Monte Carlo Rendering](https://dl.acm.org/citation.cfm?id=2167083), Sen and Darabi, SIGGRAPH'12 1. Nov 1, *Scheduling*: + Matthew Lakier presents [GPU Ray Tracing](https://dl.acm.org/citation.cfm?id=2447976.2447997&coll=portal&dl=ACM), Parker et al., Communications of the ACM 2013 - Qingnan Duan presents [Embree: A Kernel Framework for Efficient CPU Ray Tracing](https://dl.acm.org/citation.cfm?doid=2601097.2601199), Wald et al., Transactions on Graphics 2014 - Josh Liu presents [Mitsuba 2: A Retargetable Forward and Inverse Renderer](https://rgl.epfl.ch/publications/NimierDavidVicini2019Mitsuba2), Nimier-David, Vicini, et al., Transactions on Graphics 2019 1. Nov 8, *Traversal*: - Lizhe Chen presents [Wide BVH Traversal with a Short Stack](https://www.researchgate.net/publication/333933938_Wide_BVH_Traversal_with_a_Short_Stack), Vaidyanathan et al., HPG'19 - Matthew Lakier presents [The Design and Evolution of Disney's Hyperion Renderer](https://www.yiningkarlli.com/projects/hyperiondesign/hyperiondesign.pdf), Burley et al., Transactions on Graphics 2018 - [Dual split trees](http://www.cemyuksel.com/research/papers/dualsplittrees_i3d2019.pdf), Lin et al., I3D'19 - [Flexible Ray Traversal with an Extended Programming Model](https://web.yonsei.ac.kr/wjlee/traversalshader.html), Lee et al., SIGGRAPH Asia 2019 Technical Brief 1. Nov 15, *Production I*: + Saadiya Desai presents [Arnold: A Brute-Force Production Path Tracer](https://www.arnoldrenderer.com/research/Arnold_TOG2018.pdf), Georgiev et al., Transactions on Graphics 2018 - Sina Nabizadeh presents [Sony Pictures Imageworks Arnold](https://fpsunflower.github.io/ckulla/data/2018_tog_spi_arnold.pdf), Kulla et al., Transactions on Graphics 2018 - [The Iray Light Transport Simulation and Rendering System](https://arxiv.org/abs/1705.01263), Keller et al., NVIDIA Technical Report 2017 1. Nov 22, *Production II*: + Saadiya Desai presents [Manuka: A batch-shading architecture for spectral path tracing in movie production](https://jo.dreggn.org/home/2018_manuka.pdf), Fascione et al., Transactions on Graphics 2018 - Towaki Takikawa presents [RenderMan: An Advanced Path-Tracing Architecture for Movie Rendering](https://graphics.pixar.com/library/RendermanTog2018/paper.pdf), Christensen et al., Transactions on Graphics 2018 - Andrew Na presents [Vectorized Production Path Tracing](http://www.tabellion.org/et/paper17/MoonRay.pdf), Lee et al., HPG 2017 1. Nov 29, *Project Presentations* (8 min each, plus 2-3 min questions and setup) - Andrew Na: Progressive photon mapping - Lizhe Chen: Stochastic progressive photon mapping - Qingnan Duan: Distributing Monte Carlo errors as blue noise - Ze Ran Lu: Sampling the GGX distribution of visible normals - Josh Liu: Primary space Metropolis light transport - Matthew Lakier: Practical model of subsurface light transport - Sina Nabizadeh: Implicit surface path tracing - Towaki Takikawa: DeepSDF ⭑ Must be among the papers presented on this day Projects =============================================================================== Warmup ------------------------------------------------------------------------------- The warmpup project is implementing a naive pure path tracer from in your preferred programming environment. You must implement the path tracing main loop, reflection and refraction, at least cosine-based importance sampling, and gamma encoding. Render images of the Cornell Box (the classic version with the mirror box in it), a scene with refractive transmission (such as the Cornell Box with glass spheres), and one other scene showing glossy reflection, such as the version Sponza with the glossy floor. Submit a two-page "report" comprising solely of your images and the core implementation of the algorithm, which should be about 100 lines of code. You are not expected to implement your own BVH, tone mapping, point lights, light importance sampling, low-discrepancy sampling, full BSDF importance sampling, denoising, etc. There are no expectations for performance. You may use a ray-triangle intersection library such as Embree, OptiX, RadeonRays, VKRT, or DXR. You may use a asset-loading libraries such as tinyOBJ, AssIMP, FreeImage, etc. I recommend using [G3D](https://casual-effects.com/g3d), which provides the `G3D::Scene` loader and `G3D::TriTree` as simple C++ interface to Embree and OptiX. The purposes of the warmup are to build your intuition for the Monte Carlo aspects of the papers we will read and ensure that you have experience with some software tools that you might use for the final project. We recommend against using something like Shadertoy for the warmup because this will not put you in a good position for a more significant project later (although it is certainly a fun exercise to write a single-shader path tracer!). Final ------------------------------------------------------------------------------- The final programming project will involve implementing a well-known rendering algorithm of the student's choice. Most students will work individually, but I will consider proposals for pair projects based on the topic and implementation plan. The deliverables for the programming project are: - A three-page report summarizing the project - Visual results (included in the report) demonstrating: - Correctness (or lack thereof) in simple, reproducible contexts - Artistic images demonstrating the visual impact - Experimental results comparing to the paper - Supplemental material of code demonstrating the core of the technique. This should not include all of the dependencies or necessarilly be compilable on its own. - A 5-10 minute presentation in class comprising a _brief_ discussion of the core mathematical idea and then results I recommend that you begin the project about half way through the term. Projects generally should not be "from scratch" and should instead build on some existing rendering framework that handles low-level asset loading, ray-triangle intersection, and materials, such as: - [G3D](https://casual-effects.com/g3d/) - [PBRT](https://github.com/mmp/pbrt-v3) - [Mitsuba](https://www.mitsuba-renderer.org/) - [Falcor](https://developer.nvidia.com/falcor)