体渲染论文阅读训练 之二

全部论文训练计划章节 见 论文训练计划

按照前文所说,我们首先跳转到这篇论文:《An ambient light illumination model》

本文介绍了一个经验环境光照明模型。该模型的开发目的是以比Phong照明模型更精确的方式计算环境光,但不需要重新使用诸如光能传递这样对计算机性能昂贵开销的方法。在我们的模型中,我们通过来自分布式的伪光源的直接照明来模拟来自场景表面的间接漫射照明。间接照明的估计是基于模糊系数的概念,它类似于在给定点附近计算的综合加权形状因子。同样的想法也被用于计算来自光源的给定点(面片)的照明。该照度是使用标准局部反射模型计算的直接照度和基于相同的遮蔽概念的经验估计间接照度之和。

总之一句话,摘要看不太懂。不过大体意思就是,我们计算的三维物体上某个点的亮度,是包含两个部分,一是反射模型产生的直接照度,二是基于我们这篇文章的技术产生的间接照度。

一、引子

真实感图像合成的主要目标是开发能够真实地可视化三维场景的方法。为了实现这一目标,已经详细阐述了一些照明模型。这些模型包括易于实现和快速计算局部照明模型,以及允许生成真实照片质量图像的更复杂的全局方法[Watt92,Foley92]。后一种方法从经典方案[Goral84,Whitt80]到更现代的方法[Hanr91,Cohen93,Si1194,Sbert93,Sbert96]。创建真实图像的另一种方法是基于使用更多的特别技术(例如,MentalRay®或RenderMan®中的程序着色器[Upst92]),这些技术努力重建最吸引人的灯光效果,并可能为此目标牺牲物理真实感。

本文介绍了一种经验环境光照明模型。我们的模型模拟了来自场景表面的间接漫射照明,通过来自分布式伪光源的直接照明。使用此模型可以在不使用昂贵的光能传递方法的情况下考虑环境光。由于间接照明模拟的性质,完全不需要明确的光源设置就可以再现吸引人的真实图像。此功能使我们能够快速预览那些看起来有吸引力和真实感的场景。

该方法的思想在于计算给定点的模糊度。模糊度是反映给定曲面点开放程度的几何特性。对于给定场景,每个面片的遮挡只能计算一次并存储到文件中。这将使我们能够在移动光源的环境中快速重新计算照明。

遮蔽物的计算涉及在给定点附近确定形状因子。由于该方法的局部性,它比光能传递方法快得多,而生成的图像是有真实感的,经过多次迭代后看起来与光能传递生成的图像相似。同样的想法也被用于计算来自光源的给定点(面片)的照明。该照度是使用标准局部反射模型计算的直接照度基于相同遮蔽概念的经验估计间接照度之和。

字面意思,就是我们渲染的三维物体里面的每个体素的点都可以计算相邻位置的环境光遮挡效果。

二、导致模糊照明模型的观测

大多数局部照明模型使用环境光来考虑环境中的二次漫反射。这些模型通常假设环境光在整个场景中是恒定的。显然,这只是一个粗略的近似值。例如, 在用漫射光照明的房间里,墙壁表面的照明不是恒定的,通常在房间角落附近会比较暗。一个类似的效果是,在阴天里,汽车下面的影子在雪地上。由于此全局照明模型考虑了二次漫反射,因此可以使用并以光能传递方法为代价,对遮挡区域中的这些照明(变暗)效果进行建模。

我们的目标是开发一个照明模型,使我们能够通过经验计算间接照明来重现暗区中的暗化效果,而无需重新计算昂贵的光能传递解决方案。我们通过特定分布环境光源的直接照明来模拟间接照明。暗区的变暗是通过测量这些区域的几何暗度来实现的。本文的其余部分安排如下。我们从照明模型的“实际”解释开始,展示它的工作原理以及如何使用它计算照明。然后给出了模型的一些物理基础。最后,我们给出了一些结果。

