【GDC 2018】Next Level Render in 'World of Tanks' PC 2018
来源:D:\迅雷下载\GDC2018 Next Level Render in ‘World of Tanks’ PC 2018 - 腾讯游戏知识库 - KM平台.m3u8\GDC2018 Next Level Render in ‘World of Tanks’ PC 2018.mp4
提取时间:2026-04-27 18:05:05
看起来你提供的文档中关于游戏引擎新功能的部分非常详细,涵盖了从地形渲染到相机优化和水体系统的多个方面。下面我将针对几个关键点进行总结,并提供一些补充建议:
地形系统改进
- 网格渲染与LOD管理:通过使用四边形分区、即时/渐进加载技术来减少CPU工作量,同时利用硬件镶嵌实现细节丰富的特写视图。
- 虚拟纹理技术:采用程序化虚拟纹理方法,显著降低了像素着色器的负载,并优化了曲面细分。这种方法还支持隧道和道路等复杂地形结构的烘焙。
性能与扩展性
- 通过引入剪辑贴图技术和环形更新技术来减少内存消耗。
- 使用间接映射实现地形与其他静态或动态对象的混合,从而增强场景的真实感。
- 对于远距离外域,简化了LOD和材质混合方案以保持性能。
水系统
虽然文档在这里被截断了,但可以推测水系统的改进可能包括:
- 水面反射与折射:通过高级光照模型实现逼真的水面效果。
- 动态波纹生成:利用物理模拟技术来创建自然的水流和波浪。
- 交互性增强:支持玩家角色和其他物体在水面上产生涟漪,增加游戏互动感。
总结
新引擎引入了多项创新技术以提升视觉质量和性能表现。通过统一几何方法、优化材质混合以及改进虚拟纹理技术,开发团队能够更好地管理资源消耗并提高渲染效率。这些改进不仅增强了玩家的游戏体验,也为未来的扩展和功能添加奠定了坚实的基础。
建议
- 持续迭代与测试:确保所有新引入的功能在各种硬件配置下都能稳定运行。
- 用户反馈循环:通过收集玩家的反馈来不断优化游戏性能和视觉效果。
- 文档完善:为开发团队提供详细的代码注释和技术文档,便于维护和未来扩展。
希望这些总结与建议对你有所帮助!如果你有更多具体问题或需要进一步的信息,请随时告知。
Slide 1 — 00:00:00

📌 要点汇总
- (Transitional content, no key points)
大家好,欢迎来到最后一次但希望并非最不重要的技术演讲。\n\n
Slide 2 — 00:00:07

📌 要点汇总
- (Transitional content, no key points)
- (Transitional content, no key points)
在我们开始之前,请确保将手机静音,因为我们正在拍摄。
我的名字是布罗尼斯拉夫,我是 War Gaming Min Studio 的首席图形工程师,在这里工作了大约十年。
今天,我将向您介绍《坦克世界》有史以来最大的图形和技术更新。《坦克世界》是一款免费的 MMORPG 游戏,其中包含重金属机械之间的战斗。这款游戏已经成熟且广泛普及,并拥有大量的玩家群体和紧凑的日程安排。
我很高兴向大家展示我们发布的 1.0 版本预告片。
重新发现坦克战斗。
Slide 3 — 00:01:20

(该幻灯片时间段内未检测到语音内容)
Slide 4 — 00:01:25

📌 要点汇总
- (Content too short, no key points)
敏锐你的感官。
Slide 5 — 00:01:30

(该幻灯片时间段内未检测到语音内容)
Slide 6 — 00:01:35

(该幻灯片时间段内未检测到语音内容)
Slide 7 — 00:01:39

📌 要点汇总
- (Content too short, no key points)
世界是一个危险的地方,但我不在乎。
Slide 8 — 00:01:45

📌 要点汇总
- (Content too short, no key points)
将动作调到最大。
Slide 9 — 00:01:50

(该幻灯片时间段内未检测到语音内容)
Slide 10 — 00:01:56

(该幻灯片时间段内未检测到语音内容)
Slide 11 — 00:02:01

📌 要点汇总
- 新的图形引擎、改进的声音效果和重新设计的地图提升了整体游戏体验
- (Transitional content, no key points)
新的图形引擎,重新制作的声音效果,以及重新设计的地图,让游戏体验全面提升。
Slide 12 — 00:02:19

📌 要点汇总
- (Content too short, no key points)
过度充电你的经验。
Slide 13 — 00:02:23

(该幻灯片时间段内未检测到语音内容)
Slide 14 — 00:02:28

📌 要点汇总
- (Transitional content, no key points)
所以你现在就可以开始玩这款游戏。它是最近发布的,你可以免费下载并体验。
在向大家介绍今天的议程之前,我想说,在最终确定本次演示的内容时,我不得不做出一些艰难的决定。因为我想要展示的东西太多了。如果我深入探讨某一主题,只能呈现一个方面,而其他内容则无法涵盖。另一方面,如果我只是提供高层次的概述,您将无法看到我们是如何进行这些更改的,并且会留下许多未解答的问题。
因此,我决定向大家提供有关我们的多项技术的总体概述,重点介绍我认为最有趣的部分。这是今天的议程。
Slide 15 — 00:03:15

