Lambert表面的brdf推导

本文聚焦于Lambert表面的brdf推导。先给出微表面模型下基本反射公式,介绍BRDF定义及光照计算中brdf构成。阐述朗伯体性质,即各向同性反射。最后进行详细推导,通过对半球出射光积分得出计算环境光照常用的brdf。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lambert表面的brdf推导

在微表面模型下,基本的反射公式如下
L o ( p , ω o ) = ∫ Ω f r ( p , ω i , ω o ) L i ( p , ω i ) n ⋅ ω i d ω i L_o(p,\omega_o) = \int\limits_{\Omega} f_r(p,\omega_i,\omega_o) L_i(p,\omega_i) n \cdot \omega_i d\omega_i Lo(p,ωo)=Ωfr(p,ωi,ωo)Li(p,ωi)nωidωi
其中 f r ( p , ω i , ω o ) f_r(p,\omega_i,\omega_o) fr(p,ωi,ωo) 就是 BRDF,单位是 s r − 1 sr^{−1} sr1
以下是维基百科中的介绍
f r ( ω i ,   ω r )   =   d ⁡ L r ( ω r ) d ⁡ E i ( ω i )   =   d ⁡ L r ( ω r ) L i ( ω i ) cos ⁡ θ i   d ⁡ ω i {\displaystyle f_{\text{r}}(\omega _{\text{i}},\,\omega _{\text{r}})\,=\,{\frac {\operatorname {d} L_{\text{r}}(\omega _{\text{r}})}{\operatorname {d} E_{\text{i}}(\omega _{\text{i}})}}\,=\,{\frac {\operatorname {d} L_{\text{r}}(\omega _{\text{r}})}{L_{\text{i}}(\omega _{\text{i}})\cos \theta _{\text{i}}\,\operatorname {d} \omega _{\text{i}}}}} fr(ωi,ωr)=dEi(ωi)dLr(ωr)=Li(ωi)cosθidωidLr(ωr)
而在光照计算中
f r = k s ⋅ f d f f u s e + D F G 4 ( n ⋅ w i ) ( n ⋅ w o ) f_r = k_s \cdot f_{dffuse} + \frac{DFG}{4(n \cdot w_i)(n \cdot w_o)} fr=ksfdffuse+4(nwi)(nwo)DFG
brdf由漫反射和镜面反射构成,漫反射的时候最简单的就是假设平面是朗伯面,从而使用
f d i f f u s e = c π f_{diffuse} = \frac{c}{\pi} fdiffuse=πc

朗伯体性质

根据百度百科朗伯体的定义

朗伯体是指当入射能量在所有方向均匀反射,即入射能量以入射点为中心,在整个半球空间内向四周各向同性的反射能量的现象,称为漫反射,也称各向同性反射,一个完全的漫射体称为朗伯体。

详细推导

因为光的可逆性,朗伯体表面的入射光可以通过对该点处半球面上所有的出射光进行积分求得。

假设表面点的颜色是 c c c ,那么假设入射光 Radiance 是 L i L_i Li,且垂直于当前点,则该点的法线对应的半球方向上任意一点的出射光 Iradiance 都是数值相等的, L i 2 π \frac{L_i}{2\pi} 2πLi,而且朗博表面的brdf也必然是一个常数 f l f_l fl,则通过对半球所有出射方向进行积分
c L i = ∫ 0 2 π ∫ 0 π / 2 f l L i 2 π sin ⁡ θ d θ d ϕ = L i f l 2 π ∫ 0 2 π d ϕ = L i f l ⇓ f l = c π \begin{aligned} c L_i &= \int_{0}^{2\pi}\int_{0}^{\pi/2} f_l \frac{L_i}{2\pi} \sin{\theta} d \theta d \phi\\ &=L_i \frac{f_l}{2\pi} \int_{0}^{2\pi} d \phi\\ &=L_i f_l \end{aligned} \\ \Downarrow \\ f_l = \frac{c}{\pi} cLi=02π0π/2fl2πLisinθdθdϕ=Li2πfl02πdϕ=Liflfl=πc

这就是我们在计算环境光照的时候常用到的brdf

引用

[1] https://en.wikipedia.org/wiki/Bidirectional_reflectance_distribution_function

[2] https://en.wikipedia.org/wiki/Radiance

[3] https://learnopengl.com/PBR/Lighting

