翻译 Albert Julian Mayer 关于虚拟纹理的论文(2. 相关工作)

第2章:相关工作

本章旨在概述纹理映射的历史,特别强调对特大纹理的支持,并揭示了当前最先进技术(即虚拟纹理)的进展。 本章首先简要介绍纹理映射,然后研究处理特大纹理数据集的不同方法,即压缩、合成 和 多种缓存及变种。本章最后对虚拟纹理技术的当前状态进行了研究。

2.1 基础

纹理映射是一种在不增加几何复杂性的情况下添加表面细节的技术,于 1974 年在 [Cat74] 中被开创,可以称为计算机图形学中最成功的想法。它已经在 80 年代的第一批计算机动画中使用,现在作为实时渲染、CGI、计算机游戏、可视化等的一个组成部分无处不在。纹理贴图还通过为法线、镜面反射、透明度、光、阴影以及漫反射和环境反射等属性引入额外的纹理贴图,将其范围扩展到 “表面颜色” 之外 [Hec86]。实时纹理映射在 90 年代初期由计算机游戏开创 [Wik10b],并且在 90 年代后期将纹理映射作为第一批用户级 3D 图形加速器的一个组成部分 [Wik10a]。这进一步表明:今天的纹理映射几乎是所有计算机图形应用程序的一个组成部分。虽然已经有很多纹理映射研究,例如在参数化和(预)过滤 [Hec86] 领域,但本论文侧重于具有无法容纳在内存中的特大尺寸数据集纹理映射。不幸的是,迄今为止,大多数关于核外渲染的研究都只专注于管理几何复杂性,[GM05] 提供了对常用技术的概述,[CESL+03] 是越来越多的解决方案的一个例子。

纹理映射的工作原理是将称为纹理的图像(由“纹素”而不是“像素”合成)投影到几何图元上,以添加颜色或模拟更多几何细节。为了能够以所需的方式将纹理定位、定向和缩放到几何体上,需要某种形式的“纹理参数化”。进行纹理参数化的最常见方法称为 “UV 映射”,这里 3D 对象的每个顶点都附带了数据:“u”和“v”,它们索引到纹理的二维图像平面。从三维对象(在对象空间 x/y/z 中)到二维纹理(在“纹理空间”u/v 中)之间建立这种映射也称为“UV 展开”。展开过程中的两个目标是:“最小化纹理中未投影到模型上的空间浪费”和“最小化纹理失真”。

在使用纹理映射进行渲染期间,会使用 “纹理过滤”。如果纹理对象离虚拟相机位置太近,以至于每个纹素映射到屏幕的多个像素,就会发生 “纹理放大”“放大过滤” 可以关闭——即,使用最近的纹素值(OpenGL 术语中的 GL NEAREST)或双线性(GL OpenGL 术语中的 LINEAR )——这意味着每个屏幕像素的纹理贡献由四个最近的纹素。不过,在讨论纹理过滤时通常指 “缩小过滤”。这里指物体离得更远,因此多个纹素应该共同贡献于屏幕上的单个像素。然而,在可接受的性能下,每次发生这种缩小时都无法从大量纹素中计算平均值。因此,需要用一种称为 “mipmapping” 的技术:纹理不仅以其完整分辨率存储在显卡上,而且以二分之一、四分之一、1/8、… 4x4、2x2 和 1x1 分辨率版本存储。同一纹理的这些多个不同大小的版本称为 “mipmap-chain”。全分辨率的基本版本称为“mipmap - level 0”,半分辨率版本称为 “mipmap - level 1”,依此类推。通过这种技术,每个纹理的总内存需求仅增加了三分之一。在渲染过程中,可以选择最接近的匹配mipmap级别(称为“选择细节层级”),也可以选择两个最接近的mipmap级别并对结果进行线性插值,称为“三线性过滤”。

硬件加速实时渲染期间的一个问题是:更改当前纹理是一个昂贵的过程(也因为它需要分开Draw Call)。“纹理图集” 是这个问题的一个解决方案,它是将多个纹理打包成一个更大的纹理,并使用这个更大的纹理代替 [Cor04]。这允许通过一次 Draw Call 渲染更多几何体,并且需要更少的纹理切换。然而,纹理坐标的调整显然是必要的,并且可能存在与纹理过滤相关的一些问题[Cor04]。我们将组装在一起构建为更大纹理的单个纹理称为“子纹理”。打包纹理图集应遵循一些约束,以防止出现称为 “mipmap-chain 污染” 的问题——当下采样生成 mipmap-chain 时采样了来自不同子纹理的相邻纹素时,就会发生这种情况。确保子纹理的大小为 2 的幂且不会不必要地跨越 2 的幂边界线可防止这种污染 [Cor04]。

