当前,我正在为小型图形引擎进行静态照明的预计算。
这是我当前的工作流程:
- 对象和灯光具有移动性标签(静态或动态)
- 在渲染之前,会为静态光源和静态对象计算光照贴图。
- 动态光照计算是使用延迟阴影模型完成的。
- 静态对象在几何传递期间应用其光照贴图。
问题如下:
理想情况下,静态光源还将照亮动态对象,而动态光源将照亮静态对象(全部在延迟着色器中)。问题在于,静态对象上的静态光照贡献将在延迟着色器中“重复计算”,即,静态光将照亮已经被那些光照亮的对象。有哪些会计方法?
以下是我的一些想法;但是,所有这些都不理想:
- 使静态灯光不照亮动态对象(或者相反:使动态灯光不照亮静态对象)。
- 将每个灯光的移动性标签传递到延迟的着色器,并使移动性标签成为gbuffer的一部分。
- 我真的不想为移动性标签添加另一个渲染目标(我已经将4用于PBR!)。
- 完全消除用于静态几何的预先计算的光照贴图?
此问题还有其他可能的解决方法吗?