📌 要点汇总
- 演讲议程包括目标设定、技术细节介绍及图片展示
- 新图形引擎Core旨在优化性能同时保留核心游戏体验
- 采用双管道策略:一个针对旧硬件(前向着色),另一个针对新硬件(延迟着色)
- 延迟着色管道支持高级后处理技术和内存需求较高,但效果更佳
- 简化管道兼容DX9并适用于2004年左右的低端硬件
- 新最低设置大幅改进了地形细节和附加对象,保持游戏玩法一致性
今天演讲的议程如下:我们首先列出我们的目标和做出的基本决定,然后介绍技术细节和漂亮的图片。
《坦克世界》是一款成熟的游戏,拥有大量受众,并且市场分散,正在转向陈旧且速度缓慢的硬件。当然,我们也有一些玩家使用良好硬件,但他们绝对不是大多数。因此,我们开始研究新的图形引擎。我们面临着重大挑战:不想失去大多数使用旧硬件的玩家,同时希望在我们的游戏中拥有现代、尖端的技术和图形。
优化和简单但非常有效的方法是我们实施的主要武器。我们的新图形引擎称为Core。我们想要实现的另一件重要的事情是保持核心游戏玩法不变。此外,我们还有其他目标,例如提高内容制作的速度,并为未来更高级的改进奠定坚实的基础。
在继续之前,我想向您展示一些漂亮的图片,其中可以看到旧地图和新地图之间的差异。我还想指出的是,在游戏玩法方面实际上没有区别:地图本质上是一样的。
鉴于本次演示的时间限制,我选择了四个主要主题进行讨论。对于某些主题,我只是给您一个快速概述。但如果您对更多细节感兴趣,我在最后有额外的幻灯片,您可以稍后查看。
首先,我们将从图形管道的快速概述开始。我们在世界各地有很多玩家在各种图形硬件上玩我们的游戏。我们不能牺牲旧硬件,但我们想继续前进。因此我们决定将问题一分为二:旧硬件仍将受到支持,但我们不打算在其中添加任何重大的图形改进,除了游戏玩法和优化所需的功能之外。
表达我们的创造力和创新的真正机会是使用最新的硬件。这是我们有两个独立的图形管道的主要原因。每个管道专用于特定范围的硬件。先进的管道专用于中高端硬件,并采用延迟着色方法,该方法有其自身的优点和缺点:它具有更高的内存需求,但更好地利用了先进的后处理技术,并具有其他延迟技术,如贴花、湿度叠加、地形到对象混合等。
简化的管道用于可追溯到2004年的较旧的低端硬件。我想提醒您,今年发布了《毁灭战士3》、《半条命2》和《孤岛惊焚1》等游戏。对于这样的硬件,我们使用前向着色,它具有低内存压力并支持DX9,因为中国市场对我们来说仍然巨大。
新的最低设置与Ultra设置不同:Ultra是我们新引擎中最顶级的新图形预设。以下是湖景地图的一些截图。我想提醒您,我们的最低要求图形是2004年的卡片。添加了许多附加细节,尤其是地形细节得到了显著改善。值得注意的是,无论使用什么图形设置,所有对象都会保持在相同的位置,因为它们会影响游戏玩法。
下一个主题是照明和阴影。
Slide 16 — 00:07:20

📌 要点汇总
- (Content too short, no key points)
在每个图形引擎中,培训是最重要的一环,因为……
Slide 17 — 00:07:24

📌 要点汇总
- (Transitional content, no key points)
它本质上只是定义了事物在屏幕上的显示方式。
这是一个非常强大的工具。
Slide 18 — 00:07:30

