目录
-
- Lecture 15: Ray Tracing 3 (Light Transport & Global Illumination)
- Lecture 16: Ray Tracing 4 (Monte Carlo Path Tracing)
- Lecture 17: Materials and Appearances
- Microfacet BRDF
- Lecture 18: Advanced Topics in Rendering
-
- Biased vs. Unbiased Monte Carlo Estimators
- Bidirectional Path Tracing(BDPT)
- Metropolis Light Transport(MLT)
- Photon Mapping
- Vertex Connection and Merging
- Instant Radiosity(many-light approaches)
- Advanced Appearance Modeling
- participating media 散射介质 云雾渲染
- 毛发渲染
- 颗粒材质
- 半透明 Translucent
- 次表面散射 subsuface scattering
- 布料
- 表面细节
- 程序化生成的表面
Lecture 15: Ray Tracing 3 (Light Transport & Global Illumination)
能量一直在向外辐射,那么场景为什么不是越来越亮
因为物体接收到能量也会反射能量
辐[射]照度 irradiance
辐[射]照度表示单位面积上接受的光线在垂直方向上的辐射能量
E ( x ) ≡ Φ ( x ) d A E(x) \equiv \dfrac{\mathrm \Phi(x)}{\mathrm d A} E(x)≡dAΦ(x)
单位为 W m 2 \dfrac{W}{m^2} m2W 或者 l m m 2 = l u x \dfrac{lm}{m^2} = lux m2lm=lux
这里要求的是光线在垂直方向上的辐射能量,与光栅化中的 Lambert’s Cosine Law 类似
其实为了和之后的公式对比理解的话,我觉得也可以认为统计的这个光线的通量与面积不垂直
只要对这个面积乘一个 cos θ \cos\theta cosθ 就好了
那么就可以写成 E ( x ) ≡ Φ ( x ) d A cos θ E(x) \equiv \dfrac{\mathrm \Phi(x)}{\mathrm d A \cos\theta} E(x)≡dAcosθΦ(x)

当光逐渐向外传播时,变小的是 Irradiance 而不是 Intensity
也就是说,变小的是单位面积上的光通量,而单位立体角上的光通量是不变的
考虑这个单位立体角,在半径比较小的时候,对应的面积也小,在半径比较大的时候,对应的面积也大
Radiance 辐[射]亮度
Radiance 辐[射]亮度 Light Traveling ALong A Ray 单位立体角单位面积内或发射,或反射,或传送,或接受的能量
L ( p , w ) ≡ d 2 Φ ( p , w ) d w d A cos θ L(p,w) \equiv \dfrac{\mathrm d^2 \Phi(p,w)}{\mathrm d w \mathrm d A \cos\theta} L(p,w)≡dwdAcosθd2Φ(p,w)
单位 W s r m 2 \dfrac{W}{sr m^2} srm2W 或 c d m 2 = l m s r m 2 = n i t \dfrac{cd}{m^2} = \dfrac{lm}{sr m^2} = nit m2cd=srm2lm=nit
可以理解为一个单位面向某一个方向发出的能量

这里之所以能这么写,是使用了 E ( x ) ≡ Φ ( x ) d A cos θ E(x) \equiv \dfrac{\mathrm \Phi(x)}{\mathrm d A \cos\theta} E(x)≡dAcosθΦ(x) 的定义,也就是计算 L L L 和 E E E 的时候考虑到面积法向与光线方向不重合
Intensity, Irradiance, Radiance 之间的关系
Intensity 单位立体角所发射的能量
Irradiance 单位面积上接受的光线在垂直方向上的辐射能量
Radiance 单位立体角单位时间内或发射,或反射,或传送,或接受的能量
所以单纯从量纲上看,就有:
Radiance =
单位立体角的 Irradiance
单位面积的 Intensity
怎么理解 Radiance = 单位立体角的 Irradiance
从一个角度看,Radiance 是一个单位面积向某一个方向发出的能量
从另外一个角度看,Radiance 是一个单位面积从某一个方向接受的能量
类似地,Irradiance 也即是单位面积接受的能量,但是 Irradiance 是从各个方向接受的能量,而 Radiance 只是从一个方向
怎么理解 Radiance = 单位面积的 Intensity
感觉这个更好理解了,就是点到面
Radiance 是 Irradiance 微分

在一个半球对 Radiance 在半球上积分,就得到 Irradiance
前面好像也没有说这个 p 是什么?
这么一看的话,感觉应该是位置的意思
BRDF & The Rendering Equation
反射可以理解为从某个方向进来然后反射到某个方向去的能量。可以用 BRDF(反射方程)来描述这个过程。
就考虑某一个微小面积 dA 从某各微小立体角 dw 接收到的 Irradiance,会被如何分配到各个不同的立体角上面去。


