Digital Image Synthesis Yung-Yu Chuang 9/24/2009

Slides:



Advertisements
Similar presentations
Physically Based Real-time Ray Tracing Ryan Overbeck.
Advertisements

Retrospect Digital Image Synthesis Yu-Ting Wu. So far we have learned: Geometry and transforms Shapes Accelerators Color and radiometry Cameras Sampling.
Ray Tracing & Radiosity Dr. Amy H. Zhang. Outline  Ray tracing  Radiosity.
Course overview Digital Image Synthesis Yung-Yu Chuang 9/20/2007 with slides by Mario Costa Sousa, Pat Hanrahan and Revi Ramamoorthi.
Course overview Digital Image Synthesis Yung-Yu Chuang 9/17/2009 with slides by Mario Costa Sousa, Pat Hanrahan and Revi Ramamoorthi.
Digital Image Synthesis Yung-Yu Chuang
Surface Integrators Digital Image Synthesis Yung-Yu Chuang with slides by Peter Shirley, Pat Hanrahan, Henrik Jensen, Mario Costa Sousa and Torsten Moller.
Acceleration Digital Image Synthesis Yung-Yu Chuang 10/4/2005 with slides by Mario Costa Sousa and Pat Hanrahan.
Geometry and Transformations Digital Image Synthesis Yung-Yu Chuang 9/28/2006 with slides by Pat Hanrahan.
Surface Integrators Digital Image Synthesis Yung-Yu Chuang with slides by Peter Shirley, Pat Hanrahan, Henrik Jensen, Mario Costa Sousa and Torsten Moller.
Course overview Digital Image Synthesis Yung-Yu Chuang 9/20/2005 with slides by Mario Costa Sousa, Pat Hanrahan and Revi Ramamoorthi.
Ray Tracing POV Oz Levy Yulia Shnaider
Project Raytracing. Content Goals Idea of Raytracing Ray Casting – Therory – Practice Raytracing – Theory – Light model – Practice Output images Conclusion.
RenderMan Introduction CS 551/645 Fall Evaluate Me! Please visit the SEAS main website and use the ‘Course Evaluations’ button to rate this class.
Gene Au-yeung, Daniel Quach, Jeffrey Su, Albert Wang, Jessica Wang, David Woo.
Global Illumination Models THE WHITTED IMAGE - BASIC RECURSIVE RAY TRACING Copyright © 1997 A. Watt and L. Cooper.
Digital Image Synthesis Yung-Yu Chuang
Materials Digital Image Synthesis Yung-Yu Chuang 11/19/2008 with slides by Robin Chen.
Ray Tracer Spring 2008 Help Session. Outline Project Web Resources What do you have to do for this project? Ray Class Isect Class Requirements Tricks.
Reflection models Digital Image Synthesis Yung-Yu Chuang 11/01/2005 with slides by Pat Hanrahan and Matt Pharr.
CS380: Computer Graphics Distributed Ray Tracing TA Course URL:
Course overview Digital Image Synthesis Yung-Yu Chuang with slides by Mario Costa Sousa, Pat Hanrahan and Revi Ramamoorthi.
Materials Digital Image Synthesis Yung-Yu Chuang 11/08/2005 with slides by Robin Chen.
Surface Integrators Digital Image Synthesis Yung-Yu Chuang with slides by Peter Shirley, Pat Hanrahan, Henrik Jensen, Mario Costa Sousa and Torsten Moller.
RENDERING : Global Illumination
Ray Tracing I. Reading Hill, Chapter 14, Sections 14.1 to 14.5 Hill, Chapter 14, Sections and
3D Rendering 2016, Fall.
Advanced Computer Graphics
CSE 167 [Win 17], Lecture 15: Ray Tracing Ravi Ramamoorthi
Computer Graphics.
Digital Image Synthesis Yung-Yu Chuang 10/8/2009
Photorealistic Rendering vs. Interactive 3D Graphics
Ray Tracer Spring 2007 Help Session.
Visualization Shading
Characters and Strings
Monte Carlo Integration
Digital Image Synthesis Yung-Yu Chuang 12/24/2008
Ray Tracing Dr. Scott Schaefer.
Digital Image Synthesis Yung-Yu Chuang
3D Graphics Rendering PPT By Ricardo Veguilla.
Digital Image Synthesis Yung-Yu Chuang 11/16/2006
© University of Wisconsin, CS559 Fall 2004
Introduction to Computer Graphics with WebGL
Path Tracing (some material from University of Wisconsin)
Lecture 11: Recursive Ray Tracer
Parallel Spectral Renderer
Digital Image Synthesis Yung-Yu Chuang 10/4/2005
CS 655 – Computer Graphics Global Illumination.
Digital Image Synthesis Yung-Yu Chuang 9/27/2005
Digital Image Synthesis Yung-Yu Chuang 11/01/2005
Digital Image Synthesis Yung-Yu Chuang 10/19/2006
Digital Image Synthesis Yung-Yu Chuang 9/28/2006
Digital Image Synthesis Yung-Yu Chuang 10/22/2009
Image.
Geometry and Transformations
Strings and Pointer Arrays
CSCE 441: Computer Graphics Ray Tracing
14th Lecture – Final Lecture
Ray Tracer Spring 2004 Help Session.
Digital Image Synthesis Yung-Yu Chuang 12/3/2008
Digital Image Synthesis Yung-Yu Chuang 11/30/2006
Geometry and Transformations
Course Outline for Computer Architecture
Digital Image Synthesis Yung-Yu Chuang 10/04/2007
Digital Image Synthesis Yung-Yu Chuang 11/8/2007
Characters and Strings
Digital Image Synthesis Yung-Yu Chuang 12/6/2007
Monte Carlo Path Tracing and Caching Illumination
Ray Tracer Autumn 2005 Help Session.
Ray Tracer Spring 2006 Help Session.
Presentation transcript:

