Monte Carlo Path Tracing II
CS295, Spring 2017 Shuang Zhao
Computer Science Department University of California, Irvine
CS295, Spring 2017 Shuang Zhao 1
Monte Carlo Path Tracing II CS295, Spring 2017 Shuang Zhao - - PowerPoint PPT Presentation
Monte Carlo Path Tracing II CS295, Spring 2017 Shuang Zhao Computer Science Department University of California, Irvine CS295, Spring 2017 Shuang Zhao 1 Announcements PA1 base code updated to fix compilation issues under Mac OS You
CS295, Spring 2017 Shuang Zhao 1
CS295, Spring 2017 Shuang Zhao 2
CS295, Spring 2017 Shuang Zhao 3
CS295, Spring 2017 Shuang Zhao 4
CS295, Spring 2017 Shuang Zhao 5
CS295, Spring 2017 Shuang Zhao 6
(Invariant of radiance along lines)
reflectedRadiance(x, ω, depth): [y1, pdf] = luminaireSample() ω1 = normalize(y1 - x) r2 = dot(y1 - x, y1 - x) reflRad = emittedRadiance(y1, -ω1) * brdf(x, ω1, ω) * visibility(x, y1) * dot(nx, ω1) * dot(ny, -ω1) / (r2 * pdf) if depth <= rrDepth: p = 1.0 else: p = survivalProbability if rand() < p: ω2 = uniformRandomPSA(nx) y2 = RayTrace(x, ω2) reflRad += π * reflectedRadiance(y2, -ω2, depth + 1) * brdf(x, ω2, ω) / p return reflRad
CS295, Spring 2017 Shuang Zhao 7
Direct illumination Indirect illumination
reflectedRadiance(x, ω, depth): [y1, pdf] = luminaireSample() ω1 = normalize(y1 - x) r2 = dot(y1 - x, y1 - x) reflRad = emittedRadiance(y1, -ω1) * brdf(x, ω1, ω) * visibility(x, y1) * dot(nx, ω1) * dot(ny, -ω1) / (r2 * pdf) if depth <= rrDepth: p = 1.0 else: p = survivalProbability if rand() < p: ω2 = uniformRandomPSA(nx) y2 = RayTrace(x, ω2) reflRad += π * reflectedRadiance(y2, -ω2, depth + 1) * brdf(x, ω2, ω) / p return reflRad
CS295, Spring 2017 Shuang Zhao 8
inflexible Direct illumination Indirect illumination flexible
CS295, Spring 2017 Shuang Zhao 9
[Lawrence et al. 2004]
CS295, Spring 2017 Shuang Zhao 10
CS295, Spring 2017 Shuang Zhao 11
reflectedRadiance(x, ω, depth): [y1, pdf] = luminaireSample() ω1 = normalize(y1 - x) r2 = dot(y1 - x, y1 - x) reflRad = emittedRadiance(y1, -ω1) * brdf(x, ω1, ω) * visibility(x, y1) * dot(nx, ω1) * dot(ny, -ω1) / (r2 * pdf) if depth <= rrDepth: p = 1.0 else: p = survivalProbability if rand() < p: [ω2, pdf2] = brdfSample(x) y2 = RayTrace(x, ω2) reflRad += reflectedRadiance(y2, -ω2, depth + 1) * brdf(x, ω2, ω) * dot(nx, ω2) / (pdf2 * p) return reflRad
CS114, Spring 2017 Shuang Zhao 12
Direct illumination Indirect illumination
CS295, Spring 2017 Shuang Zhao 13
CS295, Spring 2017 Shuang Zhao 14
CS295, Spring 2017 Shuang Zhao 15
CS295, Spring 2017 Shuang Zhao 16
CS295, Spring 2017 Shuang Zhao 17
CS295, Spring 2017 Shuang Zhao 18
CS295, Spring 2017 Shuang Zhao 19
CS295, Spring 2017 Shuang Zhao 20
CS295, Spring 2017 Shuang Zhao 21
CS295, Spring 2017 Shuang Zhao 22
CS295, Spring 2017 Shuang Zhao 23
CS295, Spring 2017 Shuang Zhao 24
CS295, Spring 2017 Shuang Zhao 25
CS295, Spring 2017 Shuang Zhao 26
CS295, Spring 2017 Shuang Zhao 27
CS295, Spring 2017 Shuang Zhao 28
(with the n densities)
CS295, Spring 2017 Shuang Zhao 29
(with the n densities)
CS295, Spring 2017 Shuang Zhao 30
CS295, Spring 2017 Shuang Zhao 31
denotes the indicator function
CS295, Spring 2017 Shuang Zhao 32
CS295, Spring 2017 Shuang Zhao 33
CS295, Spring 2017 Shuang Zhao 34