光探头与环境立方体贴图有何不同?


17

查看光探针纹理,它看起来像是模糊的环境贴图。

两者之间有什么区别,光探头是如何制成的,并且光探头模糊,有什么好处?


3
简短的答案:“光探头”通常表示环境的紧凑球形谐波表示。它们之所以模糊,不仅是因为它们非常紧凑(仅存储几十个字节),还因为它们已经过预先过滤以用作漫射照明。如果有机会,我将扩展为更长的答案。:)
内森·里德

您的问题有什么背景吗?术语“光探测器”含糊不清,在不同的场景,算法和引擎中使用不同。
大卫·库里

具体来说,如果您去过shadertoy.com,将会看到两组可用的多维数据集映射。一组是环境贴图,另一组是相同的但模糊的,被标记为光探针。只是好奇而已,一般来说都是光探头。
艾伦·沃尔夫

Answers:


18

我知道“光探测器”有两种不同的常见含义。它们都代表场景中单个点周围的光,即,如果将您缩小到很小的尺寸并站在该点,您将在各个方向上看到的一切。

一种含义是围绕一个点的光的球谐表示。 球谐函数是在球域上定义的函数的集合,类似于正弦波,正弦波在赤道周围并在球体上的两极之间振荡一定次数。

球谐函数可用于缩放和将一定数量的球谐函数(通常为4(称为线性,一阶或单频SH)或9(称为二次,二次或双频SH)。这非常紧凑,因为您只需要存储比例因子。例如,对于具有RGB数据的二次SH,每个探头仅需要9 * 3 = 27个值。因此,SH可以使一个点周围的光非常紧凑,但也必须非常柔和和模糊。这适用于漫射照明,并且可能具有高粗糙度的镜面反射。

Simon的技术博客中的此屏幕截图显示了在整个场景中间隔排列的一系列SH光探头,每个探头都显示了当时接收到的间接照明:

SH光探头阵列

当前,“光探测器”的另一个常见含义是环境立方体贴图,其贴图水平已预先模糊化为不同的范围,因此可用于具有不同粗糙度级别的镜面照明。Seb Lagarde博客的这张图片显示了基本思想:

预过滤的立方体贴图MIP级别

较高分辨率的尖头(向左)用于需要详细反射图像的高度抛光的表面。向右,较低分辨率的Mip级别逐渐变得模糊,并用于来自较粗糙表面的反射。在着色器中,对该立方体贴图进行采样时,您可以基于材料粗糙度计算所需的Mip级别,并利用三线性滤波硬件。

这两种类型的光探头都用于实时图形中以近似间接照明。尽管可以实时计算直接照明(或至少对于区域照明近似),但由于其复杂性和计算开销,间接照明通常仍在脱机预处理中进行烘焙。

传统上,烘焙过程的结果将是光照贴图,但是光照贴图仅适用于静态几何体上的漫反射光照,并且它们还占用大量内存。烘焙一堆SH光源探测器(由于它们非常紧凑,因此您可以买得起很多),再加上少量散布的立方贴图光源探测器,可让您在静态和动态对象上获得体面的漫反射和镜面反射间接照明。它们是当今游戏中的流行选项。


很好的解释!只是要确认关于在mips上使用三线性过滤的部分... mips比体积纹理更可取,因为它们使用的分辨率较低,而较高的Blur级别需要的分辨率较低?
艾伦·沃尔夫

1
我想说这两种“光探针”都是相同的。光线探测器是对场景中某个点接收到的辐射(通常以某种方式进行预卷积)的度量。立方体贴图和SH是存储/计算光探测器的不同方法,因此需要进行不同的存储/性能/质量折衷。(编辑:为了明确
起见

@AlanWolfe有一个用途,那就是从真实环境(称为灰色球/白色球)中获取漫射光照的贴图,而不仅仅是镜面反射。这是两种镜面/灰色球着色器的
异议

1
@AlanWolfe正确—您需要在更模糊的级别上使用较少的分辨率。而且,立方体贴图体积纹理并不是硬件中存在的东西。:)
内森·里德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.