2.2 纹理压缩

纹理压缩将图像压缩方法应用于纹理数据,以减少其内存消耗(和带宽要求)。与图像压缩的主要区别在于,在纹理采样(随机访问)期间需要对纹理的任意部分进行非常快速的解压缩。此外,一些纹理(如法线贴图)不会表现出与普通图像相同的视觉属性。纹理压缩在 [BAC96] 中首创,他们通过使用矢量量化实现了 1:35 的压缩比(但需要额外存储一个大型的 “codebook”)。内置于所有最新图形加速器中的 DXT 系列压缩算法基于对矢量量化的修改,但仅实现了 1:4 ~ 1:8 的压缩率 [Wei04]。显卡内置的新一代纹理压缩格式,即BPTC(BC6/BC7)只能达到1:3 ~ 1:6。然而,可编程 GPU 理论上允许使用硬件不直接支持的压缩格式。

在 [KE02] 中提出了通过自适应分辨率和利用自由空间进行压缩,但该技术主要适用于更高维度,并且在过滤和 mip 映射方面存在问题。

[LD07] 描述了一种用于纹理参数化的新数据结构,它通过将方形纹理图块存储到围绕表面的八叉树的叶子中来工作,这种方法原生就支持自适应分辨率。

虽然纹理压缩减少了给定纹理的内存占用,但它减少的比例是一个常数因子,因此对于使用大型纹理集来说,这不是一个完全的解决方案,但应该被视为一种辅助。 自适应分辨率是一种有用但也有限的内存节省技术。 一方面,它仅适用于表现出强烈变化的纹理分辨率的单个大对象(因为不同的对象可以用不同的分辨率进行纹理处理)。 此外,可以通过使用具有不同分辨率的多个纹理或特殊的 UV 展开来对对象进行纹理化来解决该问题。 此处还应注意,虚拟纹理也支持有限的自适应分辨率属性,请参阅第 4.1.6 节。

2.3 纹理合成

纹理合成可以看作是一种更极端的纹理压缩形式,它利用了结构化的内容,因此允许压缩比接近无穷大 [Wei04]。 [Wei04] 将纹理合成算法分为三个不同的类别:

  • 所谓的“基于样本的技术”,可以从小图像样本中合成任意大的纹理。 [WLKT09] 指出了几种基于样本的合成方法,包括基于像素的合成和基于patch的纹理合成。大多数方法太慢而无法实时执行,必须预先计算生成的纹理 [Wei04],因此不会节省内存。
  • 通过生成纹理坐标而不是像素来工作的方法[Wei04]。
  • 程序化生成纹理算法适用于纹理的实时生成(例如,在 GPU 上),但仅限于特定的重复纹理类,如木材、大理石等 [Wei04]。

纹理平铺:纹理平铺是一种特殊形式的纹理合成,它使用一个或几个小的纹理平铺来生成更大的纹理。最简单的形式是重复具有无缝边缘的特殊纹理。尽管由于重复很明显,结果通常在视觉上不够充分,但这是最常见的纹理合成形式。甚至每个显卡都内置了对这种纹理合成方法的支持,并通过将纹理 wrap 类型设置为“重复”或“镜像”来激活。这个简单的方案也是克服游戏中图形内存限制的最常见方法:设计师使用多个混合的重复基础纹理层(有些可能具有较低的分辨率以破坏平铺的穿帮)并通过添加细节纹理来构建他们的游戏世界[MG08]。此过程的目的是模拟一个具有独特纹理的世界,其中的纹理几乎无法容纳到内存中。
还有更复杂的纹理平铺方法,它们使用多个基础平铺,即使使用单层也能提供更好的结果。 [LN03] combines patterns procedurally using an indirection texture。 [SD03] 介绍了称为王浩瓷砖的随机平铺,它的结果很有趣,这种方法后来在 [Wei04] 中为可编程 GPU 实现。

