任意多边形表面上的实时浮雕贴图映射

Real-Time Relief Mapping on Arbitrary Polygonal Surfaces

此译文首发桔梗的怨念
引用地址:任意多边形表面上的实时浮雕贴图映射
有任何问题、意见或建议在此留言:留言

作者:
Fabio Policarpo (Paralelo Computacao)
Manuel M. Oliveira(Instituto de Informatica) UFRGS
Joao L. D. Comba (Instituto de Informatica) UFRGS

翻译:卢立祎

图 1: 使用不同的浮雕贴图渲染的茶壶,应用了逐像素光照和自阴影。

摘要

  本论文展示了一项能够实时地在任意多边形模型上应用浮雕贴图映射的技术。在这个方法里,贴图浮雕数据被储存于切线空间中,因此,它能够被应用到任意曲面的多边形上,并产生正确的自闭塞、透明贯穿、阴影及逐像素光照特效。这项技术可以被用来对可变形几何模型增加表面细节。例如在游戏里经常会出现的那些会动的人物。这项技术使用了一个反向公式(像素驱动),这个公式是基于一个在 GPU 上实现的高效的“直线和高度场相交”的算法。它支持对表面极端近距离的观察、层次贴图以及对贴图的各项异性过滤。并且,相对于高细节的表面,如果需要对贴图进行平铺的话,这种技术只需要占用很少的内存空间。

CR分类:I.3.7[计算机图形]:三维图形与真实性
关键词:基于图像的渲染,浮雕贴图映射,运动视差,实时渲染,表面细节。

1 绪论

  贴图映射 [Catmull 1974] 是当前图像合成系统的基础部分,在增强场景的真实性方面扮演着非常重要的角色。它通过模拟不同的材质表现来有效的增强表面细节部分,方法是增加表面的褶皱 [Blinn 1978] 甚至改变底层的几何模型 [Cook 1984] 。近年来,出现了一些贴图映射的扩展方法,用在“实例渲染”、“在不同的灯光方向下渲染贴图” [Malzbender et al. 2001] 以及“3D表面细节” [Oliveira et al. 2000] 等方面。浮雕贴图映射 [Oliveira et al. 2000] 使用了图像扭曲的技术来模拟增强 3D 表面的细节表现。而且,仅仅只需要渲染很少的贴图多边形,就可以在大部分几何体上获得正确的视觉效果。

图2:Bronto 的品茶时间。这里的人物、茶壶和墙壁的表面细节是用浮雕贴图映射渲染的。

  在这篇文章里,我们会给你展示:通过在切线空间里应用映射,使浮雕贴图能够映射在任意的多边形模型上 [Peercy et al. 1997] 。图1、图2分别展示了多个物体使用不同的表面细节进行的渲染。这些图像还包含了逐像素光照和表面浮雕形成的自阴影。与当前提出来的其他的描绘表面细节的技术 [Wang et al. 2003; Wang et al. 2004] 相比,用我们的方法绘制表面有很多好处。具体来说,它使用了一个更加简洁的表示方式,它非常容易实现,支持任意近距离的观察而没有明显的贴图变形,并且还支持多级别贴图和对贴图的各项异性过滤。

  这篇文章包括了:

  • 一项在实时情况下把浮雕贴图映射到任意多边形模型上的技术(第三节)。渲染出来的结果展现了正确的自闭塞、通透、自阴影以及逐像素光照。并且,它还支持对于表面细节非常近的近距离观察。
  • 一个计算“光线高度场相交”高效的算法,使用了可编程图形硬件(第三节)。
  • 一种基于两个深度层的浮雕贴图描述方法(第四节)。当映射到单个多边形上时,这个描述方式相比单个深度层的浮雕贴图有了相当程度的改进。这个方法没有额外的存储消耗,但只需要增加一点点运算消耗就可以了。

