本文主要是介绍An Efficient Representation for Irradiance Environment Maps论文阅读笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
An Efficient Representation for Irradiance Environment Maps
看这篇文章是因为用到了颜色相似度比较的技术,但是这个方法太过复杂,还是考虑其他方法吧。
摘要:
- 我们考虑在远距离照明下的漫射物体的渲染,如环境图所指定的。 利用照明球谐系数对辐照度的解析表达式,我们发现只需要计算和使用9个系数,对应于照明的最低频率模式,才能达到平均误差仅为1%。 换句话说,辐照度对照明中的高频不敏感,并且只使用9个参数很好地近似。 事实上,我们证明了在表面法线的笛卡尔分量中,辐照度可以简单地表示为二次多项式,并给出了显式公式。 这些观察导致了一种简单而有效的过程渲染算法,适合于硬件实现,一种比以前的技术快三个数量级的预滤波方法,以及照明设计和基于图像的渲染的新表示。
引言
- 大多数真实场景中的照明是复杂的,来自各种来源,包括区域灯和大型连续照明分布,如天窗。 但目前的图形硬件只支持点光源或方向光源。 一个原因是缺乏一般照明分布的简单程序公式。 相反,必须对每个像素进行上半球的集成。
- 使用一般照明分布的一种方法是环境图的方法。 环境图是一个点的入射光照的表示。 布林和纽厄尔[3]利用它们有效地找到遥远物体的反射。 米勒和霍夫曼[14],格林[8]预先过滤的环境地图,预先计算单独的反射地图的扩散和镜面成分的BRDF。 Cabral等人。 [5]通过使用一组2D预渲染图像来处理一般的BRDF。 预过滤通常是一个离线的,计算昂贵的过程。 在预滤波之后,渲染通常可以使用纹理映射的图形硬件以交互速率进行。
- 本文重点研究了BRDF的朗伯天分量。 我们使用术语辐照度环境图来表示由表面法线索引的漫反射图,因为每个像素只存储表面特定方向的辐照度。 对于像游戏这样的应用,辐照度图通常直接存储在表面,而不是作为法向量的函数,被称为光地图。辐照环境图也可以通过计算辐照度体积扩展到空间变化的光照,如Greger等人所做的那样。 [9]。 许多相同的想法可以应用于加速全局照明算法。 辐照度性质的缓慢变化导致了Ward和Heckbert[18]提出了使用辐照度梯度的插值,而Wilkie等人提出了将辐照度作为表面取向函数存储在取向光图中的想法。 [19]。
- 我们的方法的关键是快速计算对辐照度环境图的解析近似。 对于渲染,我们演示了一种简单的过程算法,它以交互式帧速率运行,并且易于硬件实现。 在某些应用中,过程方法优于纹理映射。 由于辐照度随取向变化缓慢,因此只需计算每顶点,并在三角形之间插值。 此外,我们只需要一个单一的纹理通行证来渲染纹理物体与辐照度环境地图,因为辐照度是程序计算。 另一方面,标准方法需要单独的辐照度纹理,需要多纹理支持或多纹理传递。 在其他应用中,当每幅纹理映射相对便宜时,我们的方法可以非常有效地计算辐照度环境映射纹理。 我们的新表示也提出了照明设计和基于图像的渲染的新方法。
背景
- 从经验上讲,众所周知,漫射表面的反射强度随表面取向的变化而缓慢变化。 这种定性观测被用来证明在低分辨率[14]下表示辐照度环境图是合理的,并有效地计算层次[11,12]的阴影。 我们的目标是使用辐照度的解析定量公式来形式化这些观测,并允许有原则的近似。
- 设L表示远处照明分布。 与环境映射算法一样,我们忽略了投影和近场光照的影响。 辐照度E是表面法线n的函数,由上半球Ω(N)上的积分给出)。
- 注意n和ω是单位方向向量,所以E和L可以通过单位球面上的方向(θ,φ)参数化。 我们必须通过表面反照率ρ来缩放E,它可能依赖于位置p,并且用纹理来描述,以找到辐射度B,它直接对应于图像强度。
- 我们主要关心的是近似E。我们[16]能够导出辐照度的解析式。 Basri和Jacobs[2]在同时进行人脸识别方面的工作中独立地获得了类似的结果。 我们最初的动机是研究一个反向渲染问题-从朗伯天表面的观测中估计照明,即从辐照度来看。 在本文中,我们将把公式应用于一个正向渲染问题-用环境映射渲染扩散对象。 我们的公式是球谐[4,13,17]系数。 球面谐波Ylm,其中l≥0,−l≤m,l是球面上与傅立叶基在直线或圆上的模拟。 前9次球面谐波(l≤2)是笛卡尔分量(x,y,z)的常数(l=0)、线性(l,1)和二次(l=2)多项式)。 并由数值给出:
- 请注意,这些基函数与Arvo[1]在其辐照度张量公式中使用的球面多项式密切相关。 E(θ,φ)和L(θ,φ)可以用它们的球面谐波展开中的系数Elm和Llm来表示。
- 我们还用系数Al定义了A=(n·ω。 由于A没有方位依赖关系,m=0,我们只使用l指数。
- 近似:对于渲染,关键的观察是Aˆl衰减如此之快,我们只需要考虑低频照明系数,阶为l≤2。 等效地,辐照度只被9个参数很好地近似-1对于l=0,m=0,3对于l=1,−1≤m1,5对于l=2,−2≤m2。 通过在频率空间中的工作,我们利用A=(n·ω)的低频特性,使用几个系数代替全半球积分。 方程3给出了前9次球面谐波的简单形式,使实现变得简单明了。
3算法和结果
- 在本节中,我们将讨论这个结果的三个应用。 首先,我们展示了如何快速预滤光分布,计算系数Llm。 接下来,我们开发了一个简单的实时过程着色器,用于渲染,以这些系数作为输入。 最后,我们讨论了我们的表示的其他应用。
3.1 Prefiltering
- 对于给定的环境图,我们首先通过对球面谐波基函数的积分,找到了l≤2的9个照明系数Llm。 每个颜色通道被单独处理,因此系数可以被认为是RGB值。
- 方程3中给出了Ylm的表达式。 积分只是环境映射L中像素的简单和,由函数Ylm加权。 积分也可以看作是照明的时刻,也可以看作是函数L和Ylm的内部产物。
- 由于我们计算9个数字,预滤波步骤需要O(9S)时间,其中S是环境映射的大小(像素总数。 通过比较,计算辐照度环境图纹理的标准方法需要O(T·S)时间,其中T是辐照度环境图中的纹理数。 因此,我们的方法将大约快T/9倍。 即使传统的辐照度环境图以非常低的分辨率计算,即64×64,对应于T=4096,我们的方法也会快近500倍。
- 我们已经实现了预滤波作为给定环境映射的预处理步骤。 图2列出了几个光探针的Llm值。 一个300x300环境图的计算时间小于一秒。 这表明,我们的方法可能能够处理场景与动态照明在未来。 相比之下,对每个像素执行半球积分来计算辐照度环境图的标准方法大约需要两个小时。 实际上,如果需要明确表示辐照度环境图纹理,我们相信计算它的最好方法是首先使用我们的方法计算9个系数Llm,然后使用下面描述的渲染方法快速生成辐照度环境图。
- 重要的是要知道我们的9个参数近似会产生什么误差。 任何像素的最大误差,作为照明总强度的一部分,为9%,对应于A(θ)的2阶近似下的最大误差)。 此外,对于任何物理输入照明分布[2],所有表面取向的平均误差都可以显示在3%以下。 对于我们示例中使用的环境映射,对应于复杂的自然光照,结果比最坏情况下的界限要好一些-平均误差在1%以下,最大像素误差在5%以下%。 最后,图3提供了我们的结果质量与标准预滤波的视觉比较,表明我们的方法产生了一个感知准确的答案。
3.2 Rendering
- 对于渲染,我们可以使用方程7找到辐照度。 由于我们只考虑l≤2,所以辐照度只是(归一化)表面法线坐标的二次多项式。 因此,使用NT=(xyz1),我们可以编写
总结
- 我们描述了一种用于呈现扩散对象的环境映射的新的解析表示,并给出了实现的显式公式。 我们的方法允许我们对BRDF的漫射组件使用任意的照明分布,而不是当前图形硬件对点或方向源的限制。 我们简单地指定或计算照明的前9个时刻。 即使需要更传统的纹理映射方法,我们的方法也允许我们非常有效地计算辐照度环境映射纹理。 在未来,我们希望为镜面BRDF组件开发类似的频率空间方法,以及更一般的非兰伯BRDF。 我们还想进一步探索在照明设计和基于图像的渲染上面讨论的应用。
这篇关于An Efficient Representation for Irradiance Environment Maps论文阅读笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!