翻译 Albert Julian Mayer 关于虚拟纹理的论文(3. 概述)

2024-09-06 23:08

本文主要是介绍翻译 Albert Julian Mayer 关于虚拟纹理的论文(3. 概述),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第3章:概述

本章介绍了整篇论文中使用的术语,并简要介绍了“虚拟纹理”及其挑战。

3.1 术语

目前,在纹理缓存领域存在术语不匹配的情况。一些论文将术语 “虚拟纹理” 应用于所有 “使用部分驻留在内存中的纹理的系统”,特别是类似 Clipmapping 的系统 [TSH09]、 [EC06]、 [Wei04]、 [SLT+07]。而其他论文和资源将这个术语应用于一种更新的、截然不同的大纹理支持技术,该技术适用于任意几何[MG08] 、[CESL10]、 [HPLdW10]。为了区分,Barrett 将新的虚拟纹理技术称为 “稀疏虚拟纹理”,但这个术语尚未获得普遍接受。要解决术语不匹配问题,一种方式是为新技术发明一个新名称以将其与旧技术区分开来(就像 Barrett 尝试过的那样),第二种方式是将术语“虚拟纹理”仅应用于新技术。我们选择使用第二种方式(也是由于缺乏更适合新技术的名称),即,在本文中,术语“虚拟纹理”仅应用于适用于任意几何体的系统。将 Clipmapping 称为“虚拟纹理”是没有必要的,我们可以直接使用它的原始名称:“Clipmapping”。而且,将这个新技术称为“虚拟纹理”也是有道理的,因为它的表现与“虚拟内存”的基本概念很相似,而旧技术则不是。

此外,应该注意的是,现存的少量虚拟纹理的资源不使用通用术语。 下表是一些最重要术语的对比。 我们选择使用与 [Bar08] 非常相似的术语,这与 [MG08] 和 [LDN04] 的术语形成对比。我们将虚拟纹理的图块称为“tile(图块)”,而非术语“page”,尽管如此,我们仍将 “翻译纹理” 称为“pagetable texture (页表纹理)”,原因是“pagetable(页表)”是计算机科学中的一个既定术语。

这篇论文Mittring [MG08]Hollemeersch et al. [HPLdW10]Lefebvre [LDN04]
Physical Texture(物理纹理)Tile CachePhysical Page TextureTile Pool
Pagetable Texture(页表纹理)Indirection TexturePage Table TextureIndirection Grids
Tile Determination(图块确定)Computing Local LODPage ResolverTexture Load Map Comp

3.2 概括

虚拟纹理属于一种“纹理图块缓存方法”。这意味着,它需要确定整个纹理数据中当前所需的图块,然后将这些图块流式传输到 GPU,并仅从这些所需的图块进行渲染。虚拟纹理需要将场景的所有纹理组合成一个非常大的纹理。 作为预处理步骤,该纹理及其所有 mipmap 级别被平铺成大小相同的图块。 在运行时,虚拟纹理系统有三个主要任务,如下图所示。
在这里插入图片描述

  1. 图块确定:
    确定哪些图块是当前渲染所必需的,也即哪些图块是在当前虚拟摄像机的位置与方向下可见的。
  2. 图块流加载:
    需要的图块将从存储它的位置流加载到GPU上的纹理中(物理纹理)。
  3. 虚拟纹理着色器:
    特殊的片段着色器将使用一个“包含物理纹理中所有图块坐标的纹理”(页表纹理),将虚拟纹理坐标转换为用于在物理纹理中采样的正确坐标。

与旧的纹理缓存方法相比,虚拟纹理的主要优势在于虚拟纹理片段着色器中的封装,它可以从一个小的图块缓存纹理进行渲染,而不会强制进行不必要的细分或昂贵的裁剪和遮罩。这得益于纹理采样相关的可编程显卡的启用。 以前的方法仅限于地形渲染和与图块对齐的几何图元 [TMJ98]。 虚拟纹理相对于以前的技术水平的另一个主要好处是,确定所需图块的效率被大大提升了——以前的方法通常依赖于逐多边形的几何计算 [CE98],考虑到多边形的数量,这在大型场景是不可行的。第三个重要的特性是,系统不会在所需图块流加载时停顿,虚拟纹理会继续全速渲染,而使用较低分辨率的回退图块。

