Radiative Transfer & Volume Path Tracing
CS295, Spring 2017 Shuang Zhao
Computer Science Department University of California, Irvine
CS295, Spring 2017 Shuang Zhao 1
Radiative Transfer & Volume Path Tracing CS295, Spring 2017 - - PowerPoint PPT Presentation
Radiative Transfer & Volume Path Tracing CS295, Spring 2017 Shuang Zhao Computer Science Department University of California, Irvine CS295, Spring 2017 Shuang Zhao 1 Last Lecture Refraction & BSDFs How light interacts with
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
[Kutz et al. 2017]
CS295, Spring 2017 Shuang Zhao 6
[Gkioulekas et al. 2013]
CS295, Spring 2017 Shuang Zhao 7
CS295, Spring 2017 Shuang Zhao 8
Scattered
CS295, Spring 2017 Shuang Zhao 9
CS295, Spring 2017 Shuang Zhao 10
CS295, Spring 2017 Shuang Zhao 11
In-scattering Out-scattering & absorption Emission
CS295, Spring 2017 Shuang Zhao 12
In-scattering Out-scattering & absorption Emission
given x and ωi
CS295, Spring 2017 Shuang Zhao 13
In-scattering Out-scattering & absorption Emission
CS295, Spring 2017 Shuang Zhao 14
In-scattering Out-scattering & absorption Emission
CS295, Spring 2017 Shuang Zhao 15
In-scattering Out-scattering & absorption Emission
methods
CS295, Spring 2017 Shuang Zhao 16
CS295, Spring 2017 Shuang Zhao 17
,
CS295, Spring 2017 Shuang Zhao 18
CS295, Spring 2017 Shuang Zhao 19
In-scattering Emission Attenuation Attenuation Boundary cond. (The second term vanishes when ) where
CS295, Spring 2017 Shuang Zhao 20
where
Kernel function Source function
CS295, Spring 2017 Shuang Zhao 21
CS295, Spring 2017 Shuang Zhao 22
CS295, Spring 2017 Shuang Zhao 23
CS295, Spring 2017 Shuang Zhao 24
Known where
CS295, Spring 2017 Shuang Zhao 25
CS295, Spring 2017 Shuang Zhao 26
CS295, Spring 2017 Shuang Zhao 27
where
, return
CS295, Spring 2017 Shuang Zhao 28
is usually a valid probability density on ωi, yielding
CS295, Spring 2017 Shuang Zhao 29
radiance(x, ω): compute h = h(x, ω) # using ray tracing draw τ if τ < h: r = x – τ*ω draw ωi return σs(r)/σt(r)*radiance(r, ωi) + Q(r, ω)/σt(r) else: return boundaryRadiance(x – h*ω, ω)
CS295, Spring 2017 Shuang Zhao 30
How to implement this?
CS295, Spring 2017 Shuang Zhao 31
CS295, Spring 2017 Shuang Zhao 32
increasing with some fixed step size until reaches ξ
underlying representation of σt(x) (e.g., voxel size)
CS295, Spring 2017 Shuang Zhao 33
density (σt) field
CS295, Spring 2017 Shuang Zhao 34
, and use it to draw free distances
introduced, the sampling process continues with probability at each ri
CS295, Spring 2017 Shuang Zhao 35
deltaTracking(x, ω, σt
max)
compute h using ray tracing τ = 0 while τ < h: τ += -log(rand())/σt
max
r = x - τ*ω if rand() < σt(r)/σt
max:
break return τ
CS295, Spring 2017 Shuang Zhao 36
(i.e., σt
max >> σt(x) for many x)
CS295, Spring 2017 Shuang Zhao 37
radiance(x, ω): compute h = h(x, ω) draw τ if τ < h: r = x – τ*ω draw ωi return σs(r)/σt(r)*radiance(r, ωi) + Q(r, ω)/σt(r) else: return boundaryRadiance(x – h*ω, ω)
CS295, Spring 2017 Shuang Zhao 38
This basic version can be improved using techniques we have seen earlier:
CS295, Spring 2017 Shuang Zhao 39
where
CS295, Spring 2017 Shuang Zhao 40
Estimate recursively by drawing ωi based on fp “indirect illumination” Estimate directly by area sampling or MIS “direct illumination”
scatteredRadiance(x, ω): compute h = h(x, ω) # using ray tracing draw τ if τ < h: r = x – τ*ω rad = directIllumination(r, ω) draw ωi rad += scatteredRadiance(r, ωi) return σs(r)/σt(r)*rad else: return 0
CS295, Spring 2017 Shuang Zhao 41
where the boundary radiance is non-zero
CS295, Spring 2017 Shuang Zhao 42
Change of measure Boundary radiance
CS295, Spring 2017 Shuang Zhao 43
Draw ωi based on fp Draw y from
CS295, Spring 2017 Shuang Zhao 44