[C++]DirectX 12 3D游戏开发实战—第8章 学习笔记03 2019.5.1

本文介绍了DirectX 12 3D游戏开发中关于光照的实现,包括平行光源、点光源和聚光灯光源的原理及衰减计算。详细讲解了Light结构体的封装、光照计算的辅助函数,以及在HLSL中的实现。此外,还探讨了光照的叠加、法线计算和场景中光源方向的更新方法。

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

DirectX 12 3D游戏开发实战—第8章 学习笔记03

个人学习用,请勿转载,谢谢!

词汇

平行光源:parallel light 方向光源:directional light 点光源:point light
平方反比定律:inverse squared law 高动态范围(HDR):high dynamic range
色调映射:tonemapping; tone mapping 衰减:falloff 动态分支:dynamic branching
聚光灯光源:spotlight 地形:terrain 有限差分格式:finite difference scheme
渲染过程常量缓冲区:per-pass constant buffer 延迟渲染:deferred rendering

8.10平行光源

  • 平行光源是一种距目标物体极远的光源,因此可以将这种光源发射的光线看作是彼此平行的关系,由于十分遥远,所以可以忽略距离的影响,而仅指定照射到场景中的光强度(intensity)
  • 用向量来定义平行光源,所有光线采用相同的方向向量代之
  • 方向光源的常见实例是太阳
  • 龙书配图 8.23 平行光线
    8.24 太阳光近似于平行光

8.11点光源

1.点光源以球面向各个方向发出光线。
2.对于任意点P,位置Q处的点光源发出的光线,总有一束会传播到此点,因此光向量的方向是由P指向光源Q:
L = Q − P ∣ Q − P ∣ L=\frac {Q-P}{|Q-P|} L=QPQP

8.25 点光源

衰减
  • 物理学中,光强会根据平方反比定律随距离函数发生衰减,距光源d处的某点光强为
    I ( d ) = I 0 d 2 I(d)=\frac {I_0}{d^2} I(d)=d2I0其中 I 0 I_0 I0为距离光源d=1处的光强。

  • 若根据物理学设置光量值并辅以HDR光照与色调映射技术效果会很好,但这里并不使用

  • 线性衰减函数:
    a t t ( d ) = s a t u r a t e ( f a l l o f f E n d − d f a l l o f f E n d − f a l l o f f S t a r t ) att(d)=saturate(\frac {falloffEnd-d}{falloffEnd-falloffStart}) att(d)=saturate(falloffEndfalloffStartfalloffEndd)
    saturate函数会将它的参数限定在 [ 0 , 1 ] [0,1] [0,1]范围内:
    f ( x ) = { x , = 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值