2 一些相关的技术

  凹凸贴图 (Bump mapping) [Blinn 1978] 使用法线扰动的方式来模拟表面细节。因为真实的表面没有改变,所以这种方式无法计算自闭塞、阴影以及侧面。水平线贴图 (Horizon maps) [Max 1988] 提供了一种让凹凸贴图表面有阴影的解决方案,并且这个方案可以使用图形硬件加速 [Sloan and Cohen 2000]。另外一种可供选择的解决方案是 Heidrich et al 提出来的,它同样可以使用硬件加速来实现。 [Heidrich et al. 2000]. 

  位移贴图(Displacement mapping) [Cook 1984] 通过改变表面的实际的几何体来产生正确的自闭塞、阴影和侧面轮廓。但是不幸的是:使用位移贴图需要渲染大量的微小的多边形,这在交互式应用程序里面是非常不合适的。今年来,已经有很多方法来改进位移贴图的渲染,来避免直接渲染大量微小的多边形。这些方法都是基于光线追踪 [Patterson et al. 1991; Pharr and Hanrahan 1996; Heidrich and Seidel 1998; Smits et al. 2000]、3D 图像反向变形 [Schaufler and Priglinger 1999] 、还有 3D 贴图映射 [Meyer and Neyret 1998; Kautz and Seidel 2001]。但是基于光线追踪和反向变形的方法已经被证明计算量庞大而且不适合用在实时的应用程序中。而使用基于 3D 贴图来渲染位移贴图的方法就像是 2D 贴图映射多边形的栈一样。Hirche et al. [Hirche et al. 2004] 使用图形硬件来对边面突出做光线投射。Gumhold [Gumhold 2003] 实现了一个用光线投射来渲染椭圆体的像素着色程序。

  再往后,Wang et al. [Wang et al. 2003] 提出了一项技术,把预先计算的每一个位移点的距离存到一个参考表面上。这些距离都是通过在不同观察方向上多次取样计算得到的。最终的结果是一个五元函数,叫做“基于视点的位移贴图”(VDM),这个函数可以在渲染的时候使用。由于这些数据量非常庞大,VDM 数据放入显存之前需要进行压缩。压缩使用了一种主要部分分解的技术。这个方法能够在实时状态下工作,而且能够产生很好的结果。但是这种方法也有一些缺陷:它引起了很严重的贴图失真,并且只能够用于固定距离的表面。因为这么大的数据量,所以通常只能创建一小片然后重复铺满整个表面。同样,由于是要预先计算的缘故,它只能特定的在固定的某些距离上渲染,无法近距离进行渲染。

  为了减少贴图失真,为了处理表面边界的问题,Wang et al. [Wang et al. 2004] 提出了另外一个五元函数,叫做 GDM,来渲染没有高度信息的结构。GDM 还是会产生巨大的采样数据,以至于需要压缩这些数据。同 VDM 一样,GDM 方法更适合用来做小块平铺渲染和在固定距离上渲染。

  视差贴图映射(Parallax mapping) [Kaneko et al. 2001] 使用逐像素深度的贴图扩张的技术。在这个方法里面,视线方向的贴图坐标根据深度值进行了近似的变化。这个技术在非常小的计算消耗的前提下能够产生很有意思的结果,但是只能够产生噪声一样无规律的凹凸,因此当视点移动的时候,表面显示便会根据视点动态变化,很难看。而且会视差贴图映射已经被证明无法支持阴影。

 2.1 对浮雕贴图映射的回顾

  当映射到实际上是平坦的多边形上的时候,浮雕贴图映射 [Oliveira et al. 2000] 使用图像变形和贴图逐像素深度放大的技术来表现复杂的几何细节。深度信息是通过参考表面和采样面之间的距离计算出来的。图 3 展示了一个浮雕贴图的例子。左边的图是预渲染出来的漫反射贴图,右边的是相应的深度图。

图3:一个浮雕贴图:左边是预渲染的漫反射贴图,右边是相应的深度贴图。深度贴图中颜色越深表示越近。

  理想情况下,只有在需要的时候浮雕贴图的一些部分才需要变形。但是,高度域的渲染不像常规的贴图映射那样简单,它需要根据给定的视线找到离视线最近的表面。这个搜寻的过程往往需要花费巨大的运算代价,为了避免这个过程,Oliveira et al. 把这个映射的过程分解为两个步骤来处理 [Oliveira et al. 2000] 。首先,使用一个“向前”的转换来把高度域转换为一个正规的 2D 贴图。然后,再把这个转换后的贴图通过传统的方式映射到多边形上去。图 4 展示了在相同的视点上使用不同的技术渲染所得到的结果之间的比较。(a) 图像按照传统的方式映射到一个四边形上。(b) 使用浮雕贴图的结果。(c) 通过非常多的小多边形渲染出来的结果。(b) 和 (c) 基本上看不出有什么区别。