尽管纹理合成可以接近无限压缩,因此即使对于具有任意纹理细节要求的场景似乎也解决了内存消耗的问题,但它不能归类为特大纹理贴图渲染的完全解决方案。有几个原因:

  • 许多纹理合成技术无法在 GPU 上执行,必须预先计算纹理,因此实际上不会节省内存。
  • 纹理合成主要用于生成表面颜色纹理。
  • 纹理合成只能生成一些图像类。
  • 最重要的是:纹理合成不是一种普适的解决方案,它不能将给定场景转换为具有看起来完全相同的另一个场景。

因此,纹理合成是一种特殊情况下的解决方案,但它仍然可以用作虚拟纹理解决方案中的辅助技术。例如,在创建具有独特纹理的大型场景时,从头开始创建每个像素实际上是不可能的。纹理合成可用于场景的初始纹理,其中可以通过细节纹理和更多变种进行改进。其次,纹理合成可以与虚拟纹理结合使用,例如,用合成纹理来覆盖场景的某些部分来降低性能要求。在任何情况下,现代 GPU 的可编程性,和现代GPU的性能,都可以实现比 “重复单个图块”更多的纹理合成方法,这一事实在很大程度上被忽略,导致很多游戏世界仍然由简单的图块和混合组成。然而值得怀疑的是,对比一个可以组合所有层(包括高质量的预计算照明)的成熟虚拟纹理解决方案,复杂场景使用多层的合成纹理是否可提供更高的性能(更不用说视觉质量了)?

2.4 显存虚拟化

Windows Vista 显示驱动程序模型 (WDDM) 和 Direct3D 10 图形 API 为应用程序提供“虚拟化”显存 [Cor06]。 这是一种更通用的技术,用于在 GPU 上使用太大而无法放入图形内存的资源,当然它也适用于纹理。 该方法的工作原理类似于无处不在的虚拟内存:如果数据超出内存,则将其调出到较慢的存储介质(标准情况下为磁盘,在这种新情况下为主内存)并按需调回。该方法还允许使用(仅)大于主内存的纹理数据集,因为主内存已经被虚拟化。 虽然肯定有用,但这种技术在渲染具有大量纹理数据的场景的用例中存在几个严重的缺点,因此不能将其视为(完整的)解决方案。

  • 尽管此技术的详细信息非常稀少(即使在 Direct3D 10 SDK 中),但我们预计它会比应用程序中实现的(特定于纹理)解决方案慢得多,因为 GPU 会因 “page fault” 而停滞,直到需要的数据被 “page-in”。较新版本的 Direct3D 10.1 允许 GPU 即使在 “page fault” 之后继续执行其他工作,但负责该错误的渲染命令仍然停止,直到 “page-in”。 相比之下,虚拟纹理允许应用程序继续全速渲染,即使某些纹理块丢失,并在过渡时间内使用较低分辨率的回退纹理。
  • 对于以可渲染格式(即未压缩或 DXT/BPTC 压缩)超过主内存的纹理数据集,依赖此技术是不可行的,因为此项技术的前提是 “主内存也已虚拟化”。 从性能的角度来看,这是令人望而却步的。 此外,就其本质而言,此方法需要在渲染之前将整个纹理数据转换为可渲染格式(即未压缩或 DXT/BPTC 压缩),这将导致上述内存 oversubscription 。 在像虚拟纹理这样的纹理流专用的解决方案中,只有必要的纹理部分可以根据需要从 JPEG 等高度压缩格式中解压缩,从而导致内存需求不成比例地降低。
  • 它只能在Windows Vista 且具有 Direct3D 10 功能的 GPU 的 PC 上使用。

2.5 纹理流(Streaming) & 缓存

即使应用纹理压缩,纹理数据也可能超过可用内存。但实际上,在任何时间点上,整个纹理数据中都只有很小的子集是真正被需要的。 屏幕上的每个像素需要 1 - 32 个纹素(取决于过滤)。 纹理流利用这一事实,允许仅使用存储在显卡上的整个纹理数据的子集进行渲染。 纹理流和纹理缓存(当然也可以进行流处理)之间的区别在于粒度:纹理流针对整个纹理(或针对 mipmap 级别)进行操作,而缓存对整个纹理的一部分起作用。

2.5.1 纹理流(Streaming)

