Megatextures in Rage
原文地址 http://renderingpipeline.com/2012/03/megatextures-in-rage/2012年3月4日罗伯特id Software的第一人称射击游戏Rage实现了一种称为Megatextures或Virtual Textures的技术它基本上模仿了一个MMU来处理大于显卡内存的纹理。实施规模从游戏机到高端PC并允许在所有平台上使用相同的资产 -这对艺术家来说是一个巨大的加分。他们也不必考虑纹理内存预算并且他们可以在没有玩家注意到的地方重复纹理。整个游戏世界可以以独特的方式进行纹理化引擎在运行时可以确定需要哪些部件并将其加载到GPU内存中。由Wolfgang Engel编辑的“GPU Pro高级渲染技术”着名的ShaderX书籍的书籍包含了两篇关于虚拟纹理的文章MG Chajdas等人的“虚拟纹理映射101”和C Hollemeersch等人“使用CUDA加速虚拟纹理化”从ID 的JMP van Waveren谈话中的幻灯片给出了对Rage中使用的实现的一个很好的介绍。这些幻灯片还显示了显示游戏引擎中纹理图块的调试模式的屏幕截图。幸运的是这些调试选项在最终的游戏中没有被删除只是隐藏:-)使用游戏控制台可以使用以下命令来获得引擎技术方面更好的印象vt_restart丢弃旧缓存并开始 重建纹理缓存。您可以在几秒钟内看到纹理mipmap级别从粗略切换到精细级别。vt_singleStep 0取消激活新的图块交换 - 如果您现在移动您可以查看为以前未渲染的图层部分加载哪些mipmap级别。vt_singleStep -1重新启动虚拟纹理。toggle vt_showPageNumbers; vt_restart在每个图块中添加图块边框和图块编号。toggle vt_showPageMips; vt_restart可视化mipmap级别红色是高分辨率图块绿色粗略水平。toggle vt_showFeedbackStreaming显示渲染图像的哪些部分需要更高分辨率的图块。toggle vt_showFeedbackBuffer可视化用于计算缺失图块的反馈缓冲区。我们可以在这里看到在小型室内区域最好的mipmap分辨率红色可以被加载人们具有比环境更高的细节纹理我们来看看一个更大的门外的场景天空盒不是虚拟纹理的一部分而是一个额外的静态纹理灌注的广告牌和 爆炸的动画等也是如此。这个动画显示了瓷砖加载的三个步骤该场景的反馈缓冲区显示所需mipmap级别中的图像块的哪些部分存在绿色并且存在与所需级别和缓存级别最大的差异紫色请注意缓冲区的大小为160×120像素因此不具有屏幕的宽高比。最后反馈蒸汽此处翻译待定还有一点很有趣的是即使玩家从未看过相应的几何场景中的哪些部分仍然保留在缓存中的时间 以及 哪些部分被交换。为此重新启动 虚拟纹理 以 刷新 旧缓存 并 等待纹理 被 交换。在该时间段内 不要移动 以仅 请求场景 当前可见部分 的图块。然后关闭虚拟纹理环顾四周。这是我首先重新加载所有虚拟纹理的起始位置并将纹理的更新关闭请注意右侧的建筑物一半可见。向右看模糊的纹理变得可见但即使我们从来没有朝这个方向前进预先加载了地图的一部分反馈缓冲区可能显示哪些部件是预加载的。如果您有访问这个游戏PC版本变得 便宜得 很快我只能推荐玩这些命令。此外非常感谢您在最终游戏中将这些命令翻译可能有误……留给了 ID Software。更新以下是执行调试命令的一些记录请注意在第二十二我重新启动缓存填充。在开始的旋转过程中您可以看到如何将新的图块装载到缓存中左侧。这是用toggle vt_showPageColors;vt_restart“它为每个图块提供了随机颜色因此每个图块更新都清晰可见。