图 4 展示了在相同的视点上使用不同的技术渲染所得到的结果之间的比较。(a) 图像按照传统的方式映射到一个四边形上。(b) 使用浮雕贴图的结果。(c) 通过非常多的小多边形渲染出来的结果。

  下面展示的是把浮雕贴图映射到多边形上去。左边的图展示两个多边形的边。这种方法无法扩展到任意的表面上去。 ElHew 和 Yang [ElHelw and Yang 2003] 使用了圆柱体来描述浮雕贴图(同样的,贴图深度是根据圆柱体的法线方向算出来的),然后用内窥模拟的方式来渲染。他们根据视点的位置来扭曲圆柱贴图,然后通过这个贴图来创建了一个显示方法,最后把结果映射到参考的圆柱体上。他们的这种技术不能在任意的表面上使用。

图5: 使用浮雕贴图映射到平行六面体的可见面上的 3D 物体。左边的图展示了边框,右边的没有。

 3 多边形表面上的浮雕贴图映射

  我们利用现代图形硬件的可编程能力来更有效的渲染任意多边形表面上的细节。自从渲染过程中有了片段着色,我们就可以使用用逐像素的着色并且计算阴影。因此,用来存放预先计算好的漫反射信息的颜色贴图就可以丢弃了,取而代之的是法线贴图。任何 2D 贴图都可以映射到一张法线贴图。图6展示了用自身深度信息和法线图表示的浮雕贴图。深度图使用 alpha 通道的灰度表示深度,RGB 通道用来储存法线图。这样,一张浮雕贴图就可以用每个像素 32 位色的贴图表面来表示了。

图6:用左边的深度图和右边的法线图表示的浮雕贴图。法线被映射到 [0,1] 的范围里,并且储存为一张 RGB 图像。

  我们把高度值规范化到 [0,1] 的范围。图7展示了一个高度域表面的切面图。从顶部到底部,深度值分别从 0.0 到 1.0。

  把浮雕数据映射到一个多边形表面上的处理过程如下,你能明白它的理论。对于每一个将要被渲染的片断:

  • 计算从视点到多边形表面上的 3D 位置点的方向 (VD),用向量来表示这个方向;
  • 把 VD 转换到切线空间 (tangent space)(定义为切线、法线和次法线组成的向量);
  • 从 VD'(转换过的 VD)和 A、贴图坐标 (s,t) ,直到计算到 B,贴图坐标 (u,v),这个位置已经到了深度值是 1.0 的地方(见图7);
  • 使用 A 和 B 之间的二分查找来计算 VD' 和高度域表面的相交点;
  • 使用计算出来的相交点的贴图坐标来渲染每一个片断的属性(比如:法线、深度、颜色,等等)。