3.3 细节概述

下图提供了对虚拟纹理系统主要部分的更详细概述。
在这里插入图片描述

虚拟纹理和它整个 mipmap 链存储在预先计算的、大小相同的图块中。如果虚拟纹理不仅要应用于连续网格,它还将由不同对象的多个纹理组成,因此本质上是一个非常大的纹理图集 [Cor04]。除了虚拟纹理的生成和预平铺之外,还必须对几何体纹理的方式进行处理,让它看起来就像虚拟纹理确实存在于内存中一样。 因此,我们将这些纹理坐标命名为 “虚拟纹理坐标”,因为它们对应的是虚拟纹理。与任何纹理图集 [Cor04] 一样,必须偏移纹理坐标以补偿单个大纹理中多个纹理的组合。

  • 图块确定:
    该子系统确定虚拟纹理的哪些图块是渲染所必需的,即从当前虚拟摄像机的位置和方向上是可见的。这通常通过使用特殊着色器渲染的 pre-pass 来完成,该着色器输出每个像素处的可见图块的地址。 该 pre-pass 的结果被读回 CPU。
  • 图块流加载和纹理更新:
    必要的图块从其存储位置(例如硬盘)加载,并流式传输到存储在 GPU 上的纹理(“物理纹理”)。图块流送系统由一个或多个后台线程组成,这些线程连续对请求的图块进行加载和解压。纹理更新是在主线程上运行的,就在渲染 main pass 之前,随后被流式传输到物理纹理。 “页表纹理” 随着从 “虚拟纹理坐标”“物理纹理坐标” 的转换而更新。具体来说,页表纹理中每个像素都对应于虚拟纹理中的一个图块——如果虚拟纹理在 base level 上是 256平方 个图块,那么“页表纹理”就是一个 256平方 像素的纹理。页表纹理中的每个像素都包含它在物理纹理中表示的图块的存储地址。对于当前未存储在物理纹理中的图块,“fall- back entry”的地址可以存储在页表纹理中。这意味着,邻居存储的是覆盖相同纹理空间但分辨率更低的图块的地址。
  • 虚拟纹理着色器:
    虚拟纹理片段着色器使用页表纹理虚拟纹理坐标(几何体纹理采样时的坐标)转换为用于从物理纹理中采样正确图块的物理坐标。由于所有虚拟纹理对象共享相同的虚拟纹理,因此它们都可以通过单个DrawCall进行渲染。为了获得用于渲染正确图块的地址,着色器对页表纹理进行采样时将使用虚拟纹理坐标和一个适当的偏移,此偏移是为了补偿页表纹理和虚拟纹理之间的大小差异。此纹理采样操作将会产生用于在物理纹理中渲染适当图块的地址,如果当前未存储图块则是下一个较低分辨率图块的地址。另一种针对页表纹理中 “fallback entries” 的措施是:调整着色器以递增的偏移再从页面表纹理中进行采样,以此循环直到找到有效地址。

必须以“图块确定”、“纹理更新”、“在 main pass 中用虚拟纹理着色器渲染” 这样的顺序在每一帧执行。而图块的流加载可以在后台线程中异步执行。

3.4 挑战

在虚拟纹理系统的实现过程中存在两个主要挑战。第一个挑战是正确性,这意味着虚拟纹理产生的视觉输出应该与理论上支持这些大纹理尺寸的系统相同。另一个挑战是性能。虚拟纹理需要与普通渲染相似的性能,或对比其他大尺寸纹理方案具有竞争力。在实践中,这两个问题是紧密交织在一起的,因为如果可见纹理块的流传输速度不够快,则会使用较低分辨率的回退,从而产生可见的瑕疵。另外,一些其他的几个问题构成了第三个挑战。请注意,这些挑战并非预先知道的,而是在论文的实践开发过程中逐步确定。因此,并非所有这些挑战都在我们的实现中得到了完美解决。

