对动态对象上的静态光照贡献进行核算的方法

时间:2019-04-02 19:42:47

标签: opengl graphics lighting

当前,我正在为小型图形引擎进行静态照明的预计算。

这是我当前的工作流程:

  • 对象和灯光具有移动性标签(静态或动态)
  • 在渲染之前,会为静态光源和静态对象计算光照贴图。
  • 动态光照计算是使用延迟阴影模型完成的。
  • 静态对象在几何传递期间应用其光照贴图。

问题如下:

理想情况下,静态光源还将照亮动态对象,而动态光源将照亮静态对象(全部在延迟着色器中)。问题在于,静态对象上的静态光照贡献将在延迟着色器中“重复计算”,即,静态光将照亮已经被那些光照亮的对象。有哪些会计方法?

以下是我的一些想法;但是,所有这些都不理想:

  • 使静态灯光不照亮动态对象(或者相反:使动态灯光不照亮静态对象)。
    • 这可能是我最后选择的解决方案。
  • 将每个灯光的移动性标签传递到延迟的着色器,并使移动性标签成为gbuffer的一部分。
    • 我真的不想为移动性标签添加另一个渲染目标(我已经将4用于PBR!)。
  • 完全消除用于静态几何的预先计算的光照贴图?
    • 我也不想这么做。

此问题还有其他可能的解决方法吗?

0 个答案:

没有答案