图7:使用 A 和 B 之间的二分查找来计算 VD' 和高度域表面的相交点,数字表示计算中点的顺序。

  这个过程见图7。点A相关联的深度值为 0 ,点B关联的深度值为 1.0 。在每一步里面,都要计算出当前区域段的中点,然后把平均深度值和平均贴图坐标赋值给它。在图7这个例子里面,圈1表示了第一个中点。贴图坐标的平均值用来访问深度图。如果储存在深度图中的深度值小于计算出来的深度值,表示这个点在高度域内(比实际高度低),见图7中的圈1。二分查找每次处理一个点在表面内,另一个点在表面外。在图7的例子里,圈圈里的数字表示了寻找中点的顺序。根据实际应用,我们发现二分查找8步就可以的到足够满意的结果了。这相当于深度域的级别可以达到 2^8=256 个平均间隔。有的研究者使用 64 个轴对齐的 2D 贴图片组成 3D 贴图来渲染置换贴图(displacement map) [Meyer and Neyret 1998; Kautz and Seidel 2001]。读者应该注意到了我们的贴图插补方式的逼近方法所带来的优势。因此,基于 3D 贴图映射的技术需要在切片之间查找,而我们的方法则可以避免这个问题。因为深度图作为贴图来处理和存取,因此贴图过滤(比如双线过滤)可以保证高度域的表面是连续的。所以呢,我们提出的这个技术可以可以非常近距离的观察表面,同时不会有显著的瑕疵(见图 16 和图 17 )。

  如果视线与高度域表面相交不止一个点的时候,上面提到的二分查找的方法就可能会带来不正确的结果,见图8。在这个例子里,第一次找到的中点对应的深度值要比深度图中实际的深度值小。这个时候用二分查找会继续找到圈 3 这个相交点,这显然是错误的。为了避免错过第一次相交,我们使用线形查找的方式来处理。从点A开始,我们沿着线段AB每次增加 d 的距离,直到找到在表面内的第一个点(图9)。如果显卡支持 shader model 3.0,d 的值可以作为一个片断函数来动态取得,这个函数根据 VD' 和表面法线插值的夹角来计算。随着这个角度的增加,d 的值随之减少。在我们当前的实现里面,沿着线段AB,没有超过32步。要注意的是,因为线性搜索不包含任何依赖贴图读取的操作,所以这个处理速度非常快,以至于我们可以同时处理好几个贴图块。

图8:二分查找的错误。A和B之间的中点是在高度域表面之外的,但是视线已经穿透了这个表面。

图9:线形查找,从A到B,找到的第一个在高度域表面内的点。

  当第一个在高度域表面内的点被确定下来之后,开始使用最近一个在表面外的点和当前的那个点做二分查找。在这里,就需要一个更小数字来做二分查找的分量。比如说,如果两个线性查找的点之间的深度区域是 1/8,那么一个6步的二分查找相当于把间距细分为 512(2^3 * 2^6) 个级别。

3.1 表面自阴影

  阴影渲染是一个可见性的问题 [Williams 1978]。因此,要确定一个片段是否在阴影中也是一个类似的处理过程。在这里,我们通过检测光线和高度域表面的交点是否在点 C 和实际点之间来确定这个点是否在阴影内 (图10)。在这里,交点存在的话,这个点就在阴影内。要注意的是,实际上没有必要去找真正的交点,可以通过一个相似的策略来简单的判定是否有交点。图14和图19(c)展示了包含自阴影的浮雕贴图映射的例子。

图10:阴影计算。检测光线和高度域表面的交点是否在点 C 和视线与表面第一个交点之间。

 4 双深度浮雕贴图

  这一节内容介绍了一个浮雕贴图的扩展,使用了两层深度信息。这个扩展被称为双深度浮雕贴图,能够仅仅使用一个浮雕映射的多边形来近似的表现不透明的、闭合表面的物体。

 图11:双深度浮雕贴图。合并前后深度层可以为一个物体产生紧密地边界。

  原本尝试过使用一个单一的浮雕贴图来映射一个物体,但是发现没有足够的信息来做适当的改造。特别是没有物体背面的信息(图11左)。在这里,反面渲染技术可以扩展这个表面形成“外壳” [McMillan 1997]。外壳可以消除为了描述物体背面深度而需要的额外的扩展层(图11中)。两个深度层合并能够为物体产生一个更紧密的边界(图11右),并且带来了更好的渲染质量。

  需要注意的是,这种方式不是一种严格的分层深度图(LDI) [Shade et al. 1998]:两个深度层通过正交距离计算整合到一起,它不含有颜色信息。此外,第二个深度层并不直接用于渲染,只是用来对光线高度域交点的搜索做约束。和其它替代技术一样,这个方法不仅限于固定视点观察。它可以用于非常大范围角度的观察。

  两个深度贴图和法线可以储存在一张贴图中。因为所有的法线都是单位长度的,所以我们只需要储存法线图的 x 和 y 两个分量,另外两个通道就可以留给两个深度层。法线的 z 分量可以通过在 shader 中的语句 z = sqrt(1 - (x^2 + y^2)) 来计算得到。图 12 展示了两个模型的双深度贴图:上方的天使和下方的耶稣。深度层的深度值都是参照同一个参考平面得出的。图 12 里面,左边的图是物体的正面,右边的图是反面。双深度层的渲染过程和第3节描述的很相似。只不过在这里,判断的过程是:正面深度<=点深度<=背面深度。