纹理流是一种广泛应用于计算机游戏中,用来减少内存使用的工具。它的思路是:不一次加载所有纹理,而是根据需要加载和卸载它们。其中困难的部分是:确定何时加载或卸载纹理。 简单的系统将场景细分为单独的不同区域,并在进入区域或建筑物时根据预定义的列表加载或卸载纹理。但是这种将场景细分为更小子场景的方式可以归类为“避免”而不是“解决”问题。根据 [MG08] 的说法,纹理流正在成为游戏中的必需品。 纹理流可以在每个 mipmap 的基础上完成,以获得更细的粒度以增加内存的节省,但根据 [MG08],在 PC 上基本不可能在不卡顿的情况下完成。 纹理流的一个缺点是在运行时创建和销毁纹理的性能问题 [MG08],这可以通过复用相同大小的纹理来避免。

2.5.2 纹理图块缓存

将纹理(或更好的是,整个 mipmap 链)拆分为图块允许纹理以更细的粒度流式传输,并会让内存节省更高(即,more output- sensitivity)。 曾经这些系统的最大缺点是:要么几何图元必须与图块边界对齐——它强制进行了不需要的细分,要么必须使用昂贵的剪裁和遮罩[CNF+07]。 随着可编程图形硬件的出现,这一限制已不存在,这让我们可以重新审视它的重要性。Clipmapping虚拟纹理都基于纹理图块缓存。纹理图块缓存除了“在图块上进行操作”之外,它与以前的纹理流解决方案的主要区别在于:纹理图块缓存需要自动确定所需的纹理图块。

2.5.3 Clipmapping

Clipmapping 是一种解决方案,允许在地形网格上使用非常大的纹理,而在运行时仅使用纹理的一小部分(“剪辑”的部分)。[Cor07] 将Clipmapping定义为:

partial representation of a mipmap pyramid which holds all information needed for texturing at every single frame.
mipmap金字塔的部分表示,它包含了纹理在每一帧所需的所有信息。

在这里插入图片描述
由于地形大部分是平坦的(二维)并且用单个纹理线性映射,我们可以在纹理空间中定义一个“兴趣中心”,它直接被虚拟相机的世界空间位置所确定。纹理所需的分辨率在围绕该兴趣中心的同心圆中降低,因为这些距离较远的区域也会映射到较小的屏幕空间,如上图所示。因此,最高分辨率数据(mipmap 级别 0)仅加载在兴趣中心周围的平方区域。这个正方形的大小被称为 “Stack Size”,这里的纹素到像素的比例近似 1:1 [Cor07]。From higher mipmap-levels similarly sized portions are loaded, but each of them covers a four-fold increased world-space region. 当兴趣中心移动时,一种称为“环形寻址”的巧妙更新机制减少了要完成的工作量。

Clipmapping 率先在 SGI 使用,在 1996 年首次提到,后来在 [TMJ98] 中进行了描述。最初的实现需要 SGI 提供的专用图形硬件,但几年后,GPU 日益增强的可编程性为在商业硬件上的实现铺平了道路,这就是后来的研究[Cor07]、 [SLT+07]、 [CNF+07]。 其他研究已经完成了类似 Clipmapping 的系统,使它们适应非颜色数据 [EC06] 和动态纹理更新 [TSH09]。

[Hu¨t98] 发明了一种称为 MP-grids 的 Clipmapping 的替代方案,也专门用于地形渲染。 与 Clipmapping 相反,它们将整个纹理平铺成几个 mipmap 金字塔,所需的纹理部分由 “几何测试” 确定,而不是指定纹理空间中的 “兴趣中心” [Hu¨t98]。 他们还提出了修改硬件以以避免实时剪辑,但他们的修改并未被采纳。

2.5.4 MegaTexture

2005 年,id Software 发布了一款电脑游戏,该游戏将使用一种名为“MegaTexture”的新技术,允许在地形上使用 32k^2 的高分辨率像素纹理 [iS05]。关于这项技术确切的实现很少见,直到 2007 年游戏发布后,才被确认只是使用片段着色器 [CC05] 为商业硬件实现类似 Clipmapping 的系统。然而,就在宣布“MegaTexture”之后不久,John Carmack 宣布他打算修改该技术以适用于任意几何体 [Car05],并且在 2006 年他确认更新的版本(后来称为“MegaTexture v2”)已经适用于任何几何体 [DC06]。同样,关于确切实现的细节很少,但它激发了人们对 虚拟/独特 纹理的浓厚兴趣,最终在 2009 年 [vW09b] 确认“MegaTexture v2”本质上是从那时起其他人所描述和实现的虚拟纹理。

