正向渲染路径细节

本页面描述了正向 (Forward) 渲染路径的细节。

根据影响对象的光源的不同,正向渲染 (Forward Rendering) 路径在一个或多个通道中渲染每个对象。根据设置和强度,光源本身也会受到正向渲染 (Forward Rendering) 的不同处理。

实施细节

在正向渲染 (Forward Rendering) 中,影响每个对象的一定数量的最亮光源以全逐像素光照模式被渲染。然后,最多 4 个点光灯会逐顶点被计算。其他灯根据球谐函数 (SH) 进行计算,这种计算方式更快速,但只能得到近似值。根据以下内容判断某个光源是否是逐像素光源:

用以下方法渲染每个对象:

例如,如果某个对象受到若干光源的影响(下图中的圆圈受到光源 A 到 光源 H 的影响):

假设光源 A 到 光源 H 具有相同的颜色和强度,且他们的渲染模式都为自动 (Auto) 模式,则他们在该对象上将严格按照这种顺序进行排序。最亮的光源将以逐像素光照模式进行渲染(A 到 D),然后最多 4 个光源以逐顶点光照模式进行渲染(D 到 G),剩下的光源以球谐函数进行渲染(G 到 H):

请注意不同的光照组间有重叠。例如,最后一个逐像素光源混合有逐顶点光照模式,这样能减少对象和光源移动时可能出现的“光照跳跃”现象。

基础通道

基础通道用一个逐像素方向灯和所有球谐函数光源渲染对象。该通道还从着色器中添加任何光照贴图、环境光照和放射性光照。该通道中渲染的方向灯可以有阴影 (Shadows)。请注意,使用了光照贴图的对象不会获得来自球谐函数光源的光照。

附加通道

附加通道为影响该对象的每个附加逐像素光源进行渲染。这些通道中的光源不能有阴影(因此,正向渲染 (Forward Rendering) 支持一个带阴影的方向灯)。

性能注意事项

球谐函数光源渲染地快。它们只耗费很少的 CPU,并且实际上无需耗费 GPU(换言之,基础通道通常计算球谐函数光照,但由于球谐函数光照的运行方式,无论有多少球谐函数光源,耗费都是完全相同的)。

球谐函数光源的缺点有:

总的说来,球谐函数灯对小的动态对象来说已经足够好了。

Page last updated: 2013-06-28