图12:双深度贴图。正面(左)和反面(右)。上面一行是天使的模型,下面一行是耶稣的模型。

  图13对单面和双面深度浮雕贴图的渲染作了比较。在单深度情况下,使用的是正面深度。这里所有的都是渲染了一个有贴图映射的多边形。左边我们看到的就是单深度贴图渲染的效果。注意这里天使的头发和右翅膀出现的问题,同样,在耶稣的头发和侧面也有问题。耶稣的图像在一些细节的地方出现了聚焦错误。

图13:使用单深度贴图(左)和双深度贴图(右)地渲染效果。
注意,左边图像的边缘和右边图像的边缘不一样。模型上添加了一个木纹贴图。

 5 结果

  我们通过这篇文章描述了这个技术、通过 Cg 的片断程序实现了它、并且通过这个技术把表面细节映射到了很多多边形物体上。映射的过程是很简单的,在模型的顶点数据中使用贴图坐标、切线向量、法线向量、次法线向量。除了使用岩石贴图的图2、图5中的 Bronto,图1(右)和图17的茶壶之外,所有这篇文章里面使用的其余贴图都是 512*512 的 RGBa 贴图。这包含了双深度浮雕信息的描述。Bronto 使用的石头的贴图是 256*256 大小的。深度图使用了每个像素 8 位来量化。量化的深度值可以在 shader 里面进行调整。所有的场景都使用了 800*600 的分辨率,每秒 85 帧,和显示器的刷新率同步。硬件配置是:CPU 3G,内存 512 MB,显卡是 GeForce FX6800 GT 搭载 256 MB 显存。

  图 1 展示了使用三种不同的浮雕贴图映射渲染的茶壶,包含逐像素光照和自阴影。图 2 展示了一个由人物、茶壶和墙组成的场景,所有表面都应用了浮雕贴图。应用了浮雕贴图的物体和场景的别的部分很自然的融合在了一起。注意投在茶壶上的阴影是通过它自己的浮雕贴图产生的。图 14 展示了对这个茶壶的的近距离观察,所有的表面细节都能够被展示出来,注意它的阴影,还有由于视察产生的闭塞。茶壶使用的浮雕贴图是从图 3 中的深度图中取得的。

图14:对图 2 中的茶壶的的近距离观察。注意阴影。茶壶使用的浮雕贴图是从图 3 中的深度图中取得的。

  图 15 展示了另一个角度对应用了石头贴图的 Bronto 的观察。注意这个贴图是如何通过恰当的调整然后映射到多边形表面上,从而产生非常逼真的视觉效果。其中浮雕的细节部分是由逐像素光照来着重表现的。

图15:Bronto,一个使用浮雕贴图来渲染的游戏角色。

  图 19 对图 6 中的多边形使用了三种不同的技术进行渲染的结果进行了比较。这个高度域同时包含了平滑的和尖锐的表面特性,并且对各种技术正确表现表面细节的能力进行了测试。这些图像都是从同一个视点创建的,分别使用了:(a) 凹凸贴图,(b) 视差贴图,(c) 有自阴影的浮雕贴图。我们发现浮雕贴图能够成功的为这个物体产生正确的图像,而凹凸贴图和视差贴图都失败了。这些技术产生的图像呈现了一些区别。在图 19(c) 里面我们还能够看到表面浮雕产生的阴影。附加的视频提供了更多的场景的例子,包含了实时记录的阴影和逐像素光照。

