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.11点光源
1.点光源以球面向各个方向发出光线。
2.对于任意点P,位置Q处的点光源发出的光线,总有一束会传播到此点,因此光向量的方向是由P指向光源Q:
L=Q−P∣Q−P∣L=\frac {Q-P}{|Q-P|}L=∣Q−P∣Q−P
衰减
-
物理学中,光强会根据平方反比定律随距离函数发生衰减,距光源d处的某点光强为
I(d)=I0d2I(d)=\frac {I_0}{d^2}I(d)=d2I0其中I0I_0I0为距离光源d=1处的光强。 -
若根据物理学设置光量值并辅以HDR光照与色调映射技术效果会很好,但这里并不使用
-
线性衰减函数:
att(d)=saturate(falloffEnd−dfalloffEnd−falloffStart)att(d)=saturate(\frac {falloffEnd-d}{falloffEnd-falloffStart})att(d)=saturate(falloffEnd−falloffStartfalloffEnd−d)
saturate函数会将它的参数限定在[0,1][0,1][0,1]范围内:
f(x)={ x,=0⩽x⩽10=x<01=x>1 f(x)=\left\{ \begin{aligned} x, & = & 0\leqslant x\leqslant 1\\ 0 & = & x<0\\ 1 & = & x>1\\ \end{aligned} \right. f(x)=⎩⎪⎨</