📌 要点汇总
- 采用基于物理的方法确保游戏中的真实外观和一致的内容质量
- 径向漫反射和镜面反射优化织物材质表现,后处理链合并到单一着色器中以提高效率
- 全范围HDR天空对全局照明至关重要,尤其在田野和山脉场景中影响显著
- 使用传输通道和自定义BTDF近似植被和其他半透明物体的光照效果
- 动态水箱浸泡技术展示基于物理方法的应用,实现真实互动效果
- 延迟着色结合统一参数集简化模拟过程,高效阴影系统是关键组成部分
- 引擎采用多种阴影算法以平衡质量和性能,确保最佳渲染效果
因此,我将重点关注以下事情:快速概述我们基于物理的渲染方法,我们如何处理阴影,以及我们如何解决游戏或引擎中的全局照明现象。
在我们的游戏中,我们正在努力实现尽可能接近的真实外观。因此,我们的引擎很大程度上采用了基于物理的方法。基本上,我们所有的内容都使用相同的一组参数,而我们的艺术家只是遵循内容创建指南,这保证了他们制作的内容对于不同地图和不同光照条件下的共享和使用有效。
径向漫反射和镜面反射有助于更好地近似织物材质,这种材质在场景中的坦克和其他物体上大量使用。我们几乎所有的后处理链都合并到一个着色器中,以便在着色器级别上优化整个序列,并且计算主要在 HDR 空间中执行。
全范围 HDR 天空对于地图上的正确照明至关重要,尤其是在涉及田野和山脉时,它对普通地图上的全局照明产生巨大影响。只是因为它通常会覆盖屏幕的一半。
为了更好地近似场景中的植被和其他半透明物体,我们使用传输通道和自定义 BTDF。我们为照明添加了光度单位,基本上出于相同的原因:统一内容制作的过程。特别是对于室内场景,要实现电影外观,抗锯齿至关重要。
让我们看一个充分利用我们基于物理的统一方法的技术示例。动态水箱浸泡使水箱与水面真实地相互作用。这是动态坦克突出和动态坦克下雪的效果。与脏污效果相同,但在不同的光照条件下有雪和颗粒。所以你可以看到,基于物理的方法使我们能够统一添加粒子的过程。
因此,艺术家通常会创建一次粒子,然后在不同的光照条件下使用它们。景观上的水坑,自动水道模拟。看看那些变成湿的物体和建筑物的平铺材料。其中每个平铺都是一组 PBR 参数,并且它们都通过混合蒙版进行混合。
重要的是,因为我们使用延迟着色和统一的参数集进行基于物理的渲染,所以模拟非常容易完成,并且不需要额外的属性集来解决每个特定问题。高效且强大的阴影系统对于基于物理的渲染方法至关重要。不幸的是,仅使用一种阴影算法通常无法同时实现良好的质量和合理的性能。
因此,我们的引擎使用了多种技术,最有效地涵盖其特定角色并互相帮助。
Slide 19 — 00:10:40

📌 要点汇总
- 使用自适应阴影贴图生成高质量静态部分阴影,通过深度数据而非颜色存储提高性能和内存效率
- 屏幕空间阴影用于中小型特征,节省渲染成本并减少偏差问题
- 微型阴影技术处理小物体阴影,避免高分辨率调整,覆盖整个对象的小特征
为了在保持良好性能的同时产生最佳结果,每种技术都在不同的范围内工作或照顾整体的特定部分。
我们使用了以下几种技术来在游戏中获得强大且快速的阴影系统:
自适应阴影贴图为场景的静态部分生成高质量的阴影,其方式与程序虚拟纹理方法非常相似。但自适应阴影贴图不存储颜色数据,而是存储场景相对于光线的深度。主要思想是将空间细分为称为瓷砖的更小的部分。然后,我们每帧仅生成多个图块以提高性能,同时使用稍多的视频内存来存储缓存数据。该技术适用于静态对象,并显着提高了性能,但在动态对象的额外处理方面存在一些缺点,特别是从动态到静态的过渡,反之亦然。
自适应阴影贴图会从半透明场景对象(如烟雾、灰尘等)产生阴影。它使用带有位置捕捉但不具有稳定性的级联阴影贴图来提高阴影质量。为了能够与其他阴影技术正确组合,深度缓冲区预先填充了来自自适应阴影贴图技术的深度信息,并且包级联阴影贴图通过。
屏幕空间阴影非常适合中小型特征,如您所见。看看草。与光线行进类似,但在屏幕空间中,我们沿着某个方向追踪光线以找到最近的遮挡物,从而节省大量性能,因为我们没有将草地和细分地形渲染到阴影贴图中,这非常昂贵。这也帮助隐藏其他技术的一些偏差问题。
这些类型的阴影会从非常小的物体(例如墙上的每块砖)产生阴影。如果没有这项技术,我们将需要对原核阴影图方法进行疯狂的分辨率调整。这是该技术的后视图。那么,看看它是如何覆盖整个对象的小特征的。
Slide 20 — 00:12:58