图19:三种不同技术在相同的视点下对同一个多边形进行渲染:
(a) 凹凸贴图 (b) 视差贴图 (c) 带有自阴影的浮雕贴图。一张 2D 木纹贴图映射到了表面上。

 

  图 16 和图 17 展示了两个近距离观察的浮雕映射的表面。用来渲染的贴图的规格是 512*512 和 256*256 的。我们注意到这些近距离观察图的边界非常清楚。浮雕贴图映射表面的正确的交点(例如包含多个浮雕贴图的物体)能够用来填充 Z 缓冲。在片断程序里可以计算出每个片断相应的 3D 坐标向量。因此,我们可以计算出表面高度域交点在 3D 空间中的位置。然后我们就可以计算出与它相一致的深度值来进行 Z 测试或者更新 Z 缓冲。图 18 展示了一个浮雕贴图的表面与三个有贴图的球体相交的情况。注意它们的边界是正确相交的。

图16:浮雕贴图映射的茶壶(上)。近距离观察,使用了 512*512 的石头纹理浮雕贴图(下)。

图17:浮雕贴图映射的茶壶(上)。近距离观察,使用了 256*256 的岩石纹理浮雕贴图(下)。

图18:浮雕贴图的表面与三个球体相交。注意它们的边界是正确相交的。

  如果一个高度域的表面特征太细了,那就很有可能会在线性搜索的时候被遗漏。这是走样的问题,没有完美解决方案。在实际应用中,虽然我们曾经创建和渲染过很多,但是从来没有遇到过这种情况。

  自从我们使用了 mip map [Williams 1983],贴图缩小让我们的高度域表面只需要根据过滤后的深度图版本重新取样。虽然这样不是严格意义上正确的,但是它让我们不需要为每一个贴图级别都创建一个分裂出来的深度图(可以通过插值方式来产生),并且可以帮助减少人为的动态失真。同时它还能够改善渲染效率,因为较小的贴图能够增加 cache 的命中率。  

6 总结

  我们已经展示了把浮雕贴图实时映射到任意多边形模型上的技术。这个映射是在切线空间完成的 [Peercy et al. 1997],这一点保证了它可以被应用在变形表面上。这项技术可以产生正确的自闭塞、相交、自阴影、所有的标准逐像素光照,以及贴图过滤。我们同时描述了一个基于二分查找的有效的算法,来在直线和高度域之间寻找交点。表现高度的深度贴图经过贴图过滤之后,重新取样的高度域表面还是可以被继续使用的,并且允许用户对表面细节进行近距离的观察。由于这项技术实现起来非常小巧和灵活,因此成为游戏开发中一个非常有吸引力的选择。

  我们对浮雕贴图作了“双深度贴图”的扩展。这个新的方法避免了 3D 物体由于使用单个深度贴图所引起的视差。通过用这样的方法渲染一个多边形,可以在相当大的角度上动态的替代直接渲染这些物体。

  我们当前的实现方法中还没有加上处于阴影中的物体的细节。增加对处于阴影中的物体的细节描绘这一点对于增强真实感非常有价值,我们正在寻找一个方法来代替现在正在使用的方法。