Digital Image Synthesis Yung-Yu Chuang 9/24/2009 PBRT core Digital Image Synthesis Yung-Yu Chuang 9/24/2009 with slides by Pat Hanrahan

Announcements Please subscribe the mailing list. Id/password Doxygen (online, download or doxygen by yourself) The next class of 10/1 is cancelled because I will be attending ICCV 2009 in Kyoto.

This course Study of how state-of-art ray tracers work

Ray casting In order to implement this algorithm we had to address these six issues.

Rendering equation (Kajiya 1986) p 5D light field

pbrt pbrt (physically-based ray tracing) attempts to simulate physical interaction between light and matter based on ray tracing. A plug-in architecture: core code performs the main flow and defines the interfaces to plug-ins. Necessary modules are loaded at run time as DLLs, so it is easy to extend the system without modifying the core.

pbrt plug-ins (see source browser also)

Phases of execution main() in renderer/pbrt.cpp int main(int argc, char *argv[]) { <Print welcome banner> pbrtInit(); // Process scene description if (argc == 1) { // Parse scene from standard input ParseFile("-"); } else { // Parse scene from input files for (int i = 1; i < argc; i++) if (!ParseFile(argv[i])) Error("Couldn't open …\"%s\"\n", argv[i]); } pbrtCleanup(); return 0;

Example scene rendering options id “type” param-list LookAt 0 10 100 0 -1 0 0 1 0 Camera "perspective" "float fov" [30] PixelFilter "mitchell" "float xwidth" [2] "float ywidth" [2] Sampler "bestcandidate" Film "image" "string filename" ["test.exr"] "integer xresolution" [200] "integer yresolution" [200] # this is a meaningless comment WorldBegin AttributeBegin CoordSysTransform "camera" LightSource "distant" "point from" [0 0 0] "point to" [0 0 1] "color L" [3 3 3] AttributeEnd rendering options id “type” param-list “type name” [value]

Example scene AttributeBegin Rotate 135 1 0 0 Texture "checks" "color" "checkerboard" "float uscale" [8] "float vscale" [8] "color tex1" [1 0 0] "color tex2" [0 0 1] Material "matte" "texture Kd" "checks" Shape "sphere" "float radius" [20] AttributeEnd WorldEnd

Scene parsing (Appendix B) core/pbrtlex.l and core/pbrtparse.y After parsing, a scene object is created (core/scene.*) class scene { Primitive *aggregate; vector<Light *> lights; Camera *camera; (contains a film) VolumeRegion *volumeRegion; SurfaceIntegrator *surfaceIntegrator; VolumeIntegrator *volumeIntegrator; Sampler *sampler; BBox bound; }; primitive shape material aggregate … … (generates sample positions for eye rays and integrators)

Rendering Scene::Render() is invoked.

Scene::Render() while (sampler->GetNextSample(sample)) { RayDifferential ray; float rayW=camera->GenerateRay(*sample,&ray); for effects such as vignetting <Generate ray differentials for camera ray> float alpha; opacity along the ray Spectrum Ls = 0.f; if (rayW > 0.f) Ls = rayW * Li(ray, sample, &alpha); ... camera->film->AddSample(*sample,ray,Ls,alpha); }

Scene::Li Spectrum Scene::Li(RayDifferential &ray, Sample *sample, float *alpha) { Spectrum Lo=surfaceIntegrator->Li(…); Spectrum T=volumeIntegrator->Transmittance(…); Spectrum Lv=volumeIntegrator->Li(…); return T * Lo + Lv; } Lv T Lo

Surface integrator Spectrum Scene::Li(RayDifferential &ray, Sample *sample, float *alpha) { Spectrum Lo=surfaceIntegrator->Li(…); Spectrum T=volumeIntegrator->Transmittance(…); Spectrum Lv=volumeIntegrator->Li(…); return T * Lo + Lv; } Lo

Surface integrator

Whitted model

Whitted integrator in integrators/whitted.cpp class WhittedIntegrator:public SurfaceIntegrator Spectrum WhittedIntegrator::Li(Scene *scene, RayDifferential &ray, Sample *sample, float *alpha) { ... bool hitSomething=scene->Intersect(ray,&isect); if (!hitSomething) {include effects of lights without geometry} else { <Computed emitted and reflect light at isect> }

Whitted integrator n ωi ωo p BSDF *bsdf=isect.GetBSDF(ray); ... Vector wo=-ray.d; L+=isect.Le(wo); Vector wi; direct lighting for (u_int i = 0; i < scene->lights.size(); ++i) { VisibilityTester visibility; Spectrum Li = scene->lights[i]-> Sample_L(p, &wi, &visibility); if (Li.Black()) continue; Spectrum f = bsdf->f(wo, wi); if (!f.Black() && visibility.Unoccluded(scene)) L += f * Li * AbsDot(wi, n) * visibility.Transmittance(scene); } ωi ωo p

Whitted integrator if (rayDepth++ < maxDepth) { Spectrum f = bsdf->Sample_f(wo, &wi, BxDFType(BSDF_REFLECTION | BSDF_SPECULAR)); if (!f.Black()) { <compute rd for specular reflection> L += scene->Li(rd, sample) * f * AbsDot(wi, n); } f = bsdf->Sample_f(wo, &wi, BxDFType(BSDF_TRANSMISSION | BSDF_SPECULAR)); <compute rd for specular transmission>

Code optimization Two commonly used tips Divide, square root and trigonometric are among the slowest (10-50 times slower than +*). Multiplying 1/r for dividing r. Being cache conscious

Cache-conscious programming alloca AllocAligned(), FreeAligned() make sure that memory is cache-aligned Use union and bitfields to reduce size and increase locality Split data into hot and cold

Cache-conscious programming Arena-based allocation allows faster allocation and better locality because of contiguous addresses. Blocked 2D array, used for film w w h h … …. …. ….