📌 要点汇总
- 采用纹理空间中的光线行进步骤进行计算,减少步骤并提高自然效果
- 模拟云阴影技术解决视觉上更大的地图相关问题,增强玩家体验
- 全局照明使用辐照度体积方法,探针存储为短阶球谐函数应用于静态和动态对象
- 离线阶段包括道具放置、立方体贴图捕获及卷积成短阶球谐函数
- 实时阶段利用2D体积纹理访问适当探针并进行硬件级混合计算
- 预先计算七万多个props过程缓慢,离线处理时间较长
这与屏幕空间非常相似,但计算是在纹理空间中以较少的光线行进步骤完成的。我们的艺术家非常欣赏此功能,因为它使他们能够创建看起来非常自然的对象。
最后但并非最不重要的一点是模拟云阴影。我们的游戏设计师还使用这种技术来解决一些与视觉上更大的地图相关的游戏设计问题。所以只是他们强调,在地图的某些特定范围上这对玩家来说非常重要。
这些技术中的每一种都被组合成一个屏幕空间缓冲区,稍后在照明过程中使用。全局照明或间接照明是所有实时图形的长期目标。通常,当它启用时,它是不可见的,但一旦禁用它,全局照明对整体的影响就变得显而易见。我们的间接照明基于辐照度体积方法。我们有一个两度的预先计算的探针。每个探针都存储为短阶球谐函数,并以延迟的方式应用于静态和动态对象。
这是它在背面模式下的样子,其中反照率是白色的。请注意它对整体情况的改变有多么显著。该技术由两个独立的步骤组成,离线和实时。在离线状态下,我们进行适当的道具放置、立方体贴图捕获、将立方体贴图卷积为短阶球谐函数,并将它们存储在体积纹理中以供以后实时使用。
我们实时使用生成的 2D 体积纹理来根据道具在世界空间中的位置访问适当的探针。作为纹理过滤过程的结果,道具之间的混合是在硬件级别上计算的。下面是一个示例,说明如果我们仅使用强力方法或统一的道具放置,它是如何工作的。不幸的是,预先计算七万多个 props 的过程相当缓慢。即使离线,也可能需要一段时间。
Slide 21 — 00:15:13

📌 要点汇总
- (Content too short, no key points)
但是我们发现,并不总是需要生成所有的这些。GI是低频信号。
Slide 22 — 00:15:21

📌 要点汇总
- 使用自上而下的场景深度斜率方法可大幅减少所需的道具数量
因此,如果我们使用自上而下的场景深度斜率方法,可以显著减少所需道具的数量。
Slide 23 — 00:15:29

📌 要点汇总
- 提高生成速度使艺术家能够更快迭代或原型设计
- 使用智能算法优化道具放置,确保探针接近目标位置并避开障碍物
- 该方法简单快速,内存占用低,性能优异,满足项目需求
生成速度的提高非常明显,这使我们能够平衡烘焙速度与最终质量之间的权衡。因此,艺术家可以使用这一功能来快速迭代或进行原型设计。
为了取得良好的效果,即使只有一层道具,智能的道具放置方法也非常重要。我们正在使用最适合道具放置的算法,确保每个探针尽可能接近地到达目标位置。这是该算法的概述:最初,每个探针尝试在某个定义的半径内找到较低的位置,并且会尝试水平移动到初始 x-y-z 位置。如果没有障碍物,它们就会移动到碰撞处;如果存在障碍物,则以预定义的小偏移量移动到碰撞点。
从内存和性能的角度来看,这是一种非常简单、快速且内存友好的技术。尽管如此,它仍然为我们的需求产生了很好的结果,并且性能表现也非常出色。
Slide 24 — 00:16:43

📌 要点汇总
- 统一物理方法简化材料相关小功能添加过程
- 改进阴影和全局光照表现,提升画面质量
- 计划进一步优化不透明与半透明物体的体积效果及动态GI
- (Transitional content, no key points)
总而言之,我们有一个统一的、基于物理的方法,它极大地简化了添加与材料相关的小功能或修改(例如弄脏、浸泡等)的过程。阴影和全局照明表现良好,显着改善了整体画面。
然而,我们总是向前看,因此希望对不透明和半透明物体的体积效果、动态GI和照明统一进行其他改进。
下一个主题是排水系统。
Slide 25 — 00:17:17

📌 要点汇总
- (Content too short, no key points)
我们的游戏是按照回合进行的,每轮大约需要十五分钟。
Slide 26 — 00:17:22

📌 要点汇总
- (Content too short, no key points)
分钟,所以我们就没必要有太大的空间。一两平方公里就足够了。
Slide 27 — 00:17:27

📌 要点汇总
- (Content too short, no key points)
通常来说这是足够的。在过去,我们从未向玩家展示任何内容。
Slide 28 — 00:17:31