参考

  • BLINN, J. F. 1978. Simulation of wrinkled surfaces. In Proceedings
    of the 5th annual conference on Computer graphics and interactive
    techniques, ACM Press, 286–292.
  • CATMULL, E. 1974. A Subdivision Algorithm for Computer Display
    of Curved Surfaces. PhD thesis, University of Utah, Salt
    Lake City, Utah.
  • COOK, R. L. 1984. Shade trees. In Proceedings of the 11th
    annual conference on Computer graphics and interactive techniques,
    ACM Press, 223–231.
  • ELHELW, M. A., AND YANG, G.-Z. 2003. Cylindrical relief
    texture mapping. Journal of WSCG 11 (feb).
  • GUMHOLD, S. 2003. Splatting illuminated ellipsoids with depth
    correction. In 8th International Fall Workshop on Vision, Modelling
    and Visualization, 245–252.
  • HEIDRICH, W., AND SEIDEL, H.-P. 1998. Ray-tracing procedural
    displacement shaders. In Graphics Interface, 8–16.
  • HEIDRICH, W., DAUBERT, K., KAUTZ, J., AND SEIDEL, H.-P.
    2000. Illuminating micro geometry based on precomputed visibility.
    In Siggraph 2000, Computer Graphics Proc., 455–464.
  • HIRCHE, J., EHLERT, A., GUTHE, S., AND DOGGETT, M.
    2004. Hardware accelerated per-pixel displacement mapping.
    In Graphics Interface, 153 – 158.
  • KANEKO, T., TAKAHEI, T., INAMI, M., KAWAKAMI, N.,
    YANAGIDA, Y., MAEDA, T., AND TACHI:, S. 2001. Detailed
    shape representation with parallax mapping. In Proceedings of
    the ICAT 2001, 205–208.
  • KAUTZ, J., AND SEIDEL, H.-P. 2001. Hardware accelerated displacement
    mapping for image based rendering. In Proceedings
    of Graphics Interface 2001, 61–70.
  • MALZBENDER, T., GELB, D., AND WOLTERS, H. 2001. Polynomial
    texture maps. In Siggraph 2001, Computer Graphics Proceedings,
    519–528.
  • MAX, N. 1988. Horizon mapping: shadows for bump-mapped
    surfaces. The Visual Computer 4, 2, 109–117.
  • MCMILLAN, L. 1997. An Image-Based Approach to Three-
    Dimensional Computer Graphics. PhD thesis, University of
    North Carolina at Chapel Hill, Chapel Hill, NC.
  • MEYER, A., AND NEYRET, F. 1998. Interactive volumetric textures.
    In Eurographics Rendering Workshop 1998, 157–168.
  • OLIVEIRA, M. M., BISHOP, G., AND MCALLISTER, D. 2000.
    Relief texture mapping. In Siggraph 2000, Computer Graphics
    Proceedings, 359–368.
  • PATTERSON, J., HOGGAR, S., AND LOGIE, J. 1991. Inverse
    displacement mapping. Comp. Graphics Forum 10, 2, 129–139.
    PEERCY, M., AIREY, J., AND CABRAL, B. 1997. Efficient bump
    mapping hardware. In SIGGRAPH ’97, 303–306.
  • PHARR, M., AND HANRAHAN, P. 1996. Geometry caching
    for ray-tracing displacement maps. In Eurographics Rendering
    Workshop 1996, Springer Wien, 31–40.
  • SCHAUFLER, G., AND PRIGLINGER, M. 1999. Efficient displacement
    mapping by image warping. In Eurographics Rendering
    Workshop 1998, Springer Wein, 175–186.
  • SHADE, J. W., GORTLER, S. J., HE, L.-W., AND SZELISKI, R.
    1998. Layered depth images. In Siggraph 1998, Computer
    Graphics Proceedings, 231–242.
  • SLOAN, P.-P. J., AND COHEN, M. F. 2000. Interactive horizon
    mapping. In Proceedings of the Eurographics Workshop on Rendering
    Techniques 2000, Springer-Verlag, 281–286.
  • SMITS, B. E., SHIRLEY, P., AND STARK, M. M. 2000. Direct
    ray tracing of displacement mapped triangles. In Proceedings
    of the Eurographics Workshop on Rendering Techniques 2000,
    Springer-Verlag, 307–318.
  • WANG, L., WANG, X., TONG, X., LIN, S., HU, S., GUO, B.,
    AND SHUM, H.-Y. 2003. View-dependent displacement mapping.
    ACM Trans. Graph. 22, 3, 334–339.
  • WANG, X., TONG, X., LIN, S., HU, S., GUO, B., AND SHUM,
    H.-Y. 2004. Generalized displacement maps. In Eurographics
    Symposium on Rendering 2004, EUROGRAPHICS, 227–233.
  • WILLIAMS, L. 1978. Casting curved shadows on curved surfaces.
    In Siggraph 1978, Computer Graphics Proceedings, 270–274.
  • WILLIAMS, L. 1983. Pyramidal parametrics. In SIGGRAPH ’83:
    Proceedings of the 10th annual conference on Computer graphics
    and interactive techniques, ACM Press, 1–11.

附录

Cg 片断程序



译者简介

卢立祎(bad_fish)

  专注于高性能3D图像实时渲染和二进制跨平台复用技术。西南交通大学软件工程工学学士。多年游戏开发、架构设计经验。曾经参与多款单机、网络游戏开发。现任职于网易互动娱乐杭州研究中心,当前正在做一个很有意思的项目。
电子邮箱:luliyi1024@gmail.com
我的空间:http://luliyi1024.googlepages.com/