<think>好的,我现在需要帮助用户了解如何通过预计算辐照度图(IBL)在基于物理的渲染(PBR)中实现微表面模型的漫反射项计算。首先,我得回忆一下PBR的基本原理,特别是微表面模型和漫反射、镜面反射的区别。微表面模型认为表面由许多微小的镜面组成,光线在这些微表面上发生反射,宏观上表现为漫反射或镜面反射。漫反射项通常使用Lambert模型,而镜面反射则用GGX等分布函数。 用户提到了预计算辐照度图用于漫反射项,这属于IBL(基于图像的照明)的一部分。在之前的教程中,辐照度图被用来处理间接漫反射,现在用户想知道具如何实现。我需要分步骤解释这个过程。 首先,辐照度图的预计算。辐照度图是通过对环境光立方贴图(cubemap)进行卷积处理得到的,卷积核是余弦权重,这对应Lambertian漫反射的积分。这一步的数学基础是渲染方程中的漫反射部分,可以简化成一个积分运算。这里可能需要提到球谐函数(SH)或者立方贴图的卷积方法,但根据引用[2],球谐用于漫反射,而IBL的立方贴图用于镜面反射的高光部分。但用户的问题是关于漫反射的,所以可能需要详细说明如何生成辐照度图。 接下来,应用辐照度图到材质上。漫反射项的计算公式通常是albedo颜色乘以辐照度图的采样结果,再加上镜面反射部分。根据引用[1],间接光的漫反射部分使用辐照度图,而镜面部分则需要更复杂的方法,比如预滤波的环境贴图和BRDF积分贴图。但用户的问题集中在漫反射项,所以重点在辐照度图的生成和使用。 另外,引用[3]提到反射波瓣(lobe)的概念,漫反射的波瓣比较宽,而镜面的波瓣较窄。这可能影响预计算的方法,但漫反射的积分已经考虑了整个半球方向的均匀分布,所以辐照度图的卷积处理应该覆盖所有可能的入射方向。 需要确保回答的结构清晰,分步骤说明预计算的流程,数学公式的正确性,以及实际应用中的实现方法。同时,用户可能需要了解为什么使用辐照度图,它的优势在哪里,比如性能优化,预计算减少实时计算负担等。此外,结合引用[2]中的实际案例,如使命召唤的光照方案,说明IBL和SH的应用场景,帮助用户理解实际应用中的权衡。 可能的问题包括:预计算辐照度图的步骤、数学推导、与实时计算的对比、优化方法等。需要确保回答中包含这些要点,并正确引用提供的资料。</think>在基于物理的渲染(PBR)中,预计算辐照度图用于实现微表面模型的漫反射项计算,其核心思路是通过积分环境光在半球空间的分布来模拟间接光照的漫反射效果。以下是具实现步骤: ### 1. 环境光预处理 将HDR环境贴图通过**立方贴图卷积**生成辐照度图。这个卷积操作对应Lambertian反射的半球空间积分: $$ L_d(n) = \frac{k_d}{\pi} \int_{\Omega} L_i(p, \omega_i) (n \cdot \omega_i) d\omega_i $$ 其中$k_d$为表面反照率,$n$为法线方向,$\omega_i$为入射光方向。实际实现时会对立方贴图的每个纹素进行**重要性采样**,累加余弦加权后的光照值[^1]。 ### 2. 实时渲染计算 在着色阶段,直接采样预计算的辐照度图: ```glsl vec3 diffuse = albedo * texture(irradianceMap, N).rgb; ``` 这里$albedo$是材质基础色,$N$为表面法线方向。该方法将复杂的积分计算转换为简单的纹理采样,性能开销极低[^2]。 ### 3. 与微表面模型结合 完整的漫反射项还需考虑能量守恒原则: - 金属材质(metallic≈1)的漫反射项趋近于0 - 粗糙表面(roughness≈1)会增强漫反射占比 实际计算公式可扩展为: $$ L_{diffuse} = (1 - metallic) \cdot \frac{albedo}{\pi} \cdot E(n) $$ 其中$E(n)$为辐照度图采样结果[^3]。 ### 4. 技术优势 1. **性能优化**:预计算过程将$O(n^2)$复杂度的积分转换为$O(1)$的纹理采样 2. **物理准确性**:余弦加权积分精确模拟Lambertian反射特性 3. **艺术可控性**:通过调整环境贴图可快速改变整光照氛围
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值