我们现在大致明白了这项技术的思想:就是计算出每个点被周围其他点遮蔽以后的“暗度”,用于产生类似阴影这种真实感图片。

接下来,可以选择继续向下阅读,也可以选择跳转到另一篇论文。考虑到第一篇论文的引子中引用了三篇论文,所以我们不如先把三篇论文的思想都了解一下,再考虑下一步动作。故现在开始研究论文《Adding shadows to a texture-based volume renderer》以及《Gpu-accelerated deep shadow maps for direct volume rendering.》,这两篇论文是关于shadow的。

别忘了记录一下已经阅读的论文章节哦!

先读《Adding shadows to a texture-based volume renderer》吧,注意该论文是基于纹理渲染的体渲染。

本文实现了一种快速给体渲染添加阴影的算法,基于现代图形硬件提供的快速帧缓存(framebuffer)操作,添加阴影可以更好地理解空间结构。通过将更多的结构和三维信息引入到基于纹理的体绘制中,最终图像的视觉效果得到了显著的改善。尽管该算法不进行光照计算,但生成的图像具有阴影外观,这是对数据空间理解的进一步视觉提示,使图像看起来更逼真。

由于阴影的计算与可视化过程无关,因此它可以应用于任何形式的体可视化,尽管基于二维或三维纹理映射硬件的体绘制最有意义。与基于非阴影纹理的体绘制相比,性能降低了一半。对体数据的操作。在特殊情况下,只有摄像机随着固定在场景上的灯光位置移动,性能根本不会降低,因为如果光源相对于体积的位置发生变化,则重新计算只需进行一次。

一、引子

在体绘制中,体数据通常被视为发射漫射光的体素的半透明云。任务是找到每个像素的所有能够渲染进去的体素的总强度。最直接的算法是通过每个图像像素投射光线,并整合光线穿透的所有体素的强度[7]。必须注意用前面的体素的累积不透明度来衡量体素的贡献。

否则,相同亮度的所有体素在屏幕上的亮度都是相同的,几乎不可能区分前后。不幸的是,光线投射方法在计算上非常昂贵,并且通常不允许对数据进行交互操作。为了克服这一局限性,人们开发了一些替代方法,这些方法可以在更短的时间内获得可比的结果[5,6],其中基于纹理的体绘制[2]保证了最高的交互帧速率。

然后下面的部分都是介绍基于纹理的渲染的了,这个方法因为比较重要,但是现在如果展开的话不是很好,因为我们首要的任务是先把全局光照的三大方法有个粗略的掌握。现在阅读《Gpu-accelerated deep shadow maps for direct volume rendering.》

深阴影贴图统一了体积阴影和几何阴影的计算。对于阴影贴图中的每个像素,分数可见性函数(fractional)将作为分段线性函数进行采样、预过滤和压缩。然而,最初的实现目标是基于软件的离线渲染。与以往的gpu算法相似,GPU算法关注的是几何阴影,失去了原有算法的许多重要优点。我们专注于交互式直接体绘制中的阴影,其中阴影算法当前要么计算额外的每个体素阴影数据,要么使用半角度切片在渲染期间生成阴影

我们将原始的深阴影映射概念应用于GPU上的体射线投射,并证明它可以以交互速率提供抗锯齿的高质量阴影。光线投射用于生成阴影贴图数据结构和实际渲染。可见性函数中的高频由分段线性段的预计算查找表捕获。直接体绘制是通过对每个样本进行额外的深阴影贴图查找来执行的。总体而言,我们实现了交互式高质量的体光线投射精确的阴影。最后,我们简要地描述了半透明几何体(如头发)是如何积分的,前提是光栅化可以写入纹理中的任意位置。这将是迈向完整的深阴影贴图功能的重要一步。

一、引子

