【译】《GPU GEMS 3》----Next-Generation SpeedTree Rendering 翻译[1]

来源:互联网 发布:linux 命令抓包 编辑:程序博客网 时间:2024/05/21 20:24

      最近在研究树木的渲染,看了一些相关的技术说明,几乎都是老外写的,再次为中国游戏产业的前景感到担忧。看了几天的英文,索性也把其中的重要部分翻译了出来,在这里与大家共享,先贴出《GPU GEMS 3》第4章的翻译,第一次写翻译,不免有错漏的地方,欢迎大家指出。如需转载,请先与本人联系。name:LeYond ,qq:413952706

 

 

第四章 下一代SpeedTree渲染

4.1. 导言

    SpeedTreeIDV开发的中间层程序包,用以渲染实时树木。游戏使用SpeedTree在选择如何渲染SpeedTrees有很大的自由度。我们讨论几种高质量的GeForce880的特性,对下一代SpeedTree进行扩展。首先边缘裁剪为树枝和树干的轮廓增加细节。其次,阴影贴图在树叶个体级别上增加真实的自阴影。除此之外,我们进一步简化叶子双面的光照模型和HDR的渲染。最后,伴随Alpha通道的多重采样抗锯齿产生非常高的视觉效果,避免了走样的现象。

4.2. 轮廓裁剪

    树枝和树干都是有机、不规则且复杂的。图4-1就是一个典型的例子:虽然树枝都接近圆柱体,但轮廓的细节部分显得粗糙且不规则。一个中等精度或低精度的树干模型包含1000个面,是不能表现这些细节的。由此产生的笔直的多边形边缘是很难发现的,但它所生成的计算机图像中却又显得重要。

 

    许多算法都可以帮助在树枝上长生大量的细节,就如4-1所看到的。最原始且最广泛的便是用凹凸贴图技术。凹凸贴图技术在树干的内部(即非边缘)可生成不错的效果,就像图4-1中绿色方框里显示的那样。但是,他完全不可能在边缘生成如蓝色方框里显示的高度细节。同时它也不能生成因观察者的变化而产生的深度视差效果。有两种比凹凸贴图更好的技术:雕刻纹理relief mapping(Oliveira and Policarpo 2005),视差纹理parallax occlusion mapping (POM)(Tatarchuk 2006)。这两种技术都是在物体的表面进行光线跟踪,他们能增加视差和自身遮蔽的效果。(我们使用雕刻纹理来包含这两种效果。)在视察贴图中,该效果再次别限制于物体的内部,物体的轮廓毅然没有改变。题刻纹理提供了几种扩展,其中之一支持轮廓部分,但它需要而外的预处理来实现它。最终,模型的花纹和位移纹理都能同时被应用,但如果要渲染一个充满树木的森林的话,它的巨大开销在几何处理中是不值得的。

 

    我们的方法,将在树干部分使用雕刻纹理,使得在树干内部产生细节,并增加技术来产生轮廓细节。这些都不被SpeedTree的着色器支持,但他们能够简单地加入,因为可以使用工具、文件还有在API中增加自己的函数,包括附加的纹理。

 

    在轮廓部分,我们使用自己开发的轮廓裁剪的技术。虽然这个技术不像Sander et al. 2000中描述的那样,但效果非常相似。我们的技术是在物体的轮廓上垂直挤出薄片。这些轮廓进行像雕刻纹理中光线在高度图中的相似的计算。有了雕刻纹理在树枝多边形上的使用,这个技术不需要而外的预计算。

 

4.2.1 轮廓薄片的挤压

    轮廓渲染的第一个不走是挤压薄片。我们通过平滑每个顶点的法线来使轮廓的边缘包含在三角形中。如果顶点法线和观察向量的点乘在三角形边缘改变符号,我们则在计算已经变换的观察向量和已经变换的法线的点积,在这个三角形边缘上,且点积等于0的位置新建一个顶点。图4.2是此步骤的示意图。

4-2. 在一个观察方向,单个三角形上边缘的挤压

 

(a)顶点已经平滑的三角形 (b)观察向量的计算 c)轮廓断点的计算         (d)薄片挤压

 

原创粉丝点击