更具体地说,我们知道某一个单位面积接收到了多少能量,也就是知道了 E
更进一步,对于反射,对于反射中的入射光,我知道从入射方向 w i w_i wi 上过来了多少能量 d E ( w i ) = L ( w i ) cos θ d w i \mathrm d E(w_i) = L(w_i) \cos\theta \mathrm d w_i dE(wi)=L(wi)cosθdwi
我始终没搞懂这个 PPT 这里为什么要写 d L d E \dfrac{\mathrm d L}{\mathrm d E} dEdL
而不是 L d E \dfrac{L}{\mathrm d E} dEL
分母是 d E \mathrm d E dE 我倒是理解,如果设 E E E 是面积 A 从半球的立体角接收到的能量,那么对立体角微分,就得到面积 A 从某一个立体角接收到的能量
那为什么不直接写成 L L L 呢?因为 Radiance 是单位面积单位立体角嘛
然后 d E = L cos θ d w \mathrm d E = L \cos \theta \mathrm d w dE=Lcosθdw 嘛
其实我写 d E \mathrm d E dE 也相当于在用 L L L 嘛,只是我现在知道这个入射方向 w i w_i wi,那么我把 L L L 与 w i w_i wi 一乘,就是这个方向来的单位面积的能量嘛,然后就是面积法向与方向之间有个角度所以加 cos θ \cos \theta cosθ
但是出去的时候自然就是考虑 L L L 啊,我就不知道为什么他说是 d L \mathrm d L dL
我再看了一下别人的解释
https://zhuanlan.zhihu.com/p/393371982
别人也说是
所以,P 点接受的辐照度和 PO 方向的辐亮度的比值是一个固定值,其只和 P 点表面的属性,入射光线 LP 以及出射光线 PO 相关,和光源 L 或其他的任何值都无关。我们把入射光线 w i w_i wi 记作 ,出射光线记作 w o w_o wo,那么我们把这个反射比率用函数 f ( p , w i , w o ) f(p,w_i,w_o) f(p,wi,wo) 表示。
这个函数即双向反射分布函数,BRDF。
然后别人也指出了一个隐含的条件就是,这个出射的 L L L 中的单位面积就是指的是打到与光路相垂直的单位面积
这就更加让我感觉合理了……因为入射的时候考虑的单位面积是着色点的单位面积,所以有 cos θ \cos \theta cosθ;出射的时候认为计算的单位面积,或者说让别人接受的单位面积是垂直于光路的,所以没有 cos θ \cos \theta cosθ
再看到了
https://www.cnblogs.com/wickedpriest/p/13184433.html
从图中可以看到,所谓的BRDF就是从ωi方向发射一束光,打在平面某一个顶点上,在ωr的方向上的辐射亮度和顶点的辐射强度之比。
其中dL(ωr)是表面反射到ωr方向的反射光的微分辐射亮度,表面反射到ωr的反射光的辐射亮度为L(ωr),来自于表面上半球所有方向入射光的贡献,用dL(ωr)是为了特指来自ωi方向的入射光贡献的辐射亮度。
dE(ωi)是表面从ωi方向的入射光的微分辐射强度,表面接收到的辐照强为E,用dE(ωi)特指来自于方向ωi的入射光。
他这个从 L 到 dL 的解释姑且还能接受,但是从 E 到 dE 的解释……看过那个半球的图,感觉还是用那个半球来解释可能会好一些
然后他后面解释了,dE dL 的写法是因为测量仪器的关系
嗯……很合理
就,干脆都用 L 也不是不行

就像这个 PPT 都是用的 L
后面又看到了有一个弹幕的解释
加d就是把很大一份分成很多很小一份,这一小份是根据夹角或者面积或其他来分的,本公式都是立体角,但是每个立体角也会导致其他变量不一样,比如cos值。说的高大上就是微分
然后再结合刚刚看到的那个博客
我感觉我似乎终于懂了……
首先,我们是从四面八方接受光线,所以输入 E
然后我们要向四面八方发散,所以输出 L
然后我们把这个 E 分成很多份,现在我们要知道入射方向的这一份,所以 E 是对立体角微分得到 dE, d E ( w i ) \mathrm d E(w_i) dE(wi) 就是入射方向的这一份
然后输出 L,因为它本身其实就是单位面积单位立体角,所以本身就是指定一个方向的,所以本身我们就是输出 L ( w o ) L(w_o) L(wo)
但是这个 L ( w o ) L(w_o) L(wo) 反射的能量来自 E E E,也就是来自各个入射方向的能量
现在我们把这个 L ( w o ) L(w_o) L(wo) 分成很多份,现在我们要知道来自入射方向贡献的这一份,所以我们用 d L ( w o ) \mathrm dL(w_o) dL(wo) 来代表入射方向贡献的这一份
感觉终于合理了……
再看一遍这页 PPT

他就是把这个分成很多份的 L ( w o ) L(w_o) L(wo) 积分嘛,那我们之前的 d L ( w o ) \mathrm dL(w_o) dL(wo) 来代表入射方向贡献的这一份,所以我们对所有的入射方向积分,也就是对这个半球积分的话,得到的就是这个 L ( w o ) L(w_o) L(wo)
BRDF 的递归问题
假设在某一个状态,我已经知道了 L i ( p , w i ) L_i(p,w_i) Li(p,wi),材质为 f r ( p , w i → w r ) f_r(p,w_i \rightarrow w_r) fr(p,wi→wr),然后我可以计算出这一点的 L r ( p , w r ) L_r(p,w_r) Lr(p,wr)
但是这个出射的光线又会打到别的物体上,别的物体可能又会把这条光线反射回来,进而让我的 p p p 点的 L i ( p , w i ) L_i(p,w_i) Li(p,wi) 发生变化
我的 L i ( p , w i ) L_i(p,w_i) Li(p,w

文章详细介绍了光线追踪的基本原理,包括能量守恒、辐射照度、辐射亮度、光强之间的关系,以及BRDF(双向反射分布函数)在光线反射和折射中的应用。此外,还讨论了蒙特卡洛积分在解决渲染方程中的作用,以及在处理全局光照、反射数量爆炸、循环递归和采样效率问题上的策略。文章提到了路径追踪、光子映射、梅特罗波利斯光传输等现代渲染技术,并探讨了不同材质的模拟,如漫反射、光泽和理想反射/折射材料。最后,文章讨论了散射介质、毛发渲染以及程序化生成的表面等高级话题。
最低0.47元/天 解锁文章
363

被折叠的 条评论
为什么被折叠?



