Frank Luna DirectX12阅读笔记:绘制进阶(第八章-第十四章)

本博客详细介绍了DirectX12中光照、纹理和高级技术的实现,包括光照模型、材质、纹理坐标、过滤、模板测试以及计算着色器和细分的概念。讲解了Lambert余弦定律、散射光、镜面光、Fresnel效应、纹理创建、采样器对象、融合操作、模板测试、计算着色器的线程和线程群等关键知识点,并通过实例演示了这些技术的应用。
摘要由CSDN通过智能技术生成

目录

第八章 光照

8.1 光和材质的交互

8.2 法向

  • 使用顶点法向取代面法向
  • 当世界坐标矩阵不是单位阵时,注意法向的变换

8.3 光照中其他重要的向量

  • E为眼镜,星号为光源

图片

8.4 Lambert余弦定律

  • radiant flux P(辐射通量):单位时间的光能量
  • irradiance E(辐照度):单位面积单位时间的光能量(density of radiant flux per area)
    • 决定了物体(接受到光)的明暗

图片

  • Lambert余弦定律:

E 2 = P A 2 = P A 1 cos ⁡ θ = E 1 cos ⁡ θ = E 1 ( n ⋅ L ) E_2 = \frac{P}{A_2} = \frac{P}{A_1} \cos \theta = E_1 \cos \theta = E_1 (\mathbf{n} \cdot \mathbf{L}) E2=A2P=A1Pcosθ=E1cosθ=E1(nL)

8.5 散射光(diffuse lighting)

  • 出射散射光的强度和入射光强度B_L、入射光角度L、散射系数m_d相关

c d = max ⁡ ( L ⋅ n , 0 ) ⋅ B L ⊗ m d \mathbf{c}_d = \max(\mathbf{L} \cdot \mathbf{n}, 0) \cdot \mathbf{B}_L \otimes \mathbf{m}_d cd=max(Ln,0)BLmd

8.6 环境光(ambient lighting)

  • 出射环境光的强度和环境光强度A_L、散射系数m_d相关

c a = A L ⊗ m d \mathbf{c}_a = \mathbf{A}_L \otimes \mathbf{m}_d ca=ALmd

8.7 镜面光(specular lighting)

8.7.1 Fresnel效应

  • Fresnel效应:当光线到达两种介质的分界面时,一部分被反射,一部分被折射。记R_F为反射光的比例,则1-R_F为折射光的比例。R_F随入射角的变化而变化,当入射角为90°时,光线平行分界面,R_F为1;当入射角为0°时,光线垂直于分界面,R_F为R_F(0°)。中间,根据Schlick估计,有

R F ( θ i ) = R F ( 0 ) + ( 1 − R F ( 0 ) ) ( 1 − cos ⁡ ( θ i ) ) 5 \mathbf{R}_F(\theta_i) = \mathbf{R}_F(0) + (1 - \mathbf{R}_F(0)) (1 - \cos(\theta_i))^5 RF(θi)=RF(0)+(1RF(0))(1cos(θi))5

  • 常见的R_F(0):
    • 水(0.02,0.02,0.02)
    • 玻璃(0.08,0.08,0.08)
    • 塑料(0.05,0.05,0.05)
    • 金(1.0,0.71,0.29)
    • 银(0.95,0.93,0.88)
    • 水(0.95,0.64,0.54)

图片

  • 对于透明/半透明的物体,则折射光就是折射光;但对于不透明的物体,折射光在物体内部多次反射、吸收,最终成为散射光

8.7.2 粗糙度

  • 微平面的法向和宏观物体法向不同,使得镜面反射光呈现光锥

图片

  • 反射光分布近似余弦函数幂乘的形状,再乘以一个近似的保持能量的归一化项,有

S ( θ h ) = m + 8 8 cos ⁡ m ( θ h ) = m + 8 8 ( n ⋅ h ) m S(\theta_h) = \frac{m+8}{8} \cos^m (\theta_h) = \frac{m+8}{8} (\mathbf{n} \cdot \mathbf{h})^m S(θh)=8m+8cosm(θh)=8m+8(nh)m

  • 出射镜面光强度与入射光方向L、入射光强度B_L、半途向量h、材质Fresnel效应下反射比例R_F、粗糙度m相关

c s = max ⁡ ( L ⋅ n , 0 ) ⋅ B L ⊗ R F ( α h ) m + 8 8 ( n ⋅ h ) m \mathbf{c}_s = \max(\mathbf{L} \cdot \mathbf{n}, 0) \cdot \mathbf{B}_L \otimes R_F(\alpha_h) \frac{m+8}{8} (\mathbf{n} \cdot \mathbf{h})^m cs=max(Ln,0)BLRF(αh)8m+8(nh)m

8.8 光照模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值