虽然精确阴影的计算并不简单,但为了提供直观的深度和形状视觉表示,它们非常重要。常规阴影贴图采样离光源最近的遮挡器的深度,因此可见性函数中相应的步骤从完全可见到完全遮挡。然而,对于半透明物体和介质,可见性不是一个简单的阶跃函数,而是随着物体吸收越来越多最初由光源发出的光而单调下降。对于头发等细结构,需要对阴影贴图进行预过滤,以避免出现锯齿,这也会导致可见性函数对每个深度具有分数可见性。深阴影贴图[LV00]表示阴影图像平面中每个像素的可见性函数,与任何可能深度处的光衰减相对应。可见性被近似并以压缩形式存储为分段线性函数。为了在渲染期间进行有效的查找,将对近似的节点进行排序。对于每个碎片位置,可以从深阴影贴图中的相应位置读取光衰减。(x,y)位置由阴影图像平面确定,而z位置必须在已排序的示例节点列表中搜索。用于构建和查找深阴影贴图的算法是为离线渲染而设计的,并且本质上是基于软件的。阴影平面上不同数量的样本节点以及在构建过程中用于深度剥离的堆数据结构禁止在gpu上实现简单高效的实现。

我们的目标是使用最少的内存使用量,为基于GPU的体光线投射提供动态高质量阴影。与基于切片的体绘制相比,GPU光线投射以其优越的图像质量、效率和灵活性,在直接体绘制中越来越受欢迎。例如,有效的空空间跳跃和早期光线终止更容易实现,并且自适应采样率易于实现[RGW*03]。

本文证明了体数据集的深阴影映射可以在GPU上实现,并为基于GPU的光线投射生成高质量的抗锯齿阴影。我们使用一个阻塞的内存布局来有效地将深阴影贴图存储在一个3D纹理中。深阴影贴图的构建和渲染都是基于光线投射的,包括空位跳跃和光线提前终止。为了通过离散采样过程准确地捕捉可见性函数中的不连续性,对任意两个可能的连续采样之间的可见性进行预计算和预压缩。这个想法类似于预积分体绘制(pre-integrated volume rendering)[EKE01],但是我们的查找表并没有只存储两个样本之间的一个整数,而是存储了相应可见性函数的节点。这使得在中等采样率的深阴影贴图生成过程中,可以有效地捕捉不连续性,例如来自等高线的不连续性。

二、相关工作

体积阴影的早期方法[BR98]对体积进行切片,并在规则的三维网格上预计算和存储阴影信息,例如原始体积本身的体素位置。它可以与光线投射一起用于渲染,但即使对于中等质量的阴影,也会消耗大量内存。阴影也可以通过半角度切片来计算,可以使用同时切片进行渲染和阴影计算[KPHE02],也可以结合splatting[ZC03]。半角度切片在每次渲染体积时重新计算阴影,这是我们要避免的,并且不能与光线投射结合使用。

深阴影贴图[LV00]在灯光空间中存储阴影体积的表示。对于地图的每个像素,分数可见度函数被采样、预过滤、压缩和存储,以实现空间相关性的快速访问。当前类似的GPU实现只针对几何体的目标渲染。不透明阴影贴图[KN01]生成可见性函数的常规采样,该采样存储在纹理贴图中而不进行压缩。在某种程度上,这更类似于将阴影信息存储在体网格[BR98]上,而不是存储在深阴影贴图上。不规则采样可以通过利用头发束导致聚集衰减的事实来实现,并在与这些聚集相对应的直方图箱中采样可见性[MKBR04]。实际上,这仅限于少量的存储箱,不能用于直接的体绘制。

这样,三个重要技术还剩最后一个文章《GPU-based monte-carlo volume raycasting》,听名字就知道和我们要读的第一篇文章非常相似。需要注意的是,前面几个技术读完以后也不是很清楚,不过也没关系,我们先有一个粗略的大体印象就好了,因为我们现在是先从广度了解一下各个潜在的知识,而没有必要先深入。下一节我们就开始研究这篇《GPU-based monte-carlo volume raycasting》。

发布了188 篇原创文章 · 获赞 418 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/tiao_god/article/details/105471330