光能传递全局照明阴影`s边缘抖动,不直

时间:2016-11-07 08:40:57

标签: c++ opengl graphics 3d lighting

我正在实施光能传递照明技术。我有一些静态场景,我想要预先计算,然后在其中显示和移动。所以不是那个实时,但必须在移动设备上工作。 因此几何体被分开并且光线反射,但阴影边缘看起来很糟糕:

pic

使用三角形分割几何体:

the pic with the triangulation

由于它们的边缘没有沿着阴影对齐,所以它看起来不那么好。并且互联网中的样本没有(有些人确实有)。所以我可能错过了一些东西。

也许我应该找到阴影边缘并强制三角测量沿着这些边缘创建线条。但找到它们并不容易,而且它们的形状可能很复杂,并且可能有许多灯光会进一步增加三角测量限制的数量。更密集的三角测量不太可能有所帮助(尝试过),边缘抖动将在较小的范围内,但更强烈。如果创建更多三角形并且输出模糊,它可能会有所帮助。但由于这是光能传递,增加三角形的数量会显着影响性能。 pic中的场景非常简单,很适合演示,但我们需要(并且拥有)更复杂的场景/视图,模型,3D透视图等。 显示的三角形实际上进一步细分为四个,以便更好地进行颜色插值,但这些是光线弹跳的单位。

1 个答案:

答案 0 :(得分:2)

您无法从稀疏的细分几何体中获得硬阴影。所以如果你有一个应该产生硬阴影的点光源:

  • 应用您的光能传递算法。
  • 从溶液中减去直射光,因此只有间接光贡献。
  • 渲染场景时,请使用光能传递解决方案进行间接照明,并使用经典技术(如高分辨率阴影贴图)进行硬阴影处理。

或者,您确实可以执行自适应细分。有关简单描述和参考资料,请参阅GPU Gems 2. Chapter 39. Global Illumination Using Progressive Refinement Radiosity#Adaptive Subdivision