2.5.5 虚拟纹理

虚拟纹理通过一层封装(即 pagetable,“页面表”)将之前的技术泛化。类似于现代操作系统中的 “虚拟内存”。(纹理)页面表允许每个片段着色器根据标准OpenGL的 mipmapping 计算出的所需分辨率,来访问合适的图块,而不是依赖于探索式的方法(比如 Clipmapping 所使用的到视点的距离)。换句话说,虚拟纹理与之前方法的主要区别是:它允许逐像素地选择 “细节级别” 而非先前的逐几何图元。顺带一提,这也解除了先前只能渲染地形的限制,和需要图块对齐几何体细分的限制。不同的方法在检测和处理 “page faults” 的方式上有所不同。 虚拟纹理的新功能包括在一次调用中渲染所有几何图形、正确过滤(参见第 4.5.2 节)和处理动态几何图形。对于像素着色器的封装,是采样一个页面表纹理来获得坐标转换,这在[KE02]首次提到,只是上下文略有不同。

第一个虚拟纹理系统(在我们的意义上)是由 3Dlabs 开发的,并内置于他们的显卡中,作为支持具有大纹理的客户端应用程序的一种方式 [Sem99]。系统将纹理分成 4KB(322 像素)页面,并使用 page-fault DMA引擎从主内存按需获取这些页面,无需 CPU 干预 [Sem99]。一个集成的虚拟内存管理单元 (MMU) 提供了必要的地址转换。与后来的虚拟纹理系统不同,该系统在渲染期间无法回退到较低分辨率的页面,而是引入不受欢迎的停顿。此项专有的扩展类似于 SGI 对 Clipmapping 的支持,不同之处在于 Clipmapping 仅适用于地形网格并且需要特殊的应用程序。然而不幸的是,这种支持还没有被其他供应商实现,3Dlabs 最终停止了他们的 GPU 业务,但是,就像 Clipmapping 一样,可编程 GPU 允许在任意硬件上重新创建系统。

[LDN04] 是第一个描述适用于任意几何体的现代虚拟纹理系统,但他们的工作很少受到关注。 他们的系统看起来已经与后来的虚拟纹理实现非常相似。显著的区别在于:他们有个新颖的想法是通过渲染到 UV 空间来做图块确定判断。

2006 年及之后,当 John Carmack 说他有一个能够实时渲染独特纹理世界的系统 [MG08] 时,人们对虚拟纹理的兴趣不断增长,但他没有提供技术细节(参见第 2.5.4 节)。这最终促使 Sean Barrett 独立重新创建一个虚拟纹理系统,他在 GDC 2008 上将他的系统展示为“稀疏虚拟纹理”,并在公共领域提供了他的示例实现以及一个解释虚拟纹理的视频 [Bar08]。 视频和实现已经为许多围绕虚拟纹理的重要问题提供了答案,包括快速和正确的过滤。 关于虚拟纹理的许多细节和发展最终发表在他维护的稀疏虚拟纹理论坛 [Spa10] 上。

来自 Crytek 的 Martin Mittring 在 SIG-GRAPH 2008 上发表了《Advanced Virtual Texture Topics》,并且在随附的课堂课本 [MG08] 中出现了一个类似命名的章节。 Mittring 扩展了 Barrett 的工作,并提供了关于图块确定(见第 4.2 节)、虚拟纹理图集布局(见第 4.5.6 节)、网格参数化、高效纹理更新(见第 4.3.2 节)和 mipmap 生成的新见解。他还从游戏行业的角度给出了特别重要的见解(Direct3D的实现细节和 “combo textures”)。

同样在 2008 年,“Making Art Studios”发布了一些关于他们的虚拟纹理实现的非正式细节 [Stu08]。

在 SIGGRAPH 2009 上,来自 id Software 的 J.M.P. van Waveren 提供了有关其虚拟纹理系统的新细节,它与 Barrett 的特别相似,但提供了一些关于 LoD bias adaption(参见第 4.3.2 节)和LoD snap prevention(参见第 4.5.4) [vW09b] 的新想法。 不幸的是,只有演示文稿的幻灯片是公开可用的,这在一定程度上限制了该资源的使用。

