我正在尝试在OpenGL中实现基于物理的渲染器。我正计划实施Cook-Torrance BRDF。我读到了辐射立方贴图(用于反射),例如这里讨论的那样。但是我有点困惑。我的测试环境是Sponza,其中包含其他一些模型,您可以在其中自由移动相机。环境立方体贴图如何与这样的场景一起工作?场景中有拱廊或类似的建筑作品,以及其他方式?是否需要多个立方体贴图?

#1 楼

您的困惑来自于这样的事实,即在一些基础教程中,您指向用于应用照明的cubemap是全局的和静态的-它不是来自实际的几何图形,而是来自随摄像机位置移动的无限天空盒,因此它在任何地方都有效。

关于第二种类型没有任何提及-局部立方体贴图实际上是使用局部几何来计算的,并且仅在其放置时有效。

这可以通过使用多个局部立方体贴图并将它们与周围的局部对象连接来实现,但是问题在于它会在它们之间生成接缝,特别是对于高频反射,您可能要测试一下。

现在,您可以生成几个局部立方体贴图-每个局部贴图都以一个小对象为中心,并在其上使用。如果您打算更改其位置,它们将随对象一起移动。他们会考虑您的局部几何图形,如果要渲染它,还要考虑全局天空框或天空穹顶。您可以在每次更改对象位置或每一帧时预先计算这些立方体贴图。整个sponza具有不同的mipmap体素级别,然后像体素圆锥体跟踪技术中那样对其进行射线跟踪。体素化可以作为预计算完成,但通常占用大量内存。