3.4.1 正确性

GPU 内的精度限制是影响虚拟纹理正确性的重要因素,尤其是在增加虚拟纹理大小时 [MG08]。 GPU 编程模型中的限制——比如循环中纹理采样的不确定性 [LK06] 也是个限制。 如果想为虚拟纹理启用正确的纹理过滤(或 DXT 压缩),则需要考虑更多的东西 [vW09b]。当渲染过程中缺少必要的图块时,正确性也会受到影响——具有异步的纹理流加载的虚拟纹理系统就其本身而言也很容易出现此类瑕疵。瑕疵的数量取决于图块流加载的速度、图块确定系统 “预见未来” 的能力、以及必要图块的数量和帧之间的差异(见下文)。

3.4.2 性能

虚拟纹理系统是一个复杂的系统,性能问题可能由单个组件太慢,或这些组件在管线中的交互所引起。影响虚拟纹理系统性能的一个关键操作是图块确定。这通常是通过在 pre-pass 中使用特殊着色器渲染场景来完成的,该着色器输出每个像素的可见图块坐标 [Bar08]。 这种方法仅在以较低分辨率执行时,或在将结果缓冲区读回 CPU 之前压缩时才可行。那么就需要考虑问题“结果的回读是否应该延迟到下一帧”,这就是组件间交互影响性能的例子。

对运行时性能(以及正确性)影响最大的因素实际上是虚拟纹理的布局,它是在预处理步骤中确定的。 虚拟纹理的布局会影响渲染过程中需要多少图块,以及在帧和帧之间该纹理集的差异程度。

3.4.3 其他

还有许多与虚拟纹理相关的其他挑战:透明几何体的支持、使瑕疵不那么明显、处理非精确图块的确定、应对 GPU 较低的最大纹理尺寸限制、图块缓存策略、贴花支持、虚拟纹理内容管线(即如何生成虚拟纹理场景和虚拟纹理本身)等。

引用

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

[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.

[Wei04] Li-Yi Wei. Tile-based texture mapping on graphics hardware. In SIG- GRAPH ’04: ACM SIGGRAPH 2004 Sketches, pages 55–63, New York, NY, USA, 2004. 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.

[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.

[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.

[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.

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

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

[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.

[CE98] D Cline and PK Egbert. Interactive display of very large textures. Pro- ceedings of the conference on Visualization’98, page 350, 1998.

[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.

[LK06] Bill Licea-Kane. The OpenGL pipeline newsletter - volume 001 - new texture functions with awkward names to avoid ugly artifacts. http://www.opengl.org/pipeline/article/vol001_5/, 2006.

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

这篇关于翻译 Albert Julian Mayer 关于虚拟纹理的论文(3. 概述)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143382

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

Java 多线程概述

多线程技术概述   1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间。线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换、并发执行,一个进程最少有一个线程,线程实际数是在进程基础之上的进一步划分,一个进程启动之后,进程之中的若干执行路径又可以划分成若干个线程 2.线程的调度 分时调度:所有线程轮流使用CPU的使用权,平均分配时间抢占式调度

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

BERT 论文逐段精读【论文精读】

BERT: 近 3 年 NLP 最火 CV: 大数据集上的训练好的 NN 模型,提升 CV 任务的性能 —— ImageNet 的 CNN 模型 NLP: BERT 简化了 NLP 任务的训练,提升了 NLP 任务的性能 BERT 如何站在巨人的肩膀上的?使用了哪些 NLP 已有的技术和思想?哪些是 BERT 的创新? 1标题 + 作者 BERT: Pre-trainin