📌 要点汇总
- 新引擎增加了巨大的外域,改善了玩家的游戏体验感
- 地形系统采用单一几何绘图方法,不依赖纹理混合和流技术,减少CPU工作负载
- 补丁由排序树表示,LOD拼接通过平滑变形实现,每个补丁有即时数据关联
- 硬件Tessellation用于特写视图,高频信息存储在材质中以创建详细高度场
- 密度图基于地形坡度和详细高度场定义局部细分级别,减少过度镶嵌区域的三角形数量
- 下载GPU上的小高度场到CPU进行碰撞测试调整,解决曲面细分带来的悬挂关节问题
在可玩区域之外,玩家感觉像是在一个小盒子里玩游戏。有了新引擎,我们决定改变这种体验,尽管可玩区域没有变化,但我们增加了巨大的外域,一直延伸到地平线。
地形系统比较复杂,美术师有一个愿望清单,是根据过去的经验收集的。为了介绍地形在幕后的工作原理,我们将解释分为以下主题:网格渲染定义了绘制方式;讨论我们有多少材料并将它们混合在一起;如何实现良好的性能和可扩展性;以及如何渲染外域,即可玩区域之外的地形部分。
尽管事实上我们有单独的机制来处理几何图形、地形的游戏区域和外域,但我们使用单一的几何绘图方法。它不依赖于纹理和混合,并使用四边形分区来进行剔除和绘制。即时和渐进负载有助于显著减少 CPU 工作负载。流不是必需的,因为网格具有非常紧凑的内存占用,即使对于大于两平方公里的地图也是如此。
每个补丁都由一棵排序树表示,可以这么说,顶点网格根据到相机的距离覆盖不同的区域。LOD 拼接是通过 XZ 平面上的平滑变形来实现的,每个 LOD 沿着摄像机视图平滑地融入下一个 LOD。为了将补丁从本地空间转换到全局空间,每个补丁都有与之关联的即时数据,在平均相机视图中,我们有大约 300 个补丁,它们都是由多次绘制调用渲染的。
硬件镶嵌用于实现详细的特写视图。有关如何显示地形顶点的高频信息存储在一组材质中,这些材质混合在一起以在相机附近创建最终的详细高度场。这是我们游戏中街机摄像头的常见视图。正如您在此处看到的,镶嵌距离仅约 60 米。没有理由把它做得更大,因为实际上没有区别。
不幸的是,即使距离相对较小,强力方法也会产生相当宽的过度镶嵌区域。显然,它在很多方面都是不好的。小三角形会给光栅器和像素着色器带来压力,大量三角形会毫无意义地加载着色器单元。为了解决这个问题,我们正在创建一个密度图,它基于地形的坡度、详细的高度场。该贴图用于定义局部细分级别并显着减少无人机三角形的数量。
最后,为了让我们的艺术家高兴,我们总是对这个区域进行细分,这样特写视图就更好了。曲面细分和详细的特写视图是很酷的事情,但它会产生额外的悬挂关节问题。发生这种情况是因为我们的碰撞场景的一部分在 CPU 上,另一部分与 GPU 上的位移相关。为了解决这个问题,我们将坦克正下方的一个小高度场从 GPU 下载到 CPU,然后用它来调整坦克履带的碰撞测试结果。
Slide 29 — 00:21:19

📌 要点汇总
- 使用微观、宏观和全局尺度图块消除重复图案并保持纹理一致性
- 混合颜色时采用特定算法以保留所有范围特征,并注意数据一致性和采样优化
- 实现基于程序虚拟纹理方法,显著减少像素着色器负载并支持曲面细分优化
- 为DXGI 9硬件提供额外代码路径,执行GPU到CPU的复制以兼容旧硬件
- 使用四叉树分区将场景细分为图块,并通过间接映射存储细化结果
- 引入剪辑贴图方法减少内存消耗,当前实现支持两级剪辑贴图,显著降低内存需求
- 采用环形更新技术加速间接地图更新,提高性能和效率
这是它在动态中的样子。景观纹理的常见方法是泼溅算法。该算法的基本思想是拥有一个混合掩模和一组基于每个图块的混合值来混合在一起的图块。这是一种简单且高性能的技术,但它有几个必须单独解决的缺点:存在可见的重复图案,并且在一个像素中混合大量图块的成本很高。
我们的技术使用带有自定义修改的泼溅方法来克服这些问题。为了消除重复的图案并使纹理特征在所有范围内看起来一致,我们有微观、宏观和全局尺度的图块,并且每个图块覆盖特定的距离。对于相机来说,这使我们即使在特写视图中也能保留全局和宏观特征,并使用全局贴图作为调色工具。
混合微观、宏观和全局法线或高度是非常简单的方法。但是,混合颜色以保留所有范围的特征需要以下方法:获取微观颜色,然后获取宏观颜色减去微观颜色的平均值。对于宏观和全局也是如此,最后对这些值进行求和。这里你应该小心,尽量不要让一个图块内的数据不一致,否则平均值可能会变成垃圾。
此方法有一些限制,但如果您遵循一些准则,一切都应该没问题。无论如何,我们正在使用 PBR 方法,因此已经有很多规则。多一个并不会改变任何东西。让我们全面看看它是如何工作的。这是全球范围内的,并且这只是反照率颜色。这是宏观层面的。这是微观尺度。请注意可见的重复图案,以及它如何通过我们的自定义混合方法消失。
地形上的每一个瓦片实际上都是一个具有三个LOD的材质,它覆盖了特定的范围和距离,并且具有特定的投影变换等参数。反过来,每个 LOD 都由一组 PBR 参数描述,因此它是全面的 PBR 方法。为了使混合更加准确、物理上正确,我们使用基于高度图的方法,其中混合值乘以图块的每像素高度值,以实现更自然的过渡。
请注意从石头到草材质的过渡是如何得到改善的,显着改善。基于高度图的混合还有助于显著减少采样量,因为我们可以找到主导图块索引,并仅针对该特定索引而不是整个图块集执行复杂采样。不幸的是,即使进行了优化,这种混合的成本也非常高。
我们对混合结果感到满意,但必须找到一种解决方案,使其能够在各种硬件上进行扩展。我们的实现基于程序虚拟纹理方法。它不仅使我们能够显著最小化像素着色器负载,而且对曲面细分优化也有很大帮助。烘焙结果以供进一步使用的能力对于隧道和道路非常有帮助。
虚拟纹理的主要组成部分是图块缓存,它实际上是将预混合的地形材质存储在一个或多个纹理类中,以及间接贴图层次结构,用于将世界空间坐标转换到图块缓存纹理空间。每个图块都有固定的大小,并且完全在 GPU 上动态压缩为 DXGI 1 或 DXGI 5 格式。
不幸的是,我们仍然需要支持DXGI 9硬件,并且由于缺乏无类型资源的支持,我们需要在那里执行从GPU到CPU的缓慢复制。因此,我们为 DXGI 9 提供了额外的代码路径。每个图块上的填充和额外的 mip 用于实现良好的硬件过滤结果。我们正在使用各向异性过滤。
在那里,图块缓存由四个不同大小和格式的纹理形成。这些纹理的大小由目标硬件上的可用视频内存定义,并且可能有很大差异。为了将场景细分为图块,我们使用四叉树分区。然后将细化结果存储在间接映射中。对于我们常用的一平方公里八级分区的地图来说,大约需要100MB的内存。
确实,这对我们来说是不能接受的。考虑到整个切片缓存为 64 到 256 MB,所以我们需要寻找另一种方法。这是一个巨大的数字。为了解决这个问题,我们使用了过去的好武器:剪辑贴图方法。当前的实现支持两级剪辑贴图,内存消耗大约小 50 倍。
为了加速间接地图更新,我们使用了环形更新技术,该技术在 2007 年的论文中有介绍。
Slide 30 — 00:27:42