2009 年出现的其他非正式资源是来自 Brad Blanchard [Bla09] 的带有源代码的示例的虚拟纹理实现和 Sander van Rossen 的博客,其中包含有关他的实现的有趣注释 [vR09]。

最后,在 2010 年出版了“GPU Pro:高级渲染技术”一书,其中包含两章关于虚拟纹理的章节。[HPLdW10] 提供了如何使用 CUDA 加速虚拟纹理的见解(参见第 4.2.1 节),[CESL10] 介绍了该主题以及一些新见解。 由于这些章节是在同一时间框架内开发的,并且与本论文大约在同一时间出版,因此它们包含一些相似的(但是是独立开发的,除非另有说明)见解。

虚拟纹理的最新资源是 Andreas Neu 的学士论文,其中包括对该主题的全面概述、旨在提高视觉质量的新颖想法以及质量评估方法 [Neu10]。

引用

[Cat74] Edwin Earl Catmull. A subdivision algorithm for computer display of curved surfaces . PhD thesis, Department of Compuer Science, University of Utah, December 1974.

[Hec86] PS Heckbert. Survey of texture mapping. IEEE Computer Graphics and Applications, 6(11):56–67, 1986.

[Wik10a] Wikipedia. S3 virge - wikipedia. http://en.wikipedia.org/w/ index.php?title=S3_ViRGE&oldid=352517099, 2010. [On- line; accessed 5-May-2010].

[Wik10b] Wikipedia. Ultima underworld: The stygian abyss - wikipedia. http://en.wikipedia.org/w/index.php?title= Ultima_Underworld:_The_Stygian_Abyss&oldid= 350829492#Development, 2010. [Online; accessed 5-May-2010].

[Hec86] PS Heckbert. Survey of texture mapping. IEEE Computer Graphics and Applications, 6(11):56–67, 1986.

[GM05] E Gobbetti and F Marton. Far voxels: a multiresolution framework for interactive rendering of huge complex 3D models on commodity graphics platforms. ACM Transactions on Graphics (TOG), 24(3):878–885, 2005.

[CESL+03] YJ Chiang, J El-Sana, P Lindstrom, R Pajarola, and CT Silva. Out-of- core algorithms for scientific visualization and computer graphics. IEEE Visualization, 2003.

[Cor04] NVIDIA Corporation. Texture atlas whitepaper - improve batch- ing using texture atlases. http://download.nvidia.com/ developer/NVTextureSuite/Atlas_Tools/Texture_ Atlas_Whitepaper.pdf, 2004.

[BAC96] A Beers, M Agrawala, and N Chaddha. Rendering from compressed tex- tures. Proceedings of the 23rd . . . , Jan 1996.

[Wei04] Li-Yi Wei. Tile-based texture mapping on graphics hardware. In SIGGRAPH ’04: ACM SIGGRAPH 2004 Sketches, pages 55–63, New York, NY, USA, 2004. ACM.

[KE02] M. Kraus and T. Ertl. Adaptive Texture Maps. In Proc. SIGGRAPH/EG Graphics Hardware Workshop ’02, pages 7–15, 2002.

[LD07] S Lefebvre and C Dachsbacher. Tiletrees. Proceedings of the 2007 sym- posium on Interactive 3D graphics and games, page 31, 2007.

[WLKT09] Li-Yi Wei, Sylvain Lefebvre, Vivek Kwatra, and Greg Turk. State of the art in example-based texture synthesis. In Eurographics 2009, State of the Art Report, EG-STAR. Eurographics Association, 2009.

[MG08] Martin Mittring and Crytek GmbH. Advanced virtual texture topics. In SIGGRAPH ’08: ACM SIGGRAPH 2008 classes, pages 23–51, New York, NY, USA, 2008. ACM.

[LN03] S Lefebvre and F Neyret. Pattern based procedural textures. Proceedings of the 2003 symposium on Interactive . . . , Jan 2003.

[SD03] M Stefan and H Deussen. Wang tiles for image and texture generation.ACM Transactions on Graphics, Jan 2003.

[Cor06] Microsoft Corporation. The windows vista developer story: Di- rectx. http://www.microsoft.com/indonesia/msdn/ wvddirectx.aspx, 2006.

