Photon Mapping Reference Material The slides have used/adapted material from the following references:
Slides on Photon Mapping by Jan Kautz (web4.cs.ucl.ac.uk/teaching/4074/archive/.../04_photon_maps.pdf)
Slides on Photon Mapping by Bill Clark (http://penguin.ewu.edu/cscd570/2011/PDFNotes/PhotonMapping.pdf)
!"#$"%&'(&)*'+',"-.$/+$0&,"12",$13&4"+*'2/ Photon Mapping
()*+,&-+$&.*/0-/$&"#,)1#+,23)-$#+, !"#$%&'(!)&"**)+(!&)(,-&,)*",&,'./!'(.&$00$*!% 1'2$*!&$00$*!%&02)3&,'./!&!)&)45$*!&!)&$-$&6&0)2&4)!/& 1'00+%$&"(1&%7$*+,"2&,'./!'(.8 4-5&60-7#+, 0)2&1'00+%$&,'./!&+%$%&)(,-&,)*",&$00$*!%&()&.,)4",& ,'./!'(.8 0)2&%7$*+,"2&,'./!&1)$%&1)&%)3$&.,)4",&,'./!'(.&%'(*$& 2$0,$*!$1&2"-%&*"(&42'(.&4"*#&,'./!&02)3&)!/$2&)45$*!%&6& !/+%&'(&!/$&%7$*+,"2&*)37)($(!&.,)4",&,'./!'(.&'%& 72)9'1$18
CSCD 570 !"#$%&' 11/12/08 Uniform vs. Importance Sampling Questions?
75 Samples/Pixel
Naïve sampling strategy Optimal sampling strategy
Veach & Guibas "Optimally Combining Sampling Slide from Jason Lawrence Techniques for Monte Carlo Rendering” SIGGRAPH 95
Leftover from Last Time & Today Ray Casting
• Sampling • Cast a ray from the eye through each pixel • Monte-Carlo Ray Tracing vs. Path Tracing • Irradiance Caching • Photon Mapping • Ray Grammar
Photon Mapping
Ray Tracing Monte-Carlo Ray Tracing
• Cast a ray from the eye through each pixel • Cast a ray from the eye through each pixel • Trace secondary rays (light, reflection, refraction) • Cast random rays to accumulate radiance contribution – Recurse to solve the Rendering Equation
Should also systematically sample the primary light
3 !"#$"%&'(&)*'+',"-.$/+$0&,"12",$13&4"+*'2/Photon Mapping
()$#*+#,- !"#$%"&!''"()#*%+"#*!#"&,)-!.-/.!#)'".01*#",)!-*021" %2)",)10%2"3,%("!.."%#*),",)10%2'" (%+).'"%2.4"+033/')".01*#021 '&)-/.!,".01*#021"-!2"5)"&,%60+)+"60!"!"*45,0+",)2+),)," #*!#"/')'"5%#*",!+0%'0#4"3%,"#*)"+033/')"#),("!2+",!4" #,!-021"3%,"#*)"'&)-/.!,"#),(7
CSCD 570 !"#$%&' 11/12/08 Lecture Notes #13 - Global Illumination Ray Tracing
R
Reading: Angel: 16.10; Foley: p.792 E R P transmitted
Topics:
Rreflected • Rendering equation • Approximations Let I(b,r) = intensity seen along direction r from point b. I(E, R) = Idirect + Iindirect Ray tracing ! Idirect + Ireflected + Itransmitted Radiosity
Idirect = computed from the Phong model Ireflected = Reflectance* I(P, Rreflected ) I Transmittance* I(P, R ) Photon Mapping transmitted = transmitted COS 426 1 Lecture Notes #13 COS 426 2 Lecture Notes #13
Ray Tracing as Approximation to Rendering Equation The Rendering Equation (Kajiya '86) x x'' xr x x'' x' x' xt L(x' " x' ' ) = E(x' " x' ' ) + f (x, x' , x' ' )L(x " x' )V(x, x' )G(x, x' )dx # r L(x' " x' ' ) = E(x' " x' ' ) + # fr (x, x' , x' ' )L(x " x' )V(x, x' )G(x, x' )dx x x
• L(x'->x'') is the total radiance from x' • fr is the BRDF • Sample the integrand where it is likely to be large: at points x such that: to x'' • V(x,x') is a visibility term: • x is at a light source • E(x'->x'') is the emitted radiance from • 1 if x is visible from x'; 0 • x is in the reflected direction x' to x'' otherwise • non-zero for light sources • x is in the refracted direction • G(x,x') is a geometry term
COS 426 3 Lecture Notes #13 COS 426 4 Lecture Notes #13 #76$86236092:$%;/149<2
ȦB ! PhotonȦ Mapping !"
ICAB-ȦBD$J$%CAB-ȦBD K$ȡABCȦ-ȦBDICA-ȦDLCA-ABDMCA-ABD$3N n
!r !i =>156$476$><2409?/49<2$?@$
ȡABCȦ-ȦBD-$476$06E56>49F94@$ "i CG8.HD$
!"#$%%&'$()*+,-$./0123$123$&/4560 !"#$%&'()*+,-(%&.-%)%"-* Photon Mapping
!"#$%#&%#'()*"+'(*,#-.(/"+(+%0+%)%#'.(*"1(2&.*'( )3,''%+)(,2"#.($,+&"4)(0,'*)((,()3%#%(/+"5('*%( 2&.*'()"4+3%('"('*%(%6%7 8%/&'&"#)(9('*%($%+'&3%)("/(,(2&.*'(0,'*(3,#(:%; <(;(,(2&.*'()"4+3% =(;('*%(%6% >(;(,()0%342,+(+%/2%3'&"# 8(;(,(-&//4)%(+%/2%3'&"#
CSCD 570 !"#$%&' 11/12/08 !"#$%&'()*+,-(%&.-%)%"-*&/&01)2,34 Photon Mapping
! "
#
!"#$%&&' ("#$%&' )"#$&&%' CSCD 570 !"#$%&' 11/12/08 !"#$%&'()*+,-(%&.-%)%"-* Photon Mapping
()*+#,-.#),&/).-.#),!"#$%&'(#!$)*#$++,-.! .-/(/,-.0 "102!3!-.$!-#!4-#$!-5!1!$6$./+ "107!3!8$#-!-#!4-#$!-5!1$6$./+ "109!3!8$#-!-#!-.$!1!$6$./ "1:1;0!3!(!1!-#!(!1;!$6$./ <)(4*'$!3!=">:?02?
CSCD 570 !"#$%&' 11/12/08 ;172(<=#%&(&>(.4=<& Photon Mapping
•! '#%$1?>(2@#&2(A&$2(<*%+&"(%6@14&(@@& )($"4&@*+"$B&CDEFGHIJK&L.$&%#$&1M.(@@A&Caustic Reflection 51@@& •! 8(4&6*N<.@$A&4(3)@*%+&CGIEGIJ&)($"4K& ;172(<=#%&(&>(.4=<& 1O+O&2172(<=#%&(&<(.4=<& !"#$#%&'())*%+& •! '#%$1?>(2@#&2(A&$2(<*%+&"(%6@14&(@@& •! !($"&$2(<*%+&5#.@6&%116&(&P12A&@.<9A& )($"4&@*+"$B&CDEFGHIJK&L.$&%#$&1M.(@@A& Q24$&"*$& 51@@& •! R*6*21<=#%(@&2(A&$2(<*%+&<(%&Q%6& •! 8(4&6*N<.@$A&4(3)@*%+&CGIEGIJ&)($"4K& ,(%&-(.$/& !"#$#%&'())*%+& 1O+O&2172(<=#%&(&<(.4=<& <(.4= !"#$#%&'())*%+& :"A&'()&!"#$#%4[& •! ,1%41%&JT;:&UVK&UW& •! 8*+"&P(2*(%<1&*%&'#%$1?>(2@#& !"#$#%&'())*%+& •! G*3.@($14&$"1&$2(%4)#2$&*%6*P*6.(@&:"A&'()&!"#$#%4[& 21%612*%+4&214.@$4&*%&%#*41& )"#$#%4& •! >#@@1<=#%&61)#4*$16&)"#$#%4& •! !"#$#%4&13*X16&72#3&@*+"$&4#.2<14& *%$#&(&\)"#$#%&3()]&D(&Z?E& •! ,1%41%&JT;:&UVK&UW& •! !"#$#%4&L#.%<1Y&4)1<.@(2•! 8*+"&P(2*(%<1&*%&'#%$1?>(2@#&& 4)(=(@&6($(&4$2.<$.21H&)2#P*614&(& 4.27(<14& S.^&61%4*$A&14=3($1& a"1&4<1%1&(L#P1&<#%$(*%4&+@#44A& •! G*3.@($14&$"1&$2(%4)#2$&*%6*P*6.(@& 21%612*%+4&214.@$4&*%&%#*41& 4.27(<14K&(%6&5(4&21%61216&*%&Vb& •! !"#$#%4&61)#4*$16%&6*Y.41&4.27(<14& •! 0@.^&4(3)@14&Q@$1216&1(4*12&$"(%& )"#$#%4& –! 81@6&*%&(&Z?E&4)(=(@&6($(&4$2.<$.21&•! 3*%.$14&.4*%+&)"#$#%&3())*%+O&a"1& >#@@1<=#%&61)#4*$16&)"#$#%4& )($"&4(3)@14K&214.@=%+&*%&122#2&($& 4(31&4<1%1&$##9&W&"#.24&7#2&21%612& • –! G.27(<14&%116&%#$&L1&)(2(31$12*/16& ! !"#$#%4&13*X16&72#3&@*+"$&4#.2<14& *%$#&(&\)"#$#%&3()]&D(&Z?E& @#512&721M.1%<*14& 5*$"&;(6*(%<1K&(&21%612*%+&4A4$13&$"($& •! !"#$#%4&!"##$!%$&'()'*+%,'%-+!./0'72#3& •! !"#$#%4&L#.%<1Y&4)1<.@(2& •! J22#2&*4&(&214.@$&L*(4K&5"*<"& .416&2(6*#4*$A&7#2&6*Y.41&21S1<=#%&(%6& 1A1& 4)(=(@&6($(&4$2.<$.21H&)2#P*614&(& )($"&$2(<*%+&7#2&+@#44A&21S1<=#%O& 4.27(<14& S.^&61%4*$A&14=3($1& a"1&4<1%1&(L#P1&<#%$(*%4&+@#44A&61<21(414&(4&$"1&%.3L12& •! !"#$#%4&61)#4*$16%&6*Y.41&4.27(<14& 4.27(<14K&(%6&5(4&21%61216&*%&Vb&4(3)@14&*%<21(41& •! 0@.^&4(3)@14&Q@$1216&1(4*12&$"(%& •! _%6K"&A1("K&*$`4&(&@#$&7(4$12& –! 81@6&*%&(&Z?E&4)(=(@&6($(&4$2.<$.21& 3*%.$14&.4*%+&)"#$#%&3())*%+O&a"1& )($"&4(3)@14K&214.@=%+&*%&122#2&($& 4(31&4<1%1&$##9&W&"#.24&7#2&21%612& –! G.27(<14&%116&%#$&L1&)(2(31$12*/16& @#512&721M.1%<*14& 5*$"&;(6*(%<1K&(&21%612*%+&4A4$13&$"($& •! !"#$#%4&!"##$!%$&'()'*+%,'%-+!./0'72#3& .416&2(6*#4*$A&7#2&6*Y.41&21S1<=#%&(%6& 1A1& •! J22#2&*4&(&214.@$&L*(4K&5"*<"& 61<21(414&(4&$"1&%.3L12& )($"&$2(<*%+&7#2&+@#44A&21S1<=#%O& 4(3)@14&*%<21(41& •! _%6K"&A1("K&*$`4&(&@#$&7(4$12& :"($&*4&(&!"#$#%[& G#.2<14& !p •! _&)"#$#%&*&*4&(&)(2=<@1&@*+"$& •! !#*%$&4#.2<1& $"($&<(22*14&S.^&!"*D!*K&!*H& –! !"#$#%4&13*X16&.%*7#23@A&*%&(@@& –! !#512B&!"*&c&3(+%*$.61&D*%& 6*21<=#%4& :(X4H&(%6&<#@#2&$"1&S.^&*$& • !"p ! !#512&4#.2<1&D:H&6*4$2*L.$16& <(22*14K&4$#216&(4&(%&;TR&$2*)@1& 1P1%@A&(3#%+&)"#$#%4& –! !#4*=#%B&!*&c&@#<(=#%&$"1& •! )"#$#%& xp 0@.^&1(<"&)"#$#%&1M.(@&$#&4#.2<1& )#512&6*P*616&LA&$#$(@&d&)"#$#%4& –! E*21<=#%B&! &c&$"1&*%<*61%$& * •! 6*21<=#%&!.&.416&$#&<#3).$1& 0#2&1^(3)@1K&(&Wb:&@*+"$&L.@L&5#.@6& *22(6*(%<1& 41%6.$&(&$#$(@&ebb-&)"#$#%4K& :"($&*4&(&!"#$#%[& •! !"#$#%4&P4O&2(A4& G#.2<14& 1(<"&<(22A*%+&(&S.^&!"&bOW&3:& –! !"#$#%4&)2#)#+($1&S.^& •! !"#$#%4&41%$.$%<1&)12&4*3.@(=#%K& !p –! ;(A4&+($"12&2(6*(%<1& %#$&<#%=%.#.4@A&(4&*%&2(6*#4*$A& •! _&)"#$#%&*&*4&(&)(2=<@1&@*+"$& •! !#*%$&4#.2<1& $"($&<(22*14&S.^&!"*D!*K&!*H& –! !"#$#%4&13*X16&.%*7#23@A&*%&(@@& –! !#512B&!"*&c&3(+%*$.61&D*%& 6*21<=#%4& :(X4H&(%6&<#@#2&$"1&S.^&*$& • !"p ! !#512&4#.2<1&D:H&6*4$2*L.$16& <(22*14K&4$#216&(4&(%&;TR&$2*)@1& 1P1%@A&(3#%+&)"#$#%4& –! !#4*=#%B&!*&c&@#<(=#%&$"1& •! )"#$#%& xp 0@.^&1(<"&)"#$#%&1M.(@&$#&4#.2<1& )#512&6*P*616&LA&$#$(@&d&)"#$#%4& –! E*21<=#%B&! &c&$"1&*%<*61%$& * •! 1 6*21<=#%&!.&.416&$#&<#3).$1& 0#2&1^(3)@1K&(&Wb:&@*+"$&L.@L&5#.@6& *22(6*(%<1& 41%6.$&(&$#$(@&ebb-&)"#$#%4K& •! !"#$#%4&P4O&2(A4& 1(<"&<(22A*%+&(&S.^&!"&bOW&3:& –! !"#$#%4&)2#)#+($1&S.^& •! !"#$#%4&41%$.$%<1&)12&4*3.@(=#%K& –! ;(A4&+($"12&2(6*(%<1& %#$&<#%=%.#.4@A&(4&*%&2(6*#4*$A& 1 ;172(<=#%&(&>(.4=<& •! '#%$1?>(2@#&2(A&$2(<*%+&"(%6@14&(@@& )($"4&@*+"$B&CDEFGHIJK&L.$&%#$&1M.(@@A& 51@@& •! 8(4&6*N<.@$A&4(3)@*%+&CGIEGIJ&)($"4K& !"#$#%&'())*%+& 1O+O&2172(<=#%&(&<(.4=<& •! !($"&$2(<*%+&5#.@6&%116&(&P12A&@.<9A& Q24$&"*$& •! R*6*21<=#%(@&2(A&$2(<*%+&<(%&Q%6& ,(%&-(.$/& <(.4= 01($.2*%+&*3(+14&45*)16&72#3& 81%2*9&:(%%&,1%41%& Photon Mapping !"#$#%&'())*%+& :"A&'()&!"#$#%4[& Introduction •! ,1%41%&JT;:&UVK&UW& •! 8*+"&P(2*(%<1&*%&'#%$1?>(2@#& •! G*3.@($14&$"1&$2(%4)#2$&*%6*P*6.(@& 21%612*%+4&214.@$4&*%&%#*41& )"#$#%4& •! >#@@1<=#%&61)#4*$16&)"#$#%4& •! !"#$#%4&13*X16&72#3&@*+"$&4#.2<14& *%$#&(&\)"#$#%&3()]&D(&Z?E& •! !"#$#%4&L#.%<1Y&4)1<.@(2& 4)(=(@&6($(&4$2.<$.21H&)2#P*614&(& 4.27(<14& S.^&61%4*$A&14=3($1& a"1&4<1%1&(L#P1&<#%$(*%4&+@#44A& 4.27(<14K&(%6&5(4&21%61216&*%&Vb& •! !"#$#%4&61)#4*$16%&6*Y.41&4.27(<14& •! 0@.^&4(3)@14&Q@$1216&1(4*12&$"(%& –! 81@6&*%&(&Z?E&4)(=(@&6($(&4$2.<$.21& 3*%.$14&.4*%+&)"#$#%&3())*%+O&a"1& )($"&4(3)@14K&214.@=%+&*%&122#2&($& 4(31&4<1%1&$##9&W&"#.24&7#2&21%612& –! G.27(<14&%116&%#$&L1&)(2(31$12*/16& @#512&721M.1%<*14& 5*$"&;(6*(%<1K&(&21%612*%+&4A4$13&$"($& •! !"#$#%4&!"##$!%$&'()'*+%,'%-+!./0'72#3& .416&2(6*#4*$A&7#2&6*Y.41&21S1<=#%&(%6& 1A1& •! J22#2&*4&(&214.@$&L*(4K&5"*<"& 61<21(414&(4&$"1&%.3L12& )($"&$2(<*%+&7#2&+@#44A&21S1<=#%O& 4(3)@14&*%<21(41& •! _%6K"&A1("K&*$`4&(&@#$&7(4$12& :"($&*4&(&!"#$#%[& G#.2<14& !p •! _&)"#$#%&*&*4&(&)(2=<@1&@*+"$& •! !#*%$&4#.2<1& $"($&<(22*14&S.^&!"*D!*K&!*H& –! !"#$#%4&13*X16&.%*7#23@A&*%&(@@& –! !#512B&!"*&c&3(+%*$.61&D*%& 6*21<=#%4& :(X4H&(%6&<#@#2&$"1&S.^&*$& • !"p ! !#512&4#.2<1&D:H&6*4$2*L.$16& <(22*14K&4$#216&(4&(%&;TR&$2*)@1& 1P1%@A&(3#%+&)"#$#%4& –! !#4*=#%B&!*&c&@#<(=#%&$"1& •! )"#$#%& xp 0@.^&1(<"&)"#$#%&1M.(@&$#&4#.2<1& )#512&6*P*616&LA&$#$(@&d&)"#$#%4& –! E*21<=#%B&! &c&$"1&*%<*61%$& * •! 6*21<=#%&!.&.416&$#&<#3).$1& 0#2&1^(3)@1K&(&Wb:&@*+"$&L.@L&5#.@6& *22(6*(%<1& 41%6.$&(&$#$(@&ebb-&)"#$#%4K& •! !"#$#%4&P4O&2(A4& 1(<"&<(22A*%+&(&S.^&!"&bOW&3:& –! !"#$#%4&)2#)#+($1&S.^& •! !"#$#%4&41%$.$%<1&)12&4*3.@(=#%K& –! ;(A4&+($"12&2(6*(%<1& %#$&<#%=%.#.4@A&(4&*%&2(6*#4*$A& 1 Questions? Today • Why do we need “good” random numbers? • Sampling – With a fixed random sequence, we see the structure in the error • Monte-Carlo Ray Tracing vs. Path Tracing • Irradiance Caching • Photon Mapping • Ray Grammar Henrik Wann Jensen Readings for Today PhotonPhoton Mapping Mapping • “Rendering Caustics on Non-Lambertian Surfaces”, • Preprocess: cast rays from light sources Henrik Wann Jensen, Graphics Interface 1996. Introduction– independent of viewpoint • “Global Illumination using Photon Maps”, Henrik Wann Jensen, Rendering Techniques 1996. Photon Mapping Photon Map • Store photons • Efficiently store photons for fast access – position + light power + incoming direction • Use hierarchical spatial structure (kd-tree) 6 Questions? Today • Why do we need “good” random numbers? • Sampling – With a fixed random sequence, we see the structure in the error • Monte-Carlo Ray Tracing vs. Path Tracing • Irradiance Caching • Photon Mapping • Ray Grammar Henrik Wann Jensen Readings for Today Photon Mapping • “Rendering Caustics on Non-Lambertian Surfaces”, • Preprocess: cast rays from light sources Henrik Wann Jensen, Graphics Interface 1996. – independent of viewpoint • “Global Illumination using Photon Maps”, Henrik Wann Jensen, Rendering Techniques 1996. Photon Mapping IntroductionPhoton Mapping Photon Map • Store photons • Efficiently store photons for fast access – position + light power + incoming direction • Use hierarchical spatial structure (kd-tree) 6 Questions? Today • Why do we need “good” random numbers? • Sampling – With a fixed random sequence, we see the structure in the error • Monte-Carlo Ray Tracing vs. Path Tracing • Irradiance Caching • Photon Mapping • Ray Grammar Henrik Wann Jensen Readings for Today Photon Mapping • “Rendering Caustics on Non-Lambertian Surfaces”, • Preprocess: cast rays from light sources Henrik Wann Jensen, Graphics Interface 1996. – independent of viewpoint • “Global Illumination using Photon Maps”, Henrik Wann Jensen, Rendering Techniques 1996. Photon Mapping Photon Mapping IntroductionPhoton Map • Store photons • Efficiently store photons for fast access – position + light power + incoming direction • Use hierarchical spatial structure (kd-tree) 6 Photon Mapping IntroductionRendering with Photon Map Photon Map Results • Cast primary rays • For secondary rays – reconstruct irradiance using k closest photons • Combine with irradiance caching and other techniques Photon Mapping - Caustics Comparison • Special photon map for specular reflection and Path Tracing refraction 1000 paths/pixel Photon mapping Glass sphere Closest Photon Details Today • Find the tightest sphere that captures k photons • Sampling – NOTE: HW3 code gives you all photons that might be in the query bounding box • Monte-Carlo Ray Tracing vs. Path Tracing (you need to test for exact box and/or exact sphere) • Irradiance Caching • Divide the energy from those photons by the surface area covered by that sphere • Photon Mapping • What about thin surfaces, concave corners, • Ray Grammar & convex corners? 7 Rendering with Photon Map Photon Map Results • Cast primary rays • For secondary rays – reconstruct irradiance using k closest photons • Combine with irradiance caching and other techniques Photon Mapping Introduction Photon Mapping - Caustics Comparison • Special photon map for specular reflection and Path Tracing refraction 1000 paths/pixel Photon mapping Glass sphere Closest Photon Details Today • Find the tightest sphere that captures k photons • Sampling – NOTE: HW3 code gives you all photons that might be in the query bounding box • Monte-Carlo Ray Tracing vs. Path Tracing (you need to test for exact box and/or exact sphere) • Irradiance Caching • Divide the energy from those photons by the surface area covered by that sphere • Photon Mapping • What about thin surfaces, concave corners, • Ray Grammar & convex corners? 7 ;172(<=#%&(&>(.4=<& •! '#%$1?>(2@#&2(A&$2(<*%+&"(%6@14&(@@& )($"4&@*+"$B&CDEFGHIJK&L.$&%#$&1M.(@@A& 51@@& •! 8(4&6*N<.@$A&4(3)@*%+&CGIEGIJ&)($"4K& !"#$#%&'())*%+& 1O+O&2172(<=#%&(&<(.4=<& •! !($"&$2(<*%+&5#.@6&%116&(&P12A&@.<9A& Q24$&"*$& •! R*6*21<=#%(@&2(A&$2(<*%+&<(%&Q%6& ,(%&-(.$/& <(.4= 01($.2*%+&*3(+14&45*)16&72#3& 81%2*9&:(%%&,1%41%& !"#$#%&'())*%+& :"A&'()&!"#$#%4[& •! ,1%41%&JT;:&UVK&UW& •! 8*+"&P(2*(%<1&*%&'#%$1?>(2@#& •! G*3.@($14&$"1&$2(%4)#2$&*%6*P*6.(@& 21%612*%+4&214.@$4&*%&%#*41& )"#$#%4& •! >#@@1<=#%&61)#4*$16&)"#$#%4& •! !"#$#%4&13*X16&72#3&@*+"$&4#.2<14&!"#$#%&'())*%+& :"A&'()&!"#$#%4[&*%$#&(&\)"#$#%&3()]&D(&Z?E& •! !"#$#%4&L#.%<1Y&4)1<.@(2& 4)(=(@&6($(&4$2.<$.21H&)2#P*614&(& 4.27(<14&•! ,1%41%&JT;:&UVK&UW& •! 8*+"&P(2*(%<1&*%&'#%$1?>(2@#&S.^&61%4*$A&14=3($1& a"1&4<1%1&(L#P1&<#%$(*%4&+@#44A& •! !"#$#%4&61)#4*$16%&6*Y.41&4.27(<14&•! G*3.@($14&$"1&$2(%4)#2$&*%6*P*6.(@& 21%612*%+4&214.@$4&*%&%#*41& 4.27(<14K&(%6&5(4&21%61216&*%&Vb& )"#$#%4& •! >#@@1<=#%&61)#4*$16&)"#$#%4&•! 0@.^&4(3)@14&Q@$1216&1(4*12&$"(%& 3*%.$14&.4*%+&)"#$#%&3())*%+O&a"1& –! 81@6&*%&(&Z?E&4)(=(@&6($(&4$2.<$.21&•! !"#$#%4&13*X16&72#3&@*+"$&4#.2<14& *%$#&(&\)"#$#%&3()]&D(&Z?E&)($"&4(3)@14K&214.@=%+&*%&122#2&($& 4(31&4<1%1&$##9&W&"#.24&7#2&21%612& •! !"#$#%4&L#.%<1Y&4)1<.@(2& –! G.27(<14&%116&%#$&L1&)(2(31$12*/16& 4)(=(@&6($(&4$2.<$.21H&)2#P*614&(& 5*$"&;(6*(%<1K&(&21%612*%+&4A4$13&$"($& 4.27(<14& S.^&61%4*$A&14=3($1&@#512&721M.1%<*14&a"1&4<1%1&(L#P1&<#%$(*%4&+@#44A& •! !"#$#%4&!"##$!%$&'()'*+%,'%-+!./0'72#3& 4.27(<14K&(%6&5(4&21%61216&*%&Vb& .416&2(6*#4*$A&7#2&6*Y.41&21S1<=#%&(%6& •! !"#$#%4&61)#4*$16%&6*Y.41&4.27(<14& •! 0@.^&4(3)@14&Q@$1216&1(4*12&$"(%&•! J22#2&*4&(&214.@$&L*(4K&5"*<"& 1A1& –! 81@6&*%&(&Z?E&4)(=(@&6($(&4$2.<$.21& 3*%.$14&.4*%+&)"#$#%&3())*%+O&a"1& )($"&$2(<*%+&7#2&+@#44A&21S1<=#%O& )($"&4(3)@14K&214.@=%+&*%&122#2&($& 4(31&4<1%1&$##9&W&"#.24&7#2&21%612& –! G.27(<14&%116&%#$&L1&)(2(31$12*/16& 61<21(414&(4&$"1&%.3L12& @#512&721M.1%<*14& 5*$"&;(6*(%<1K&(&21%612*%+&4A4$13&$"($& •! !"#$#%4&!"##$!%$&'()'*+%,'%-+!./0'72#3& 4(3)@14&*%<21(41&.416&2(6*#4*$A&7#2&6*Y.41&21S1<=#%&(%6& 1A1& •! J22#2&*4&(&214.@$&L*(4K&5"*<"& 61<21(414&(4&$"1&%.3L12&•! _%6K"&A1("K&*$`4&(&@#$&7(4$12&)($"&$2(<*%+&7#2&+@#44A&21S1<=#%O& 4(3)@14&*%<21(41& •! _%6K"&A1("K&*$`4&(&@#$&7(4$12& Photon Mapping What:"($&*4&(&!"#$#%[& is a Photon? G#.2<14& !p :"($&*4&(&!"#$#%[&•! _&)"#$#%&*&*4&(&)(2=<@1&@*+"$& •! !#*%$&4#.2<1&G#.2<14& $"($&<(22*14&S.^& D! K& H& !"* * !* !p –! !"#$#%4&13*X16&.%*7#23@A&*%&(@@& –! 6*21<=#%4& •! _&)"#$#%&!#512B&*&*4&(&)(2=<@1&@*+"$&!"*&c&3(+%*$.61&D*%& •! !#*%$&4#.2<1& :(X4H&(%6&<#@#2&$"1&S.^&*$& !" •! !#512&4#.2<1&D:H&6*4$2*L.$16& <(22*14K&4$#216&(4&(%&;TR&$2*)@1& p $"($&<(22*14&S.^&!"*D!*K&!*H& 1P1%@A&(3#%+&)"#$#%4&–! !"#$#%4&13*X16&.%*7#23@A&*%&(@@& –! !#4*=#%B&!*&c&@#<(=#%&$"1& •! –! !#512B&)"#$#%&!"*&c&3(+%*$.61&D*%& xp 0@.^&1(<"&)"#$#%&1M.(@&$#&4#.2<1&6*21<=#%4& :(X4H&(%6&<#@#2&$"1&S.^&*$& )#512&6*P*616&LA&$#$(@&d&)"#$#%4& –! E*21<=#%B&!*&c&$"1&*%<*61%$& •! !#512&4#.2<1&D:H&6*4$2*L.$16& !"p •! <(22*14K&4$#216&(4&(%&;TR&$2*)@1&6*21<=#%&!.&.416&$#&<#3).$1& 0#2&1^(3)@1K&(&Wb:&@*+"$&L.@L&5#.@6& *22(6*(%<1& 41%6.$&(&$#$(@&ebb-&)"#$#%4K&1P1%@A&(3#%+&)"#$#%4& –! !#4*=#%B&! &c&@#<(=#%&$"1& •! !"#$#%4&P4O&2(A4&* 1(<"&<(22A*%+&(&S.^&•! !"&bOW&3:& )"#$#%& xp 0@.^&1(<"&)"#$#%&1M.(@&$#&4#.2<1& –! !"#$#%4&)2#)#+($1&S.^& •! !"#$#%4&41%$.$%<1&)12&4*3.@(=#%K&)#512&6*P*616&LA&$#$(@&d&)"#$#%4& –! E*21<=#%B&! &c&$"1&*%<*61%$& %#$&<#%=%.#.4@A&(4&*%&2(6*#4*$A& –! ;(A4&+($"12&2(6*(%<1&* •! 6*21<=#%&!.&.416&$#&<#3).$1& 0#2&1^(3)@1K&(&Wb:&@*+"$&L.@L&5#.@6& *22(6*(%<1& 41%6.$&(&$#$(@&ebb-&)"#$#%4K& •! !"#$#%4&P4O&2(A4& 1(<"&<(22A*%+&(&S.^&!"&bOW&3:& –! !"#$#%4&)2#)#+($1&S.^& •! !"#$#%4&41%$.$%<1&)12&4*3.@(=#%K& –! ;(A4&+($"12&2(6*(%<1& %#$&<#%=%.#.4@A&(4&*%&2(6*#4*$A& 1 1 ;172(<=#%&(&>(.4=<& •! '#%$1?>(2@#&2(A&$2(<*%+&"(%6@14&(@@& )($"4&@*+"$B&CDEFGHIJK&L.$&%#$&1M.(@@A& 51@@& •! 8(4&6*N<.@$A&4(3)@*%+&CGIEGIJ&)($"4K& !"#$#%&'())*%+& 1O+O&2172(<=#%&(&<(.4=<& •! !($"&$2(<*%+&5#.@6&%116&(&P12A&@.<9A& Q24$&"*$& •! R*6*21<=#%(@&2(A&$2(<*%+&<(%&Q%6& ,(%&-(.$/& <(.4= 01($.2*%+&*3(+14&45*)16&72#3& 81%2*9&:(%%&,1%41%& ;172(<=#%&(&>(.4=<& •! '#%$1?>(2@#&2(A&$2(<*%+&"(%6@14&(@@& )($"4&@*+"$B&CDEFGHIJK&L.$&%#$&1M.(@@A& 51@@& •! 8(4&6*N<.@$A&4(3)@*%+&CGIEGIJ&)($"4K& !"#$#%&'())*%+& 1O+O&2172(<=#%&(&<(.4=<& •! !($"&$2(<*%+&5#.@6&%116&(&P12A&@.<9A& Q24$&"*$& •! R*6*21<=#%(@&2(A&$2(<*%+&<(%&Q%6& ,(%&-(.$/& <(.4= 01($.2*%+&*3(+14&45*)16&72#3& !"#$#%&'())*%+& 81%2*9&:(%%&,1%41%& :"A&'()&!"#$#%4[& •! ,1%41%&JT;:&UVK&UW& •! 8*+"&P(2*(%<1&*%&'#%$1?>(2@#& •! G*3.@($14&$"1&$2(%4)#2$&*%6*P*6.(@& 21%612*%+4&214.@$4&*%&%#*41& )"#$#%4& •! >#@@1<=#%&61)#4*$16&)"#$#%4& •! !"#$#%4&13*X16&72#3&@*+"$&4#.2<14& *%$#&(&\)"#$#%&3()]&D(&Z?E& •! !"#$#%4&L#.%<1Y&4)1<.@(2& 4)(=(@&6($(&4$2.<$.21H&)2#P*614&(& 4.27(<14& S.^&61%4*$A&14=3($1& a"1&4<1%1&(L#P1&<#%$(*%4&+@#44A& 4.27(<14K&(%6&5(4&21%61216&*%&Vb& •! !"#$#%4&61)#4*$16%&6*Y.41&4.27(<14& •! 0@.^&4(3)@14&Q@$1216&1(4*12&$"(%& –! 81@6&*%&(&Z?E&4)(=(@&6($(&4$2.<$.21& !"#$#%&'())*%+& :"A&'()&!"#$#%4[& 3*%.$14&.4*%+&)"#$#%&3())*%+O&a"1& )($"&4(3)@14K&214.@=%+&*%&122#2&($& 4(31&4<1%1&$##9&W&"#.24&7#2&21%612& –! G.27(<14&%116&%#$&L1&)(2(31$12*/16& •! ,1%41%&JT;:&UVK&UW& @#512&721M.1%<*14&•! 8*+"&P(2*(%<1&*%&'#%$1?>(2@#& 5*$"&;(6*(%<1K&(&21%612*%+&4A4$13&$"($& •! !"#$#%4&!"##$!%$&'()'*+%,'%-+!./0'72#3& •! G*3.@($14&$"1&$2(%4)#2$&*%6*P*6.(@& 21%612*%+4&214.@$4&*%&%#*41& .416&2(6*#4*$A&7#2&6*Y.41&21S1<=#%&(%6& )"#$#%4& •! J22#2&*4&(&214.@$&L*(4K&5"*<"& 1A1& •! >#@@1<=#%&61)#4*$16&)"#$#%4& )($"&$2(<*%+&7#2&+@#44A&21S1<=#%O& •! !"#$#%4&13*X16&72#3&@*+"$&4#.2<14& *%$#&(&\)"#$#%&3()]&D(&Z?E& •! !"#$#%4&L#.%<1Y&4)1<.@(2& 61<21(414&(4&$"1&%.3L12&4)(=(@&6($(&4$2.<$.21H&)2#P*614&(& 4.27(<14& S.^&61%4*$A&14=3($1& a"1&4<1%1&(L#P1&<#%$(*%4&+@#44A& 4(3)@14&*%<21(41& 4.27(<14K&(%6&5(4&21%61216&*%&Vb& •! !"#$#%4&61)#4*$16%&6*Y.41&4.27(<14& •! 0@.^&4(3)@14&Q@$1216&1(4*12&$"(%& –! 81@6&*%&(&Z?E&4)(=(@&6($(&4$2.<$.21& 3*%.$14&.4*%+&)"#$#%&3())*%+O&a"1& •! _%6K"&A1("K&*$`4&(&@#$&7(4$12&)($"&4(3)@14K&214.@=%+&*%&122#2&($& 4(31&4<1%1&$##9&W&"#.24&7#2&21%612& –! G.27(<14&%116&%#$&L1&)(2(31$12*/16& @#512&721M.1%<*14& 5*$"&;(6*(%<1K&(&21%612*%+&4A4$13&$"($& •! !"#$#%4&!"##$!%$&'()'*+%,'%-+!./0'72#3& .416&2(6*#4*$A&7#2&6*Y.41&21S1<=#%&(%6& 1A1& •! J22#2&*4&(&214.@$&L*(4K&5"*<"& 61<21(414&(4&$"1&%.3L12& )($"&$2(<*%+&7#2&+@#44A&21S1<=#%O& 4(3)@14&*%<21(41& •! _%6K"&A1("K&*$`4&(&@#$&7(4$12& Photon Mapping :"($&*4&(&!"#$#%[& SourcesG#.2<14& !p :"($&*4&(&!"#$#%[& •! _&)"#$#%&*&*4&(&)(2=<@1&@*+"$& G#.2<14&•! !#*%$&4#.2<1& $"($&<(22*14&S.^&!"*D!*K&!*H& –! !"#$#%4&13*X16&.%*7#23@A&*%&(@@& !–p! !#512B&!"*&c&3(+%*$.61&D*%& 6*21<=#%4& :(X4H&(%6&<#@#2&$"1&S.^&*$& • !"p ! !#512&4#.2<1&D:H&6*4$2*L.$16& •! _&)"#$#%&*&*4&(&)(2=<@1&@*+"$& <(22*14K&4$#216&(4&(%&;TR&$2*)@1& •! !#*%$&4#.2<1&1P1%@A&(3#%+&)"#$#%4& –! !#4*=#%B&!*&c&@#<(=#%&$"1& •! 0@.^&1(<"&)"#$#%&1M.(@&$#&4#.2<1& $"($&<(22*14&S.^&!"*D!*K&!*H& )"#$#%& xp –! !"#$#%4&13*X16&.%*7#23@A&*%&(@@& )#512&6*P*616&LA&$#$(@&d&)"#$#%4& –! E*21<=#%B&! &c&$"1&*%<*61%$& –! !#512B&!"*&c&3(+%*$.61&D*%& * 6*21<=#%4&•! 6*21<=#%&!.&.416&$#&<#3).$1& 0#2&1^(3)@1K&(&Wb:&@*+"$&L.@L&5#.@6& :(X4H&(%6&<#@#2&$"1&S.^&*$& *22(6*(%<1&!" •! !#512&4#.2<1&D:H&6*4$2*L.$16&41%6.$&(&$#$(@&ebb-&)"#$#%4K& <(22*14K&4$#216&(4&(%&;TR&$2*)@1& •! !"#$#%4&P4O&2(A4&p 1(<"&<(22A*%+&(&S.^&!"&bOW&3:& –! !"#$#%4&)2#)#+($1&S.^& 1P1%@A&(3#%+&)"#$#%4&•! !"#$#%4&41%$.$%<1&)12&4*3.@(=#%K& –! !#4*=#%B&! &c&@#<(=#%&$"1& %#$&<#%=%.#.4@A&(4&*%&2(6*#4*$A& * –! ;(A4&+($"12&2(6*(%<1& •! )"#$#%& xp 0@.^&1(<"&)"#$#%&1M.(@&$#&4#.2<1& )#512&6*P*616&LA&$#$(@&d&)"#$#%4& –! E*21<=#%B&! &c&$"1&*%<*61%$& * •! 6*21<=#%&!.&.416&$#&<#3).$1& 0#2&1^(3)@1K&(&Wb:&@*+"$&L.@L&5#.@6& *22(6*(%<1& 41%6.$&(&$#$(@&ebb-&)"#$#%4K& •! !"#$#%4&P4O&2(A4& 1(<"&<(22A*%+&(&S.^&!"&bOW&3:& –! !"#$#%4&)2#)#+($1&S.^& •! !"#$#%4&41%$.$%<1&)12&4*3.@(=#%K& –! ;(A4&+($"12&2(6*(%<1& %#$&<#%=%.#.4@A&(4&*%&2(6*#4*$A& 1 1 Photon Mapping !"#$%&'()*+,$-& H(--"+2&H4(1$I$& Mixed Surfaces ? •! '()*+,$-&.+/$&-0$,(1+)&+2%& •! J)/4&K&L")MN&'OC& !"#$%&'()*+,$-& •! H(--"+2&H4(1$I$& %"3(-$&,45042$26-& !d = 50% H$8$,6$%&8(#&421?&+&*)+,=42&4*& = 30% "2,"%$26&8(#& –! &! &7&%"3(-$&)$8$,6+2,$& !s ? ! •! JP$)&-$/$)+1&)$8$,=42-N&-0$2%"2>& –! &!"&7&-0$,(1+)&)$8$,6+2,$& +&146&4*&=5$&M$$0"2>&6)+,M&4*&/$)?& – •! '()*+,$-&.+/$&-0$,(1+)! &!!&9&!"&:&;&<,42-$)/+=42&4*&&+2%& 1"I1$&8(#& •! J)/4&K&L")MN&'OC& $2$)>?@& •! D2-6$+%N&,4501$6$1?&+B-4)B&-45$&•! %"3(-$&,45042$26-&•! A$6&!&B$&+&(2"*4)5&)+2%45&/+1($& !d = 50% 0.4642-&+2%&,4501$6$1?&)$8$,6&H$8$,6$%&8(#&421?&+&*)+,=42&4*& 46.$)-&&+6&*(11&04G$)& *)45&C&64&;& ! = 30% "2,"%$26&8(#& –! &!!&7&%"3(-$&)$8$,6+2,$& s •! '0$2%&=5$&6)+,"2>&*$G$)&*(11& •! D*&!&:&!!&6.$2&)$8$,6&%"3(-$& 04G$)&0.4642-& •! JP$)&-$/$)+1&)$8$,=42-N&-0$2%"2>& –! & &7&-0$,(1+)&)$8$,6+2,$& •! Q)4B+B"1"6?&4*&)$8$,6+2,$&"-&6.$& !" •! E1-$&"*&!&:&!!&9&!"&6.$2&)$8$,6& +&146&4*&=5$&M$$0"2>&6)+,M&4*&/$)?& -0$,(1+)& )$8$,6+2,$&!R& –! &! &9&! &:&;&<,42-$)/+=42&4*& 1"I1$&8(#&! = 60%" ! " •! F6.$)G"-$&+B-4)B& Russian Roulette Example•! Q)4B+B"1"6?&4*&+B-4)0=42&"-&;&7&!R&& $2$)>?@& •! D2-6$+%N&,4501$6$1?&+B-4)B&-45$& 0.4642-&+2%&,4501$6$1?&)$8$,6& •! A$6&!&B$&+&(2"*4)5&)+2%45&/+1($& Surface reflectance: R = 0.5 *)45&C&64&;& 46.$)-&&+6&*(11&04G$)& Incoming photon: Φp =2W •! '0$2%&=5$&6)+,"2>&*$G$)&*(11& •! D*&!&:&!!&6.$2&)$8$,6&%"3(-$& 04G$)&0.4642-& •! E1-$&"*&!&:&!!&9&!"&6.$2&)$8$,6& •! Q)4B+B"1"6?&4*&)$8$,6+2,$&"-&6.$& -0$,(1+)& r = random(); )$8$,6+2,$&!R& if ( r < 0.5 ) ! = 60%" •! F6.$)G"-$&+B-4)B& •! Q)4B+B"1"6?&4*&+B-4)0=42&"-&;&7&!R&& '64)"2>&Q.4642-& reflect photon with powerLTW&])$$& 2 W else •! S-$-&+&M%T6)$$&7&+&-$U($2,$&4*&+#"-T +1">2$%&0+)==42-& photon is absorbed •! ^"/$2&+&1+)>$&2(5B$)&4*&04"26-&0;N_N02&"2&XW& –! VTW&0+)==42-&+)$&1"2$-& -0+,$&G$&G+26&64&,1+--"*?&6.$5&+2%&B$&+B1$&64& –! XTW&0+)==42-&+)$&01+2$-& •! J#"-&4*&0+)==42-&+16$)2+6$-&G)6& 5+M$&*+-6&U($)"$-`& %$06.&4*&6.$&6)$$& – •! J/$)+>$&+,,$--&=5$&"-<14>&$@& !a"2%&+11&6.$&04"26-&G"6."2&+&,(B4"%& •! Y4)-6&,+-$<$@&G.$2&6)$$&"-& –!a"2%&+11&6.$&04"26-&G"6."2&+&2$">.B4().44%&4*&+& -$/$)$1?&140-"%$%& •! Z$$%&64&5+"26+"2&+&B+1+2,$%&6)$$N& >"/$2&04"26& G.",.&,+2&B$&%42$&"2<$&14>&$@& •! ].$-$&04"26-&+)$&0.4642&04-"=42-&42&-()*+,$-R& •! [+2&\2%&M&2$+)$-6&2$">.B4)-&"2& #<%&9&14>&$@&=5$&(-"2>&+&.$+0& '64)"2>&Q.4642-& LTW&])$$& •! S-$-&+&M%T6)$$&7&+&-$U($2,$&4*&+#"-T +1">2$%&0+)==42-& •! ^"/$2&+&1+)>$&2(5B$)&4*&04"26-&0;N_N02&"2&XW& –! VTW&0+)==42-&+)$&1"2$-& -0+,$&G$&G+26&64&,1+--"*?&6.$5&+2%&B$&+B1$&64& –! XTW&0+)==42-&+)$&01+2$-<W&])$$& LTW&])$$& •! J#"-&4*&0+)==42-&+16$)2+6$-&G)6& 5+M$&*+-6&U($)"$-`& •! •! J<W&6)$$&"-&b(-6&+2&+#"-&+1">2$%&c'Q&6)$$R& Y)"6$&0"&d&<#;"NV"N"@& %$06.&4*&6.$&6)$$& •! A$6be&B$&6.$&5$%"+2&4*&6.$&/+1($-&4*&6.$&b6.&,44)%"2+6$&–!a"2%&+11&6.$&04"26-&G"6."2&+&,(B4"%& •! J/$)+>$&+,,$--&=5$&"-&•! E+,.& 24%$<14> 4*& 6.$&&$@& 6)$$& -64)$-& +& -$0+)+=2>& 2 LTW&])$$& LTW&])$$& •! •! J<W&6)$$&"-&b(-6&+2&+#"-&+1">2$%&c'Q&6)$$R& Y)"6$&0"&d&<#;"NV"N"@& •! A$6be&B$&6.$&5$%"+2&4*&6.$&/+1($-&4*&6.$&b6.&,44)%"2+6$& •! E+,.& 24%$& 4*& 6.$& 6)$$& -64)$-& +& -$0+)+=2>& 2 !"#$#%&'())*%+&!,#-.//&01.,1*.2 Photon Mapping !"#$#%&'())*%+&*,&(&-&,$(+.&)/#0.,,1 !)%*&+,&-.#"$#/0&)1%&213)3/&45* 2'*$&)"#$#%,&3/#'&$".&4*+"$, 50($$./&)"#$#%,&*%&$".&,0.%.&6&)"#$#%&*%$./(0$*#%,& 7*$"Y.0$, 5$#/.&)"#$#%,&*%&$".&)"#$#%&'() !)%*&',&67#/0&)1%&*13)3/&85*/&95:&)95;#/0&<&=#/5"& 9%/$%9#/0 :$&*%$./,.0$*#%&)#*%$,&;&*%,$.(<&0(40=4($*%+&$".& <*33=,.&4*+"$*%+&0#')#%.%$&3/#'&$".&%#/'(4&>.0$#/?& $".&<*33=,.&4*+"$*%+&0#')#%.%$&0#'.,&3/#'&$".& )"#$#%&'()1 CSCD 570 !"#$%&'( 11/12/08 !"#$%&'()*+,$-& H(--"+2&H4(1$I$& ? •! '()*+,$-&.+/$&-0$,(1+)&+2%& •! J)/4&K&L")MN&'OC& %"3(-$&,45042$26-& !d = 50% •! H$8$,6$%&8(#&421?&+&*)+,=42&4*& = 30% "2,"%$26&8(#& –! &! &7&%"3(-$&)$8$,6+2,$& !s ! •! JP$)&-$/$)+1&)$8$,=42-N&-0$2%"2>& –! &!"&7&-0$,(1+)&)$8$,6+2,$& +&146&4*&=5$&M$$0"2>&6)+,M&4*&/$)?& –! &!!&9&!"&:&;&<,42-$)/+=42&4*& 1"I1$&8(#& $2$)>?@& •! D2-6$+%N&,4501$6$1?&+B-4)B&-45$& •! A$6&!&B$&+&(2"*4)5&)+2%45&/+1($& 0.4642-&+2%&,4501$6$1?&)$8$,6& *)45&C&64&;& 46.$)-&&+6&*(11&04G$)& •! '0$2%&=5$&6)+,"2>&*$G$)&*(11& •! D*&!&:&!!&6.$2&)$8$,6&%"3(-$& 04G$)&0.4642-& •! E1-$&"*&!&:&!!&9&!"&6.$2&)$8$,6& •! Q)4B+B"1"6?&4*&)$8$,6+2,$&"-&6.$& -0$,(1+)& )$8$,6+2,$&!R& ! = 60%" •! F6.$)G"-$&+B-4)B& •! Q)4B+B"1"6?&4*&+B-4)0=42&"-&;&7&!R&& Photon Mapping '64)"2>&Q.4642-& LTW&])$$& •! S-$-&+&M%T6)$$&7&+&-$U($2,$&4*&+#"-T +1">2$%&0+)==42-& •! ^"/$2&+&1+)>$&2(5B$)&4*&04"26-&0;N_N02&"2&XW& –! VTW&0+)==42-&+)$&1"2$-& -0+,$&G$&G+26&64&,1+--"*?&6.$5&+2%&B$&+B1$&64& –! XTW&0+)==42-&+)$&01+2$-& •! J#"-&4*&0+)==42-&+16$)2+6$-&G)6& 5+M$&*+-6&U($)"$-`& %$06.&4*&6.$&6)$$& – •! J/$)+>$&+,,$--&=5$&"-<14>&$@& !a"2%&+11&6.$&04"26-&G"6."2&+&,(B4"%& •! Y4)-6&,+-$<$@&G.$2&6)$$&"-& –!a"2%&+11&6.$&04"26-&G"6."2&+&2$">.B4().44%&4*&+& -$/$)$1?&140-"%$%& •! Z$$%&64&5+"26+"2&+&B+1+2,$%&6)$$N& >"/$2&04"26& G.",.&,+2&B$&%42$&"2<$&14>&$@& •! ].$-$&04"26-&+)$&0.4642&04-"=42-&42&-()*+,$-R& •! [+2&\2%&M&2$+)$-6&2$">.B4)-&"2& #<%&9&14>&$@&=5$&(-"2>&+&.$+0& LTW&])$$& LTW&])$$& •! •! J<W&6)$$&"-&b(-6&+2&+#"-&+1">2$%&c'Q&6)$$R& Y)"6$&0"&d&<#;"NV"N"@& •! A$6be&B$&6.$&5$%"+2&4*&6.$&/+1($-&4*&6.$&b6.&,44)%"2+6$& •! E+,.& 24%$& 4*& 6.$& 6)$$& -64)$-& +& -$0+)+=2>& 2 !"#$%&'()*+,$-& H(--"+2&H4(1$I$& ? •! '()*+,$-&.+/$&-0$,(1+)&+2%& •! J)/4&K&L")MN&'OC& %"3(-$&,45042$26-& !d = 50% •! H$8$,6$%&8(#&421?&+&*)+,=42&4*& = 30% "2,"%$26&8(#& –! &! &7&%"3(-$&)$8$,6+2,$& !s ! •! JP$)&-$/$)+1&)$8$,=42-N&-0$2%"2>& –! &!"&7&-0$,(1+)&)$8$,6+2,$& +&146&4*&=5$&M$$0"2>&6)+,M&4*&/$)?& –! &!!&9&!"&:&;&<,42-$)/+=42&4*& 1"I1$&8(#& $2$)>?@& •! D2-6$+%N&,4501$6$1?&+B-4)B&-45$& •! A$6&!&B$&+&(2"*4)5&)+2%45&/+1($& 0.4642-&+2%&,4501$6$1?&)$8$,6& *)45&C&64&;& 46.$)-&&+6&*(11&04G$)& •! '0$2%&=5$&6)+,"2>&*$G$)&*(11& •! D*&!&:&!!&6.$2&)$8$,6&%"3(-$& 04G$)&0.4642-& •! E1-$&"*&!&:&!!&9&!"&6.$2&)$8$,6& •! Q)4B+B"1"6?&4*&)$8$,6+2,$&"-&6.$& -0$,(1+)& )$8$,6+2,$&!R& ! = 60%" •! F6.$)G"-$&+B-4)B& •! Q)4B+B"1"6?&4*&+B-4)0=42&"-&;&7&!R&& '64)"2>&Q.4642-& LTW&])$$& •! S-$-&+&M%T6)$$&7&+&-$U($2,$&4*&+#"-T +1">2$%&0+)==42-& •! ^"/$2&+&1+)>$&2(5B$)&4*&04"26-&0;N_N02&"2&XW& –! VTW&0+)==42-&+)$&1"2$-& -0+,$&G$&G+26&64&,1+--"*?&6.$5&+2%&B$&+B1$&64& –! XTW&0+)==42-&+)$&01+2$-& •! J#"-&4*&0+)==42-&+16$)2+6$-&G)6& 5+M$&*+-6&U($)"$-`& %$06.&4*&6.$&6)$$& – •! J/$)+>$&+,,$--&=5$&"-<14>&$@& !a"2%&+11&6.$&04"26-&G"6."2&+&,(B4"%& •! Y4)-6&,+-$<$@&G.$2&6)$$&"-& –!a"2%&+11&6.$&04"26-&G"6."2&+&2$">.B4().44%&4*&+& -$/$)$1?&140-"%$%& •! Z$$%&64&5+"26+"2&+&B+1+2,$%&6)$$N& >"/$2&04"26& G.",.&,+2&B$&%42$&"2<$&14>&$@& •! ].$-$&04"26-&+)$&0.4642&04-"=42-&42&-()*+,$-R& •! [+2&\2%&M&2$+)$-6&2$">.B4)-&"2& #<%&9&14>&$@&=5$&(-"2>&+&.$+0& Photon Mapping LTW&])$$& LTW&])$$& •! •! J<W&6)$$&"-&b(-6&+2&+#"-&+1">2$%&c'Q&6)$$R& Y)"6$&0"&d&<#;"NV"N"@& •! A$6be&B$&6.$&5$%"+2&4*&6.$&/+1($-&4*&6.$&b6.&,44)%"2+6$& •! E+,.& 24%$& 4*& 6.$& 6)$$& -64)$-& +& -$0+)+=2>& 2 !"#$%&'()*+,$-& H(--"+2&H4(1$I$& ? •! '()*+,$-&.+/$&-0$,(1+)&+2%& •! J)/4&K&L")MN&'OC& %"3(-$&,45042$26-& !d = 50% •! H$8$,6$%&8(#&421?&+&*)+,=42&4*& = 30% "2,"%$26&8(#& –! &! &7&%"3(-$&)$8$,6+2,$& !s ! •! JP$)&-$/$)+1&)$8$,=42-N&-0$2%"2>& –! &!"&7&-0$,(1+)&)$8$,6+2,$& +&146&4*&=5$&M$$0"2>&6)+,M&4*&/$)?& –! &!!&9&!"&:&;&<,42-$)/+=42&4*& 1"I1$&8(#& $2$)>?@& •! D2-6$+%N&,4501$6$1?&+B-4)B&-45$& •! A$6&!&B$&+&(2"*4)5&)+2%45&/+1($& 0.4642-&+2%&,4501$6$1?&)$8$,6& *)45&C&64&;& 46.$)-&&+6&*(11&04G$)& •! '0$2%&=5$&6)+,"2>&*$G$)&*(11& •! D*&!&:&!!&6.$2&)$8$,6&%"3(-$& 04G$)&0.4642-& •! E1-$&"*&!&:&!!&9&!"&6.$2&)$8$,6& •! Q)4B+B"1"6?&4*&)$8$,6+2,$&"-&6.$& -0$,(1+)& )$8$,6+2,$&!R& ! = 60%" •! F6.$)G"-$&+B-4)B& •! Q)4B+B"1"6?&4*&+B-4)0=42&"-&;&7&!R&& '64)"2>&Q.4642-& LTW&])$$& •! S-$-&+&M%T6)$$&7&+&-$U($2,$&4*&+#"-T +1">2$%&0+)==42-& •! ^"/$2&+&1+)>$&2(5B$)&4*&04"26-&0;N_N02&"2&XW& –! VTW&0+)==42-&+)$&1"2$-& -0+,$&G$&G+26&64&,1+--"*?&6.$5&+2%&B$&+B1$&64& –! XTW&0+)==42-&+)$&01+2$-& •! J#"-&4*&0+)==42-&+16$)2+6$-&G)6& 5+M$&*+-6&U($)"$-`& %$06.&4*&6.$&6)$$& – •! J/$)+>$&+,,$--&=5$&"-<14>&$@& !a"2%&+11&6.$&04"26-&G"6."2&+&,(B4"%& •! Y4)-6&,+-$<$@&G.$2&6)$$&"-& –!a"2%&+11&6.$&04"26-&G"6."2&+&2$">.B4().44%&4*&+& -$/$)$1?&140-"%$%& •! Z$$%&64&5+"26+"2&+&B+1+2,$%&6)$$N& >"/$2&04"26& G.",.&,+2&B$&%42$&"2<$&14>&$@& •! ].$-$&04"26-&+)$&0.4642&04-"=42-&42&-()*+,$-R& •! [+2&\2%&M&2$+)$-6&2$">.B4)-&"2& #<%&9&14>&$@&=5$&(-"2>&+&.$+0& Photon Mapping LTW&])$$& LTW&])$$& •! •! J<W&6)$$&"-&b(-6&+2&+#"-&+1">2$%&c'Q&6)$$R& Y)"6$&0"&d&<#;"NV"N"@& •! A$6be&B$&6.$&5$%"+2&4*&6.$&/+1($-&4*&6.$&b6.&,44)%"2+6$& •! E+,.& 24%$& 4*& 6.$& 6)$$& -64)$-& +& -$0+)+=2>& 2 Photon Mapping !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$/01'$ KDTree makeKDTree(int n, point_kd p[], int depth) /*returns a kd-tree for the n 3-dimensional points in p - assume all indices start from 1*/ { if n==1 return a leaf containing p[1]; /*base case*/ x = median of values of (depth mod 3) coordinate in the points; pLeft is the set of points to the left of x and pRight is the set to the right; leftNode = makeKDTree(n/2,pLeft,depth+1); rightNode = makeKDTree(n/2,pRight,depth+1); /*assumes that the median splits the points exactly in two*/ /*compose a new node and return*/ return compose(leftNode,x,rightNode); } !"#$%&''$213+45+6'7$ H'I'>5'1$H+19+4>'$ •! 87946$+$!"#$5&''$70.:;04$10'7$405$1'-'41$04$ •! H'>+..$5<'$&'I'>5'1$&+19+4>'$'E:+;04$ 5<'$ -&0391946$ +$ ,'7<$ 04$ 5<'$ 7:&=+>'7$ ?$ 5<'$ !A = !r2 1975&9@:;04$ 0=$ 5<'$ -<05047$ 97$ ,+945+94'1$ 941'-'41'45.A$ 0=$ 5<'$ &'-&'7'45+;04$ 0=$ 5<'$ •! /043'&5$94>91'45$&+19+4>'$9450$94>91'45$I:*$ 7:&=+>'7$ •! %<'$,'5<01$10'7$405$&'.A$04$B&'6:.+&C$7:&=+>'7$ •! H'I'>5'1$&+19+4>'$94$5'&,7$0=$94>91'45$I:*$ 7:><$+7$-0.A6047D$@:5$>0:.1$'E:+..A$F'..$+--.A$ 50$=&+>5+.$5A-'$7:&=+>'7G$ •! J:,'&9>+..A$ 3 !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$Photon Mapping !"#$%&''$(#$)*+,-.'$ !"#$%&''$/01'$ KDTree makeKDTree(int n, point_kd p[], int depth) /*returns a kd-tree for the n 3-dimensional points in p - assume all indices start from 1*/ { if n==1 return a leaf containing p[1]; /*base case*/ x = median of values of (depth mod 3) coordinate in the points; pLeft is the set of points to the left of x and pRight is the set to the right; leftNode = makeKDTree(n/2,pLeft,depth+1); rightNode = makeKDTree(n/2,pRight,depth+1); /*assumes that the median splits the points exactly in two*/ /*compose a new node and return*/ return compose(leftNode,x,rightNode); } !"#$%&''$213+45+6'7$ H'I'>5'1$H+19+4>'$ •! 87946$+$!"#$5&''$70.:;04$10'7$405$1'-'41$04$ •! H'>+..$5<'$&'I'>5'1$&+19+4>'$'E:+;04$ 5<'$ -&0391946$ +$ ,'7<$ 04$ 5<'$ 7:&=+>'7$ ?$ 5<'$ !A = !r2 1975&9@:;04$ 0=$ 5<'$ -<05047$ 97$ ,+945+94'1$ 941'-'41'45.A$ 0=$ 5<'$ &'-&'7'45+;04$ 0=$ 5<'$ •! /043'&5$94>91'45$&+19+4>'$9450$94>91'45$I:*$ 7:&=+>'7$ •! %<'$,'5<01$10'7$405$&'.A$04$B&'6:.+&C$7:&=+>'7$ •! H'I'>5'1$&+19+4>'$94$5'&,7$0=$94>91'45$I:*$ 7:><$+7$-0.A6047D$@:5$>0:.1$'E:+..A$F'..$+--.A$ 50$=&+>5+.$5A-'$7:&=+>'7G$ •! J:,'&9>+..A$ 3 !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$Photon Mapping !"#$%&''$(#$)*+,-.'$ !"#$%&''$/01'$ KDTree makeKDTree(int n, point_kd p[], int depth) /*returns a kd-tree for the n 3-dimensional points in p - assume all indices start from 1*/ { if n==1 return a leaf containing p[1]; /*base case*/ x = median of values of (depth mod 3) coordinate in the points; pLeft is the set of points to the left of x and pRight is the set to the right; leftNode = makeKDTree(n/2,pLeft,depth+1); rightNode = makeKDTree(n/2,pRight,depth+1); /*assumes that the median splits the points exactly in two*/ /*compose a new node and return*/ return compose(leftNode,x,rightNode); } !"#$%&''$213+45+6'7$ H'I'>5'1$H+19+4>'$ •! 87946$+$!"#$5&''$70.:;04$10'7$405$1'-'41$04$ •! H'>+..$5<'$&'I'>5'1$&+19+4>'$'E:+;04$ 5<'$ -&0391946$ +$ ,'7<$ 04$ 5<'$ 7:&=+>'7$ ?$ 5<'$ !A = !r2 1975&9@:;04$ 0=$ 5<'$ -<05047$ 97$ ,+945+94'1$ 941'-'41'45.A$ 0=$ 5<'$ &'-&'7'45+;04$ 0=$ 5<'$ •! /043'&5$94>91'45$&+19+4>'$9450$94>91'45$I:*$ 7:&=+>'7$ •! %<'$,'5<01$10'7$405$&'.A$04$B&'6:.+&C$7:&=+>'7$ •! H'I'>5'1$&+19+4>'$94$5'&,7$0=$94>91'45$I:*$ 7:><$+7$-0.A6047D$@:5$>0:.1$'E:+..A$F'..$+--.A$ 50$=&+>5+.$5A-'$7:&=+>'7G$ •! J:,'&9>+..A$ 3 !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$/01'$ Photon Mapping KDTree makeKDTree(int n, point_kd p[], int depth) /*returns a kd-tree for the n 3-dimensional points in p - assume all indices start from 1*/ { if n==1 return a leaf containing p[1]; /*base case*/ x = median of values of (depth mod 3) coordinate in the points; pLeft is the set of points to the left of x and pRight is the set to the right; leftNode = makeKDTree(n/2,pLeft,depth+1); rightNode = makeKDTree(n/2,pRight,depth+1); /*assumes that the median splits the points exactly in two*/ /*compose a new node and return*/ return compose(leftNode,x,rightNode); } !"#$%&''$213+45+6'7$ H'I'>5'1$H+19+4>'$ •! 87946$+$!"#$5&''$70.:;04$10'7$405$1'-'41$04$ •! H'>+..$5<'$&'I'>5'1$&+19+4>'$'E:+;04$ 5<'$ -&0391946$ +$ ,'7<$ 04$ 5<'$ 7:&=+>'7$ ?$ 5<'$ !A = !r2 1975&9@:;04$ 0=$ 5<'$ -<05047$ 97$ ,+945+94'1$ 941'-'41'45.A$ 0=$ 5<'$ &'-&'7'45+;04$ 0=$ 5<'$ •! /043'&5$94>91'45$&+19+4>'$9450$94>91'45$I:*$ 7:&=+>'7$ •! %<'$,'5<01$10'7$405$&'.A$04$B&'6:.+&C$7:&=+>'7$ •! H'I'>5'1$&+19+4>'$94$5'&,7$0=$94>91'45$I:*$ 7:><$+7$-0.A6047D$@:5$>0:.1$'E:+..A$F'..$+--.A$ 50$=&+>5+.$5A-'$7:&=+>'7G$ •! J:,'&9>+..A$ 3 !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$(#$)*+,-.'$ !"#$%&''$/01'$ KDTree makeKDTree(int n, point_kd p[], int depth) !"#$%&''$(#$)*+,-.'$ !"#$%&''$/01'$/*returns a kd-tree for the n 3-dimensional points in p - assume all indices start from 1*/ { KDTree makeKDTree(int if n==1 return an, leaf point_kd containing p[], int p[1];depth) /*base case*/ /*returns a kd-tree for the n 3-dimensional points in p - assume all indices start from 1*/ { x = median of values of (depth mod 3) coordinate in the points; if n==1 return a leaf containing p[1]; /*base case*/ pLeft is the set of points to the left of x and pRight is the set to the right; x = median of values of (depth mod 3) coordinate in the points; pLeft is the set of leftNode points to the= makeKDTree(n/2,pLeft,depth+1); left of x and pRight is the set to the right; rightNode = makeKDTree(n/2,pRight,depth+1); /*assumes leftNode that = makeKDTree(n/2,pLeft,depth+1); the median splits the points exactly in two*/ !"#$%&''$(#$)*+,-.'$ !"#$%&''$/01'$ rightNode = makeKDTree(n/2,pRight,depth+1); /*assumes that the median splits the points exactly in two*/ /*composeKDTree makeKDTree(int a new node n, point_kd and return*/ p[], int depth) /*returns a kd-treereturn for compose(leftNode,x,rightNode); the n 3-dimensional points in p - assume all indices start from 1*/ /*compose a new node and{ return*/ } return compose(leftNode,x,rightNode); if n==1 return a leaf containing p[1]; /*base case*/ x = median} of values of (depth mod 3) coordinate in the points; pLeft is the set of points to the left of x and pRight is the set to the right; leftNode = makeKDTree(n/2,pLeft,depth+1); rightNode = makeKDTree(n/2,pRight,depth+1); /*assumes that the median splits the points exactly in two*/ /*compose a new node and return*/ return compose(leftNode,x,rightNode); } !"#$%&''$213+45+6'7$!"#$%&''$213+45+6'7$ H'I'>5'1$H+19+4>'$H'I'>5'1$H+19+4>'$Photon Mapping •! 87946$+$!"#$5&''$70.:;04$10'7$405$1'-'41$04$•! 87946$+$!"#$5&''$70.:;04$10'7$405$1'-'41$04$ ••!! H'>+..$5<'$&'I'>5'1$&+19+4>'$'E:+;04$H'>+..$5<'$&'I'>5'1$&+19+4>'$'E:+;04$ !"#$%&''$213+45+6'7$ H'I'>5'1$H+19+4>'$ 2 5<'$ -&0391946$5<'$ -&0391946$ +$ ,'7<$ +$ ,'7<$ 04$ 5<'$ 04$ 5<'$ 7:&=+>'7$ 7:&=+>'7$ ?$ ?$ 5<'$ 5<'$ !A = !!r A = !r2 1975&9@:;04$ 0=$ 5<'$ -<05047$ 97$ ,+945+94'1$ 1975&9@:;04$ 0=$ 5<'$ -<05047$•! 87946$+$!"#$5&''$70.:;04$10'7$405$1'-'41$04$ 97$ ,+945+94'1$ •! /043'&5$94>91'45$&+19+4>'$9450$94>91'45$I:*$•! H'>+..$5<'$&'I'>5'1$&+19+4>'$'E:+;04$ 941'-'41'45.A$ 0=$ 5<'$ &'-&'7'45+;04$5<'$ -&0391946$ +$ 0=$ ,'7<$ 5<'$ 04$ 5<'$ 7:&=+>'7$ ?$ 5<'$•! /043'&5$94>91'45$&+19+4>'$9450$94>91'45$I:*$ !A = !r2 941'-'41'45.A$7:&=+>'7$ 0=$ 5<'$ &'-&'7'45+;04$1975&9@:;04$ 0=$ 0=$ 5<'$ 5<'$ -<05047$ 97$ ,+945+94'1$ 7:&=+>'7$ 941'-'41'45.A$ 0=$ 5<'$ &'-&'7'45+;04$ 0=$ 5<'$ •! /043'&5$94>91'45$&+19+4>'$9450$94>91'45$I:*$ •! %<'$,'5<01$10'7$405$&'.A$04$B&'6:.+&C$7:&=+>'7$7:&=+>'7$ •! H'I'>5'1$&+19+4>'$94$5'&,7$0=$94>91'45$I:*$ •! •! %<'$,'5<01$10'7$405$&'.A$04$B&'6:.+&C$7:&=+>'7$7:><$+7$-0.A6047D$@:5$>0:.1$'E:+..A$F'..$+--.A$•! %<'$,'5<01$10'7$405$&'.A$04$B&'6:.+&C$7:&=+>'7$ H'I'>5'1$&+19+4>'$94$5'&,7$0=$94>91'45$I:*$•! H'I'>5'1$&+19+4>'$94$5'&,7$0=$94>91'45$I:*$ 7:><$+7$-0.A6047D$@:5$>0:.1$'E:+..A$F'..$+--.A$50$=&+>5+.$5A-'$7:&=+>'7G$ 7:><$+7$-0.A6047D$@:5$>0:.1$'E:+..A$F'..$+--.A$ 50$=&+>5+.$5A-'$7:&=+>'7G$ •! J:,'&9>+..A$ 50$=&+>5+.$5A-'$7:&=+>'7G$ •! J:,'&9>+..A$ •! J:,'&9>+..A$ 3 3 3 Photon Mapping !"#$%&'($)*"+"',-$ B/>+14/'0$ •! !"#$./0$/,$+*1$2/,3$4&2/5,$!-$ •! 9""$;1#$7*"+"',$<&5,1$.>544($ •! 6&401$1'"50*$+*&+$+*1$2/,3$!"#$%&'($)*"+"',-$ B/>+14/'0$41,5>+,$ ,544"5'2,$+*1$"$'1&41,+$ •! C/:7>1$&D14&0/'0$74"25<1,$&$."E$ 7*"+"',8$ •! !"#$./0$/,$+*1$2/,3$4&2/5,$!-$ A&2/&'<1$1,=:&+1$5,/'0$?@$7*"+"',$ •! 9""$;1#$7*"+"',$<&5,1$.>544($F>+14/'0$";$7*"+"',$ •! 9*1$'5:.14$";$7*"+"',$5,12$;"4$•! 6&401$1'"50*$+*&+$+*1$2/,3$ 41,5>+,$•! )*"+"',$'1&414$+"$+*1$,&:7>1$ &$4&2/&'<1$1,=:&+1$,544"5'2,$+*1$"$/,$5,5&>>($"$'1&41,+$ •! C/:7>1$&D14&0/'0$74"25<1,$&$."E$ 7*"+"',8$ .1+#11'$?@$&'2$?@@8$ A&2/&'<1$1,=:&+1$5,/'0$?@$7*"+"',$ F>+14/'0$";$7*"+"',$,*"5>2$.1$#1/0*+12$:"41$*1&D/>($ •! 9*1$'5:.14$";$7*"+"',$5,12$;"4$ •! )*"+"',$'1&414$+"$+*1$,&:7>1$ &$4&2/&'<1$1,=:&+1$"$/,$5,5&>>($ •! A1,5>+,$/'$&$<"'1$F>+14/'0$";$ .1+#11'$?@$&'2$?@@8$ ,*"5>2$.1$#1/0*+12$:"41$*1&D/>($7*"+"',$ •! A1,5>+,$/'$&$<"'1$F>+14/'0$";$ 7*"+"',$ A = r2 A&2/&'<1$1,=:&+1$5,/'0$?@@$ ! ! !A = !r2 A&2/&'<1$1,=:&+1$5,/'0$?@@$ 7*"+"',$7*"+"',$ %5>=7>1$)*"+"'$%&7,$ A1'214/'0$ •! G>".&>$6HCIJKLJ$7*"+"'$:&7$ •! A1'21412$.($0>",,(Q,54;&<1$ %5>=7>1$)*"+"'$%&7,$ 2/,+4/.5+12$4&($+4&1N1K$ ,54;&<1S$ •! G>".&>$6HCIJKLJ$7*"+"'$:&7$ –! P":75+1$2/41<+$/>>5:/'&="'$•! A1'21412$.($0>",,(Q,54;&<1$ –! )*"+"',$2"'O+$,=<3$+"$,71<5>&4$ Caustic map Global map –! P":75+1$41T1<+12$4&2/&'<1$2/,+4/.5+12$4&($+4&".&>$ )*"+"'$,=<3,$+"$2/M5,1$,54;&<1$,54;&<1,$ photons photons ";$<&5,=<$:&7$7*"+"',$• –! U0'"41$0>".&>$:&7$7*"+"',$! R*1'$4&($*/+,$F4,+$2/M5,1$A1+54'$4&2/&'<1$";$<&5,=<$ :&7$ #"$$."5'<1,$+"$'1E+$,54;&<1$H/;$•! P&5,=<$6CCLJ$7*"+"'$:&7$ :&7$7*"+"',$*141Y$.5+$ –! U:7"4+&'<1$,&:7>1$VAJB$,54;&<1S$ % $ 7*"+"',$+"$ /+$,54D/D1,$A5,,/&'$4"5>1N1K$–! !/0*$41,">5="'$ ! /0'"41$0>".&>$:&7$7*"+"',$ 41+54'$ &,$5,5&>–! &P":75+1$2/41<+$/>>5:/'&="'$ –! 4&2/&'<1$ –! )*"+"',$2"'O+$,=<3$+"$6/0*+$,"54<1$5,5&>>($1:/+,$,71<5>&4$ Caustic map Global map –! W,1$0>".&>$7*"+"'$:&7$+"$ #*1'$ 7*"+"',$"'>($/'$2/41<="',$+*&+$ /:7"4+&'<1$,&:7>1$/'5&='0$ W,1$0>".&>$ */+$+*1$+*/'0$<41&='0$+*1$<&5,=<$ 4&2/&'<1$;5'<="'$";$<&5,=<$:&7$7*"+"',$'(& 6/$&+$F4,+$ A1+54'$4&2/&'<1$";$<&5,=<$ :&7$ –! XD&>5&+1$41T1<+&'<1$/'+104&>$–! U0'"41$0>".&>$:&7$7*"+"',$ 2/M5,1$ •! P&5,=<$6CCLJ$7*"+"'$:&7$ .($<&,='0$4&(,$&'2$ /'+14,1<="':&7$7*"+"',$*141Y$.5+$ 7*"+"',$+"$ &<<5:5>&='0$4&2/&'<1,$;4":$–! U:7"4+&'<1$,&:7>1$VAJB$%!$ /0'"41$0>".&>$:&7$7*"+"',$8$ 41+54'$ –! !/0*$41,">5="'$ 0>".&>$7*"+"'$:&7$ &,$5,5&>& 4&2/&'<1$ –! 6/0*+$,"54<1$5,5&>>($1:/+,$ –! W,1$0>".&>$7*"+"'$:&7$+"$ #*1'$ 7*"+"',$"'>($/'$2/41<="',$+*&+$ /:7"4+&'<1$,&:7>1$/'5&='0$ */+$+*1$+*/'0$<41&='0$+*1$<&5,=<$ 4&2/&'<1$;5'<="'$'(& 6/$&+$F4,+$ –! XD&>5&+1$41T1<+&'<1$/'+104&>$ 2/M5,1$ .($<&,='0$4&(,$&'2$ /'+14,1<="' &<<5:5>&='0$4&2/&'<1,$;4":$ 8$ 0>".&>$7*"+"'$:&7$ www.bennolan.com www.bennolan.com XE&:7>1,$ XE&:7>1,$ www.bennolan.com www.bennolan.com XE&:7>1,$ XE&:7>1,$ J/41<+$U>>5:/'&="'$ G>".&>$)*"+"'$%&7$ 4 J/41<+$U>>5:/'&="'$ G>".&>$)*"+"'$%&7$ 4 Photon Mapping !"#$%&'($)*"+"',-$ B/>+14/'0$ •! !"#$./0$/,$+*1$2/,3$4&2/5,$!-$ •! 9""$;1#$7*"+"',$<&5,1$.>544($ •! 6&401$1'"50*$+*&+$+*1$2/,3$ 41,5>+,$ ,544"5'2,$+*1$"$'1&41,+$ •! C/:7>1$&D14&0/'0$74"25<1,$&$."E$ 7*"+"',8$ A&2/&'<1$1,=:&+1$5,/'0$?@$7*"+"',$ F>+14/'0$";$7*"+"',$ •! 9*1$'5:.14$";$7*"+"',$5,12$;"4$ •! )*"+"',$'1&414$+"$+*1$,&:7>1$ &$4&2/&'<1$1,=:&+1$"$/,$5,5&>>($ .1+#11'$?@$&'2$?@@8$ ,*"5>2$.1$#1/0*+12$:"41$*1&D/>($ •! A1,5>+,$/'$&$<"'1$F>+14/'0$";$ 7*"+"',$ !A = !r2 A&2/&'<1$1,=:&+1$5,/'0$?@@$ 7*"+"',$ %5>=7>1$)*"+"'$%&7,$ A1'214/'0$ •! G>".&>$6HCIJKLJ$7*"+"'$:&7$ •! A1'21412$.($0>",,(Q,54;&<1$ 2/,+4/.5+12$4&($+4&1N1K$ ,54;&<1S$ –! P":75+1$2/41<+$/>>5:/'&="'$ –! )*"+"',$2"'O+$,=<3$+"$,71<5>&4$ Caustic map Global map –! P":75+1$41T1<+12$4&2/&'<1$ ,54;&<1,$ photons photons ";$<&5,=<$:&7$7*"+"',$ B/4,+$2/M5,1$/'+14,1<="'8$ W,1$0>".&>$ –! U0'"41$0>".&>$:&7$7*"+"',$ A1+54'$4&2/&'<1$";$<&5,=<$ :&7$ •! P&5,=<$6CCLJ$7*"+"'$:&7$ :&7$7*"+"',$*141Y$.5+$ –! U:7"4+&'<1$,&:7>1$VAJB$% $ 7*"+"',$+"$ –! !/0*$41,">5="'$ ! /0'"41$0>".&>$:&7$7*"+"',$ 41+54'$ &,$5,5&>& 4&2/&'<1$ –! 6/0*+$,"54<1$5,5&>>($1:/+,$ –! W,1$0>".&>$7*"+"'$:&7$+"$ #*1'$ 7*"+"',$"'>($/'$2/41<="',$+*&+$ /:7"4+&'<1$,&:7>1$/'5&='0$ */+$+*1$+*/'0$<41&='0$+*1$<&5,=<$ 4&2/&'<1$;5'<="'$'(& 6/$&+$F4,+$ –! XD&>5&+1$41T1<+&'<1$/'+104&>$ 2/M5,1$ .($<&,='0$4&(,$&'2$ /'+14,1<="' &<<5:5>&='0$4&2/&'<1,$;4":$ 8$ 0>".&>$7*"+"'$:&7$ www.bennolan.com www.bennolan.com XE&:7>1,$ XE&:7>1,$ J/41<+$U>>5:/'&="'$ G>".&>$)*"+"'$%&7$ 4 !"#$%&'($)*"+"',-$!"#$%&'($)*"+"',-$ B/>+14/'0$B/>+14/'0$ •! !"#$./0$/,$+*1$2/,3$4&2/5,$•! !"#$./0$/,$+*1$2/,3$4&2/5,$!!-$-$ •! 9""$;1#$7*"+"',$<&5,1$.>544($•! 9""$;1#$7*"+"',$<&5,1$.>544($ •! 6&401$1'"50*$+*&+$+*1$2/,3$•! 6&401$1'"50*$+*&+$+*1$2/,3$ 41,5>+,$ 41,5>+,$ ,544"5'2,$+*1$,544"5'2,$+*1$"$'1&41,+$"$'1&41,+$ •! C/:7>1$&D14&0/'0$74"25<1,$&$."E$•! C/:7>1$&D14&0/'0$74"25<1,$&$."E$ 7*"+"',8$7*"+"',8$ A&2/&'<1$1,=:&+1$5,/'0$?@$7*"+"',$A&2/&'<1$1,=:&+1$5,/'0$?@$7*"+"',$ F>+14/'0$";$7*"+"',$F>+14/'0$";$7*"+"',$ • •! 9*1$'5:.14$";$7*"+"',$5,12$;"4$! 9*1$'5:.14$";$7*"+"',$5,12$;"4$ •! )*"+"',$'1&414$+"$+*1$,&:7>1$•! )*"+"',$'1&414$+"$+*1$,&:7>1$ &$4&2/&'<1$1,=:&+1$&$4&2/&'<1$1,=:&+1$"$/,$5,5&>>($"$/,$5,5&>>($ .1+#11'$?@$&'2$?@@8$ ,*"5>2$.1$#1/0*+12$:"41$*1&D/>($,*"5>2$.1$#1/0*+12$:"41$*1&D/>($ .1+#11'$?@$&'2$?@@8$ •! A1,5>+,$/'$&$<"'1$F>+14/'0$";$ 7*"+"',$•! A1,5>+,$/'$&$<"'1$F>+14/'0$";$ 7*"+"',$ !A = !r2 A&2/&'<1$1,=:&+1$5,/'0$?@@$ 7*"+"',$ !A = !r2 A&2/&'<1$1,=:&+1$5,/'0$?@@$ 7*"+"',$ Photon Mapping %5>=7>1$)*"+"'$%&7,$ A1'214/'0$ •! G>".&>$6HCIJKLJ$7*"+"'$:&7$ •! A1'21412$.($0>",,(Q,54;&<1$ 2/,+4/.5+12$4&($+4&=7>1$)*"+"'$%&7,$–! )*"+"'$,=<3,$+"$2/M5,1$,54;&<1$ A1'214/'0$ #"$$."5'<1,$+"$'1E+$,54;&<1$H/;$ •! R*1'$4&($*/+,$F4,+$2/M5,1$ /+$,54D/D1,$A5,,/&'$4"5>1N1K$ ,54;&<1S$ •! G>".&>$6HCIJKLJ$7*"+"'$:&7$ –! P":75+1$2/41<+$/>>5:/'&="'$•! A1'21412$.($0>",,(Q,54;&<1$ –! )*"+"',$2"'O+$,=<3$+"$,71<5>&4$ Caustic map Global map –! P":75+1$41T1<+12$4&2/&'<1$2/,+4/.5+12$4&($+4&".&>$ ,54;&<1,$ photons photons ";$<&5,=<$:&7$7*"+"',$•! R*1'$4&($*/+,$F4,+$2/M5,1$ #"$$."5'<1,$+"$'1E+$,54;&<1$H/;$ –! U0'"41$0>".&>$:&7$7*"+"',$ A1+54'$4&2/&'<1$";$<&5,=<$ :&7$ •! P&5,=<$6CCLJ$7*"+"'$:&7$ ,54;&<1S$ :&7$7*"+"',$*141Y$.5+$ 7*"+"',$+"$ /+$,54D/D1,$A5,,/&'$4"5>1N1K$ –! U:7"4+&'<1$,&:7>1$VAJB$%!$ –! !/0*$41,">5="'$ &,$5,5&>–! P":75+1$2/41<+$/>>5:/'&="'$/0'"41$0>".&>$:&7$7*"+"',$ 41+54'$ –! )*"+"',$2"'O+$,=<3$+"$,71<5>&4$ & 4&2/&'<1$ –! 6/0*+$,"54<1$5,5&>>($1:/+,$ Caustic map Global map –! W,1$0>".&>$7*"+"'$:&7$+"$–! P":75+1$41T1<+12$4&2/&'<1$ #*1'$ ,54;&<1,$7*"+"',$"'>($/'$2/41<="',$+*&+$ photons photons /:7"4+&'<1$,&:7>1$/'5&='0$ W,1$0>".&>$ 4&2/&'<1$;5'<="'$' */+$+*1$+*/'0$<41&='0$+*1$<&5,=<$ –! U0'"41$0>".&>$:&7$7*"+"',$(& A1+54'$4&2/&'<1$";$<&5,=<$6/$&+$F4,+$ :&7$ •! P&5,=<$6CCLJ$7*"+"'$:&7$ –! XD&>5&+1$41T1<+&'<1$/'+104&>$ :&7$7*"+"',$*141Y$.5+$2/M5,1$ 7*"+"',$+"$ –! U:7"4+&'<1$,&:7>1$VAJB$% $ –! !/0*$41,">5="'$ .($<&,='0$4&(,$&'2$ ! /0'"41$0>".&>$:&7$7*"+"',$/'+14,1<="' 41+54'$ &<<5:5>&='0$4&2/&'<1,$;4":$&,$5,5&>& 8$ 0>".&>$7*"+"'$:&7$ 4&2/&'<1$ –! 6/0*+$,"54<1$5,5&>>($1:/+,$ –! W,1$0>".&>$7*"+"'$:&7$+"$ #*1'$ 7*"+"',$"'>($/'$2/41<="',$+*&+$ /:7"4+&'<1$,&:7>1$/'5&='0$ */+$+*1$+*/'0$<41&='0$+*1$<&5,=<$ 4&2/&'<1$;5'<="'$'(& 6/$&+$F4,+$ –! XD&>5&+1$41T1<+&'<1$/'+104&>$ 2/M5,1$ .($<&,='0$4&(,$&'2$ /'+14,1<="' &<<5:5>&='0$4&2/&'<1,$;4":$ 8$ 0>".&>$7*"+"'$:&7$ www.bennolan.com www.bennolan.com XE&:7>1,$ XE&:7>1,$ www.bennolan.com www.bennolan.com XE&:7>1,$ XE&:7>1,$ J/41<+$U>>5:/'&="'$ G>".&>$)*"+"'$%&7$ 4 J/41<+$U>>5:/'&="'$ G>".&>$)*"+"'$%&7$ 4 !"#$%&'($)*"+"',-$ B/>+14/'0$ •! !"#$./0$/,$+*1$2/,3$4&2/5,$!-$ •! 9""$;1#$7*"+"',$<&5,1$.>544($ •! 6&401$1'"50*$+*&+$+*1$2/,3$!"#$%&'($)*"+"',-$ 41,5>+,$ B/>+14/'0$ ,544"5'2,$+*1$"$'1&41,+$ •! C/:7>1$&D14&0/'0$74"25<1,$&$."E$ 7*"+"',8$ •! !"#$./0$/,$+*1$2/,3$4&2/5,$A&2/&'<1$1,=:&+1$5,/'0$?@$7*"+"',$!-$ F>+14/'0$";$7*"+"',$•! 9""$;1#$7*"+"',$<&5,1$.>544($ •! 9*1$'5:.14$";$7*"+"',$5,12$;"4$•! 6&401$1'"50*$+*&+$+*1$2/,3$ • 41,5>+,$ ,544"5'2,$+*1$"$'1&41,+$ ! )*"+"',$'1&414$+"$+*1$,&:7>1$ &$4&2/&'<1$1,=:&+1$"$/,$5,5&>>($ ,*"5>2$.1$#1/0*+12$:"41$*1&D/>($•! C/:7>1$&D14&0/'0$74"25<1,$&$."E$ .1+#11'$?@$&'2$?@@8$7*"+"',8$ A&2/&'<1$1,=:&+1$5,/'0$?@$7*"+"',$ F>+14/'0$";$7*"+"',$ •! A1,5>+,$/'$&$<"'1$F>+14/'0$";$ •! 9*1$'5:.14$";$7*"+"',$5,12$;"4$ •! )*"+"',$'1&414$+"$+*1$,&:7>1$ &$4&2/&'<1$1,=:&+1$"$/,$5,5&>>($ 7*"+"',$ .1+#11'$?@$&'2$?@@8$ ,*"5>2$.1$#1/0*+12$:"41$*1&D/>($ •! A1,5>+,$/'$&$<"'1$F>+14/'0$";$ 7*"+"',$ !A = !r2 A&2/&'<1$1,=:&+1$5,/'0$?@@$ 7*"+"',$ !A = !r2 A&2/&'<1$1,=:&+1$5,/'0$?@@$ 7*"+"',$ Photon Mapping %5>=7>1$)*"+"'$%&7,$ A1'214/'0$ %5>=7>1$)*"+"'$%&7,$ A1'214/'0$ •! G>".&>$6HCIJKLJ$7*"+"'$:&7$ •! A1'21412$.($0>",,(Q,54;&<1$ 2/,+4/.5+12$4&($+4&".&>$6HCIJKLJ$7*"+"'$:&7$ •! A1'21412$.($0>",,(Q,54;&<1$ •! R*1'$4&($*/+,$F4,+$2/M5,1$2/,+4/.5+12$4&($+4&1N1K$ ,54;&<1S$ •! R*1'$4&($*/+,$F4,+$2/M5,1$ #"$$."5'<1,$+"$'1E+$,54;&<1$H/;$ –! P":75+1$2/41<+$/>>5:/'&="'$ – /+$,54D/D1,$A5,,/&'$4"5>1N1K$ ,54;&<1S$ ! )*"+"',$2"'O+$,=<3$+"$,71<5>&4$ Caustic map Global map –! P":75+1$41T1<+12$4&2/&'<1$–! P":75+1$2/41<+$/>>5:/'&="'$ B/4,+$2/M5,1$/'+14,1<="'8$ W,1$0>".&>$ ,54;&<1,$ –! )*"+"',$2"'O+$,=<3$+"$photons ,71<5>&4photons$ Caustic map Global map ";$<&5,=<$:&7$7*"+"',$–! P":75+1$41T1<+12$4&2/&'<1$ ,54;&<1,$ photons photons –! U0'"41$0>".&>$:&7$7*"+"',$";$<&5,=<$:&7$7*"+"',$A1+54'$4&2/&'<1$";$<&5,=<$B/4,+$2/M5,1$/'+14,1<="'8$:&7$ W,1$0>".&>$ •! P&5,=<$6CCLJ$7*"+"'$:&7$ :&7$7*"+"',$*141Y$.5+$ –! U:7"4+&'<1$,&:7>1$VAJB$–! U0'"41$0>".&>$:&7$7*"+"',$% $ A1+54'$4&2/&'<1$";$<&5,=<$7*"+"',$+"$ :&7$ – •! P&5,=<$6CCLJ$7*"+"'$:&7$ ! /0'"41$0>".&>$:&7$7*"+"',$:&7$7*"+"',$*141Y$.5+$41+54'$ 7*"+"',$+"$ ! !/0*$41,">5="'$ &,$5,5&> –! U:7"4+&'<1$,&:7>1$VAJB$% $ –! !/0*$41,">5="'$ & ! /0'"41$0>".&>$:&7$7*"+"',$4&2/&'<1$ 41+54'$ –! 6/0*+$,"54<1$5,5&>>($1:/+,$ –! W,1$0>".&>$7*"+"'$:&7$+"$&,$5,5&>& – #*1'$ 4&2/&'<1$ 7*"+"',$"'>($/'$2/41<="',$+*&+$! 6/0*+$,"54<1$5,5&>>($1:/+,$ /:7"4+&'<1$,&:7>1$/'".&>$7*"+"'$:&7$+"$ 1D&>5&='0$ #*1'$ 7*"+"',$"'>($/'$2/41<="',$+*&+$ 4&2/&'<1$;5'<="'$/:7"4+&'<1$,&:7>1$/'5&='0$ */+$+*1$+*/'0$<41&='0$+*1$<&5,=<$ 4&2/&'<1$;5'<="'$(& ' 6/$&+$F4,+$ */+$+*1$+*/'0$<41&='0$+*1$<&5,=<$ –! XD&>5&+1$41T1<+&'<1$/'+104&>$ (& 2/M5,1$ 6/$&+$F4,+$ .($<&,='0$4&(,$&'2$–! XD&>5&+1$41T1<+&'<1$/'+104&>$ /'+14,1<="' 2/M5,1$ &<<5:5>&='0$4&2/&'<1,$;4":$.($<&,='0$4&(,$&'2$ 8$ /'+14,1<="' &<<5:5>&='0$4&2/&'<1,$;4":$ 8$ 0>".&>$7*"+"'$:&7$0>".&>$7*"+"'$:&7$ www.bennolan.comwww.bennolan.com www.bennolan.comwww.bennolan.com XE&:7>1,$ XE&:7>1,$ XE&:7>1,$XE&:7>1,$ J/41<+$U>>5:/'&="'$ G>".&>$)*"+"'$%&7$ J/41<+$U>>5:/'&="'$ G>".&>$)*"+"'$%&7$ 4 4 !"#$%&'($)*"+"',-$ B/>+14/'0$ !"#$%&'($)*"+"',-$ B/>+14/'0$ •! !"#$./0$/,$+*1$2/,3$4&2/5,$!-$ •! 9""$;1#$7*"+"',$<&5,1$.>544($ •! !"#$./0$/,$+*1$2/,3$4&2/5,$!-$ •! 6&401$1'"50*$+*&+$+*1$2/,3$ •! 9""$;1#$7*"+"',$<&5,1$.>544($ 41,5>+,$ •! 6&401$1'"50*$+*&+$+*1$2/,3$ ,544"5'2,$+*1$"$'1&41,+$ 41,5>+,$ •! C/:7>1$&D14&0/'0$74"25<1,$&$."E$ 7*"+"',8$ ,544"5'2,$+*1$"$'1&41,+$ A&2/&'<1$1,=:&+1$5,/'0$?@$7*"+"',$•! C/:7>1$&D14&0/'0$74"25<1,$&$."E$F>+14/'0$";$7*"+"',$ 7*"+"',8$ •! 9*1$'5:.14$";$7*"+"',$5,12$;"4$A&2/&'<1$1,=:&+1$5,/'0$?@$7*"+"',$ F>+14/'0$";$7*"+"',$ •! )*"+"',$'1&414$+"$+*1$,&:7>1$ &$4&2/&'<1$1,=:&+1$"$/,$5,5&>>($ •! 9*1$'5:.14$";$7*"+"',$5,12$;"4$ •! )*"+"',$'1&414$+"$+*1$,&:7>1$ ,*"5>2$.1$#1/0*+12$:"41$*1&D/>($ &$4&2/&'<1$1,=:&+1$"$/,$5,5&>>($ .1+#11'$?@$&'2$?@@8$ .1+#11'$?@$&'2$?@@8$ ,*"5>2$.1$#1/0*+12$:"41$*1&D/>($•! A1,5>+,$/'$&$<"'1$F>+14/'0$";$ •! A1,5>+,$/'$&$<"'1$F>+14/'0$";$ 7*"+"',$ 7*"+"',$ !A = !r2 A&2/&'<1$1,=:&+1$5,/'0$?@@$ !A = !r2 A&2/&'<1$1,=:&+1$5,/'0$?@@$ 7*"+"',$ 7*"+"',$ %5>=7>1$)*"+"'$%&7,$%5>=7>1$)*"+"'$%&7,$ A1'214/'0$ A1'214/'0$ •! G>".&>$6HCIJKLJ$7*"+"'$:&7$ •! A1'21412$.($0>",,(Q,54;&<1$ •! G>".&>$6HCIJKLJ$7*"+"'$:&7$ •! A1'21412$.($0>",,(Q,54;&<1$ 2/,+4/.5+12$4&($+4&1N1K$ ,54;&<1S$ /+$,54D/D1,$A5,,/&'$4"5>1N1K$ ,54;&<1S$ –! P":75+1$2/41<+$/>>5:/'&="'$ –! )*"+"',$2"'O+$,=<3$+"$,71<5>&4$ –! P":75+1$2/41<+$/>>5:/'&="'$ –! )*"+"',$2"'O+$,=<3$+"$,71<5>&4$ Caustic map Global map –! P":75+1$41T1<+12$4&2/&'<1$ ,54;&<1,$Caustic map Global map photons –!photonsP":75+1$41T1<+12$4&2/&'<1$ ";$<&5,=<$:&7$7*"+"',$ B/4,+$2/M5,1$/'+14,1<="'8$ W,1$0>".&>$ ,54;&<1,$ photons photons ";$<&5,=<$:&7$7*"+"',$ B/4,+$2/M5,1$/'+14,1<="'8$ W,1$0>".&>$ A1+54'$4&2/&'<1$";$<&5,=<$ :&7$ –A1+54'$4&2/&'<1$";$<&5,=<$! U0'"41$0>".&>$:&7$7*"+"',$ •! P&5,=<$6CCLJ$7*"+"'$:&7$ –! U0'"41$0>".&>$:&7$7*"+"',$ :&7$ :&7$7*"+"',$*141Y$.5+$ 7*"+"',$+"$ •! P&5,=<$6CCLJ$7*"+"'$:&7$ :&7$7*"+"',$*141Y$.5+$ 7*"+"',$+"$ –! U:7"4+&'<1$,&:7>1$VAJB$%!$ /0'"41$0>".&>$:&7$7*"+"',$ 41+54'$ –! !/0*$41,">5="'$ –! U:7"4+&'<1$,&:7>1$VAJB$%!$ /0'"41$0>".&>$:&7$7*"+"',$ 41+54'$ –! !/0*$41,">5="'$ &,$5,5&>& 4&2/&'<1$ &,$5,5&>& 4&2/&'<1$ –! 6/0*+$,"54<1$5,5&>>($1:/+,$ –! W,1$0>".&>$7*"+"'$:&7$+"$ #*1'$ –! 6/0*+$,"54<1$5,5&>>($1:/+,$ –! W,1$0>".&>$7*"+"'$:&7$+"$ #*1'$ 7*"+"',$"'>($/'$2/41<="',$+*&+$ /:7"4+&'<1$,&:7>1$/'5&='0$ 7*"+"',$"'>($/'$2/41<="',$+*&+$ /:7"4+&'<1$,&:7>1$/'5&='0$ */+$+*1$+*/'0$<41&='0$+*1$<&5,=<$ 4&2/&'<1$;5'<="'$'(& 6/$&+$F4,+$ */+$+*1$+*/'0$<41&='0$+*1$<&5,=<$ 4&2/&'<1$;5'<="'$'(& 6/$&+$F4,+$ –! XD&>5&+1$41T1<+&'<1$/'+104&>$ 2/M5,1$ –! XD&>5&+1$41T1<+&'<1$/'+104&>$ 2/M5,1$ .($<&,='0$4&(,$&'2$ /'+14,1<="' .($<&,='0$4&(,$&'2$ /'+14,1<="' &<<5:5>&='0$4&2/&'<1,$;4":$ 8$ &<<5:5>&='0$4&2/&'<1,$;4":$ 8$ 0>".&>$7*"+"'$:&7$ 0>".&>$7*"+"'$:&7$ Photon Mapping www.bennolan.com www.bennolan.com www.bennolan.com www.bennolan.com XE&:7>1,$ XE&:7>1,$ XE&:7>1,$ XE&:7>1,$ J/41<+$U>>5:/'&="'$ J/41<+$U>>5:/'&="'$ G>".&>$)*"+"'$%&7$ G>".&>$)*"+"'$%&7$ 4 4 www.bennolan.com www.bennolan.com www.bennolan.com www.bennolan.com !"#$%&'() !"#$%&'() !"#$%&'() !"#$%&'() *+,-.'/0)*&&1$-+#23+) *+,-.'/0)*&&1$-+#23+) 4-+#&)5'+,'.-+6) 4-+#&)5'+,'.-+6) Photon Mapping 78303+)9#%)!"#$%&') 78303+)9#%)!"#$%&') 78303+)9#%)!"#$%&') 78303+)9#%)!"#$%&') http://www.vrayrender.com/stuff/PMapTutorial/http://www.vrayrender.com/stuff/PMapTutorial/ http://www.vrayrender.com/stuff/PMapTutorial/ http://www.vrayrender.com/stuff/PMapTutorial/ 78303+)9#%%-+6) 78303+)9#%%-+6) •! :+')3;)08').'/'+0)3;)08')'(0#<&-(8',)6&3<#&)-&&1$-+#23+) (3&123+() •! :+')3;)08').'/'+0)3;)08')'(0#<&-(8',)6&3<#&)-&&1$-+#23+) (3&123+() •! =#()#)%.'>.'+,'.-+6)%8#(')03)'(2$#0')6&3<#&)-&&1$-+#23+) •! =#()#)%.'>.'+,'.-+6)%8#(')03)'(2$#0')6&3<#&)-&&1$-+#23+) •! ?)%#08)0.#/-+6)%8#(');3.)08')@+#&).'+,'.-+6)A@+#&) 6#08'.-+6B) •! ?)%#08)0.#/-+6)%8#(');3.)08')@+#&).'+,'.-+6)A@+#&) 6#08'.-+6B) •! *0)-()(-6+-@/#+0&C);#(0'.)08#+)%#08)0.#/-+6)A$-+10'() /3$%#.',)03)831.(BD)#+,)08')%.'>.'+,'.-+6)%8#(')3+&C)8#()•! *0)-()(-6+-@/#+0&C);#(0'.)08#+)%#08)0.#/-+6)A$-+10'() 03)<'),3+')3+/'E) /3$%#.',)03)831.(BD)#+,)08')%.'>.'+,'.-+6)%8#(')3+&C)8#() 03)<'),3+')3+/'E) •! 93(0)2$')63'()-+03)08')@+#&).'+,'.-+6)%8#('D)#+,)-+) %#.2/1.)-+)'(2$#2+6)08').#,-#+/');.3$)+'#. 5 5 Photon Mapping More Information Henrik Wann Jensen Jensen Henrik Wann Jensen Realistic Image Synthesis Using Photon Realistic Image Synthesis Using Photon Mapping Realistic Image Mapping Synthesis Foreword by Pat Hanrahan Using Photon The creation of realistic three-dimensional images is central to computer graphics. Photon mapping, an extension of ray tracing, makes it possible to efficiently simulate global illumination in Mapping complex scenes. Photo mapping can simulate caustics (focused light, such as shimmering waves at the bottom of a swimming pool), diffuse inter-reflections (e.g., the `bleeding' of colored light from a red wall onto a white floor, giving the floor a reddish tint), and participating media (e.g., clouds or smoke). This book is a practical guide to photon mapping; it provides both the theory and the practical insight necessary to implement photon mapping and simulate all types of direct and indirect illumination efficiently. A K Foreword by Pat Hanrahan A K PETERS LTD. PETERS http://graphics.stanford.edu/˜henrik [email protected]