📌 要点汇总
- 间接地图覆盖场景特定范围,结合地形与静态/动态对象
- 后处理过滤器计算物体距离并混合虚拟纹理数据,成本低廉效果佳
- 虚拟纹理中烘焙大量贴花(可达数十万),统一变形技术提升视觉可信度
- 可玩区域约一平方公里,远平面达三万米,采用特殊优化地形技术简化结构方案
- 使用平铺材质模型实现详细山脉形状,内外域混合功能增强一致性
- 实现廉价距离水近似以模拟海洋效果
我们来看看每张间接地图都覆盖了哪些区域。这是一个外部和内部的间接映射,它们覆盖整个场景的特定范围。
事实上,我们拥有间接地图,使我们能够实现简单但非常强大的功能,将地形与场景中的任何静态或动态对象混合。这是通过一种后处理过滤器来完成的,它计算物体和地形之间的距离,获取虚拟纹理数据并根据到地形的距离进行混合。所有这些复杂的计算都是在屏幕上的红色像素中完成的,因此它实际上是一种非常便宜的技术,并且结果令人印象深刻。
我们还在虚拟纹理中烘焙了很多贴花,说实话,贴花的数量没有限制,可能会有几十万个。这可以让我们统一位移技术,因为贴花高度在烘焙步骤中与地形材质高度混合,所以变形是统一的。统一位移技术也被用来产生漂亮、可信的坦克痕迹,在雪地上这一点尤其明显。
正如我提到的,我们的可玩区域大约是一平方公里,但远平面远远超出了这个距离,大约有三万米。因此,为了覆盖该区域,我们开发了一种特殊的优化地形技术,如上所述。因为我们无法到达可玩区域之外的地形,所以我们使用了简化的结构方案和简化混合。
通常来说,为了实现具有详细形状的好看的山脉,我们的艺术家会使用具有适当材质的模型,尤其是与地形非常相似的平铺材质。为了使我们的外域与可玩区域更加一致,我们还有另一个功能,例如内部和外部地形几何形状之间的小平滑混合、植被混合掩模以及廉价的距离水近似来近似海洋或其他。
最后,在屏幕上展示的效果如下。
Slide 31 — 00:30:19

📌 要点汇总
- 利用特定技术按需渲染地形贴图,优化性能和资源利用
- 采用曲面细分技术仅在必要时应用,保证视觉效果同时减少资源消耗
你可以看到我们是如何利用特定技术来渲染不同类型的地形贴图,以解决性能和资源消耗的问题。特别地,我们只在需要时才使用曲面细分技术。
\n\n
这样可以确保在不影响视觉效果的同时,最大限度地减少对系统资源的需求。
Slide 32 — 00:30:29