[CNF+07] Roger Crawfis, Eric Noble, Michael Ford, Frederic Kuck, and Eric Wag- ner. Clipmapping on the GPU. Technical report, Ohio State University, 2007.

[Cor07] NVIDIA Corporation. Clipmaps whitepaper. http://developer.download.nvidia.com/SDK/10/direct3d/Source/Clipmaps/doc/Clipmaps.pdf, 2007.

[TMJ98] Christopher C. Tanner, Christopher J. Migdal, and Michael T. Jones. The clipmap: a virtual mipmap. In SIGGRAPH ’98: Proceedings of the 25th annual conference on Computer graphics and interactive techniques, pages 151–158, New York, NY, USA, 1998. ACM.

[SLT+07] Antonio Seoane, Rube´n Lo´pez, Javier Taibo, Alberto Jaspe, and Luis Herna´ndez. Hardware-independent clipmapping. In WSCG 2007, The 15th International Conference in Central Europe on Computer Graphics, Visualization and Computer Vision 2007, pages 177–183, 2007.

[EC06] Anton Ephanov and Chris Coleman. Virtual texture: A large area raster resource for the GPU. In Interservice/Industry Training, Simulation, and Education Conference (I/ITSEC) 2006, 2006.

[TSH09] Javier Taibo, Alberto Seoane, and Luis A. Herna´ndez. Dynamic virtual textures. In Journal of WSCG, Volume 17, Number 1, 2009, 2009.

[Hu¨t98] T Hu¨ttner. High resolution textures. Late Breaking Hot Topics, IEEE Visualization 98 CD-ROM Proc, 1998.

[iS05] id Software. id Software storms the front lines with enemy territory: Quake wars. http://www.splashdamage.com/content/id- software-storms-front-lines-enemy-territory- quake-wars, 2005.

[CC05] Richard Connery and John Carmack. MegaTexture in Quake Wars. http://www.beyond3d.com/content/articles/95/ 3, 2005.

[Car05] John Carmack. John carmack keynote at quakecon 2005. http:// us.generation-nt.com/john-carmack-quakecon-2005-keynote-complete-transcript-help-29744482.html, 2005.

[DC06] Cain Dornan and John Carmack. MegaTexture Q&A. http://www.team5150.com/˜andrew/carmack/johnc_ interview_2006_MegaTexture_QandA.html, 2006.

[vW09b] J.M.P. van Waveren. id tech 5 challenges - from texture virtualiza- tion to massive parallelization. http://s09.idav.ucdavis.edu/ talks/05-JP_id_Tech_5_Challenges.pdf, 2009.

[Sem99] 3Dlabs Semiconductor. Virtual textures - texture management in sili- con. http://www.graphicshardware.org/previous/www_ 1999/presentations/v-textures.pdf, 1999.

[LDN04] Sylvain Lefebvre, Jerome Darbon, and Fabrice Neyret. Unified texture management for arbitrary meshes. Technical Report RR5210-, INRIA, may 2004.

[Bar08] Sean Barrett. Sparse virtual textures. http://silverspaceship.com/src/svt/, 2008.

[Spa10] Sparse virtual texturing discussion forum. http://mollyrocket.com/forums/viewforum.php?f=21, 2008 - 2010.

[Stu08] Making Art Studios. Making art studios - lightning engine - virtual textur- ing. http://blog.makingartstudios.com/?tag=virtual_ textures, 2008.

[Bla09] Brad Blanchard. Brad blanchard - online portfolio: Virtual textur- ing. http://linedef.com/personal/demos/?p=virtual-texturing, 2009.

[vR09] Sander van Rossen. Sander’s blog: virtual texture. http://sandervanrossen.blogspot.com/search/label/virtual%20texture, 2009.

[HPLdW10] Charles-Frederik Hollemeersch, Bart Pieters, Peter Lambert, and Rik Van de Walle. Accelerating virtual texturing using CUDA. In W. Engel, editor, GPU Pro: Advanced Rendering Techniques. A K Peters, 2010.

[CESL10] Mattha¨us G. Chajdas, Christian Eisenacher, Marc Stamminger, and Syl- vain Lefebvre. Virtual texture mapping 101. In W. Engel, editor, GPU Pro: Advanced Rendering Techniques. A K Peters, 2010.

[Neu10] Andreas Neu. Virtual texturing. CoRR, abs/1005.3163, 2010.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值