📌 要点汇总
- 统一几何方法显著加快了CPU和GPU上的绘制提交速度
- 改进了电镀、虚拟纹理,提升了材质混合性能与质量,支持详细特写视图生成
- 纹理LOD计算、图块压缩及外域处理技术得到优化,内存管理更高效安全
- 水系统为最后一个讨论主题
相机用红色标记。
总之,我想说的是,统一几何方法使我们能够显著加快CPU和GPU上的绘制提交速度。改进了电镀和虚拟纹理,统一了地形材质和贴花的使用,并提高了材质混合的性能和质量,允许生成非常详细的特写视图。
有很多功能需要完成。更好的是,纹理LOD计算、图块压缩速度和质量都有所提升,还有单独的外域处理技术是高效且安全的内存管理方式。但找到一种方法将两者统一起来会很酷。
最后一个主题是水系统。
Slide 33 — 00:31:20

📌 要点汇总
- (Transitional content, no key points)
它既不是游戏的功能,也不是我们游戏的主要内容,但却是不可或缺的一部分。
Slide 34 — 00:31:25

📌 要点汇总
- (Content too short, no key points)
几乎所有地图都包含一种或另一种类型的水面。
Slide 35 — 00:31:29

📌 要点汇总
- 关注大规模水域及小型水体的真实模拟
- 包括水面动态效果(波浪、涟漪)及光的折射与反射细节处理
海洋、大海、河流,或者只是一个大水坑。良好的水模拟至关重要。
无论是大规模的海洋和湖泊,还是细小的溪流和水洼,都需要精确而逼真的水体表现。这不仅包括水面的动态效果,如波浪和涟漪,还包括光线在水中的折射与反射等细节处理。
Slide 36 — 00:31:34

📌 要点汇总
- 使用剪辑贴图和自适应曲面细分技术创建动态几何形状和波浪效果,保持性能。
- 波浪生成基于动画序列集,使用两个波混合、稳定的世界空间噪声及表面粗糙度处理反射。
- 纹理映射处理水流和可变水密度等全局特征,折射采用简单近似方法,反射通道结合屏幕空间与视差校正技术。
- 使用mips生成反射缓冲区以覆盖不同粗糙度级别并减少闪烁,自动模拟水道并修改湿度系统。
- 粒子效应包括泡沫、气泡和变形类型,由艺术家控制高度输出以实现详细水面变形效果。
至少需要使整体画面保持一致。为了能够生成可信的水面,我们需要准备许多组件,如屏幕上所示。
在本节中,我们将一一更详细地讨论以下主题。让我们从几何开始。在这里,我们使用剪辑贴图方法并用可见的水细胞预烘焙 wat3。足够的土地,因为水实际上覆盖了整个场景的一小部分。为了拥有动态几何形状、波浪,并且不牺牲性能,我们使用了一种类似于具有自适应曲面细分的地形方法的技术,其中曲面细分密度取决于坡度或波浪高度。
自适应曲面细分的结果显示在屏幕上,因此非常令人印象深刻且详细。这是一个线框。
因为我们必须模拟许多不同类型的水面,而不仅仅是海洋,所以我们决定不使用程序方法。例如,基于快速傅立叶变换的方法,如 Tessendorf 的著名论文中所述。相反,我们的波浪生成方法基于正常高度和滑行的动画序列集。通过使用两个波混合、稳定的世界空间噪声以及基于表面粗糙度的更好的反射处理来避免重复图案。
水流和可变水密度等全局特征由许多纹理处理,这些纹理映射在可玩区域上。它们在编辑器中生成,但艺术家可以根据需要对其进行修改。折射是基于深度和水法线的简单近似,因此这里没什么特别的。替代反射通道基本上是从反射方向渲染的复制场景。显然,这确实很昂贵,所以我们决定不使用这种方法。
新的反射是两种技术的混合:屏幕空间反射和视差校正反射探针,它们存储预先计算的反射数据,这些数据是离线烘焙的。这种方法使我们能够实现良好的性能、可扩展性以及与常见照明的一致性,这实际上通常很难通过简化的老式反射通道来实现。
在此图像上,您可以看到视差校正的反射探针,现在有了屏幕空间反射。为了准确模拟远处的反射并能够覆盖水面上的各种粗糙度级别,我们使用 mips 生成反射缓冲区。每个 mip 用于特定的粗糙度范围。这也有助于减少闪烁,尤其是在远处。
水道是根据世界空间中的水面大小和高度自动模拟的。生成的带有掩码的缓冲区随后由湿度系统使用来修改适当的缓冲区通道,因此它是完全自动的。在此图像上,您可以注意到海岸看起来很湿,所有穿过水面的物体也变得湿了。
最后但并非最不重要的一点是粒子效应。我们使用其中的几种类型,每种类型都有自己的用例。它们聚集在屏幕空间中并与水面对齐。泡沫粒子在水面上产生泡沫,例如在坦克移动或在水中射击后。水下粒子再次模拟水下产生的气泡。例如,坦克运动后。
最重要的粒子类型是变形。这是完全由艺术家驱动的技术。基本上,它是一个与水面对齐的粒子效果,但它不是输出颜色,而是输出高度。然后我们根据高度生成法线并修改水面。这种方法允许通过艺术家的完全控制来实现非常详细的变形,并且与程序方法相比,对模拟的复杂性或分辨率没有任何限制。
Slide 37 — 00:36:50

📌 要点汇总
- (Transitional content, no key points)
现在也一样,但我们在行动。正如您所看到的,这确实很难实现。
这样的。
Slide 38 — 00:36:56

📌 要点汇总
- 水系统涵盖游戏中常见水面情况,美术驱动变形提升真实感
- 未来工作重点:改进反射、折射、次表面散射及PBR方法匹配
- 新旧图像在相同硬件上帧数接近,支持从2004年至今的硬件
- 计划进一步图形改进和优化CPU核心利用
- 感谢渲染研发艺术工具团队及Volta开发团队
通过任何现有程序方法实现高质量变形。总而言之,我们的水系统帮助我们涵盖了游戏中所有最常见的水面情况,而美术驱动的变形可以显著改善真实水面的感觉。
但与往常一样,未来还有很多工作要做。更好的反射和折射、精确的次表面散射、改进的照明以及 PBR 方法中的更好匹配。我快要完成了,在进行总结之前,我想再次向您展示旧图像与新图像,并再次说明我们支持从 2004 年至今的所有硬件,并且在同一硬件上的两张图片每秒显示的帧数几乎相同。
总之,我想说的是,在本次演示中,我仅介绍了我们在称为 Core 的新引擎中所做的部分工作。未来我们还有很多可以改进的地方。然而,两个主要目标是保持硬件范围不变并制作最新的图形。我希望我们能够实现这一目标。
未来,我们计划专注于进一步的图形改进,当然还要更好地利用所有可用的 CPU 核心。顺便说一句,如果您有兴趣,我鼓励您与英特尔人员一起看一下我关于多核时代自适应采用 Volta 的演示。
我要非常感谢渲染研发艺术工具团队,当然还有整个 Volta 开发团队。感谢您的关注,很高兴回答您的问题。
Slide 39 — 00:38:54

📌 要点汇总
- (Transitional content, no key points)
正如我所承诺的,有一些附有详细信息的幻灯片。你可以稍后看一下。
我说完了。嗨,讲得很好。我有三个问题。
一是关于列车LD系统。您选择不同 LD 代码的标准是什么?请您重复一下您的问题好吗?
我的意思是因为我们有不同的细节地形块。您如何根据距离或根据您自己来选择这些块?
你的意思是渲染水的几何形状吗? 呃,是地形几何。 是的,所以这实际上就像一种通常的地形方法。所以我们有一个几何图形的剪辑贴图,我们只是有不同的高度分辨率,就像基于距离的顶点网格一样,我们有一个最接近的缝合。
就像 LOD 一样。 哦,是的。所以你只需要使用距离。 是的。 您已经提到您将改进它。 是的。所以这就像绘制实际的几何图形。 是的。但对于曲面细分来说,曲面细分就像几何图形之上的一个附加步骤。所以我们只是用通常的几何体像水一样渲染,但是对于变形,我们只在区域上使用曲面细分。
在需要实际曲面细分的地方,所以我们在相机附近再次计算。曲面细分始终在相机附近工作,并且我们自适应地计算几何图形的每个相似补丁上的曲面细分的实际级别应为多少。
好的。 另一个问题:您提到您在DX9上做了一些技巧来进行虚拟纹理压缩。 是的。所以是的,在 DX11 上我们可以。就像完全在 GPU 上完成所有工作一样。 我的意思是,生成图块,将其压缩到 DXT1 或 DXT5,然后将其存储回缓存。
但在 DXT9 上,我们没有类似的无类型资源,因此我们需要生成图块,然后在 GPU 上对其进行压缩。然后我们应该下载回 CPU,以适当的DXT1和DXT5格式重新创建结果,并上传回缓存。 我的问题是,如何在 GPU 中计算 DXT1 的压缩? 只是使用它并不在CPU上。 它在 GPU 上。 是的,在 GPU 上。 所以你只是普通的代码,你可以在互联网上找到它。
好的。好的。好的。谢谢,非常好的谈话。
我有一个问题,你提到的很多技术都严重依赖于曲面细分。那么,DX9 设备上的缺点、缺点是什么?
是的。所以在 DX9 上,正如我之前提到的,所有的曲面细分技术实际上都只是顶级技术。 因此,我们有基线和镶嵌,就像在什么技术之上的附加功能。 或者水或排水。 所以在 DX9 上,我们只是没有那里的海水淡化。
就这样。好的,谢谢。 是的,所以毫无疑问。 谢谢,伙计们。
Slide 40 — 00:43:13

(该幻灯片时间段内未检测到语音内容)