切换到宽版
  • 128阅读
  • 0回复

英特尔与虚幻引擎4合作激发潜能 [复制链接]

上一主题 下一主题
离线天の川
 

本文为GALAXIX网站翻译整理。转载请注明链接。

Epic的虚幻引擎* 4.19的发布标志着优化英特尔技术的新篇章,特别是在优化多核处理器的情况下。 在过去,游戏引擎传统上遵循控制台设计点,在图形功能和性能方面。 一般来说,大多数游戏都没有针对处理器进行优化,这可能会使大量PC性能闲置。 英特尔与虚幻引擎4的合作旨在开发人员在引擎中工作时尽快释放游戏的潜力,以充分利用PC平台提供的所有额外处理器计算能力。

英特尔对虚幻引擎4.19版的支持工作提供了以下功能:
•增加工作线程数以匹配用户的处理器
•提高布料物理系统的吞吐量
•对英特尔®VTune™放大器的集成支持

这些进步中的每一项都使虚幻引擎用户能够充分利用英特尔®架构并利用多核系统的强大功能。诸如布料物理,动态压裂,处理器粒子以及英特尔工具(如英特尔VTune Amplifier和C ++编译器)的增强可操作性等系统都将受益。本白皮书将详细讨论关键改进,并为开发人员提供更多理由来考虑将虚幻引擎用于他们的下一个PC游戏。

虚幻的引擎历史

早在1991年,Tim Sweeney创立了Epic MegaGames(后来放弃了“Mega”),同时还是马里兰大学的学生。他的第一个版本是ZZT *,一个共享软件益智游戏。他使用面向对象的模型在Turbo Pascal中编写游戏,其中一个令人高兴的结果是用户实际上可以修改游戏的代码。关卡编辑已经很普遍,但这是一个很大的进步。

在随后的几年中,Epic发布了流行游戏,如Epic Pinball *,Jill of the Jungle *和Jazz Jackrabbit *。 1995年,斯威尼开始研究第一人称射击游戏,以利用DOOM *,Wolfenstein *,Quake *和Duke Nukem *等游戏的成功。 1998年,Epic发布了Unreal *,可能是当时最好看的拍摄者,提供更详细的图像并吸引业界关注。很快,其他开发人员就打电话询问是否为自己的游戏授权了虚幻引擎。

在2010年IGN的一篇文章中,斯威尼回忆说,该团队对这些询问感到非常兴奋,并表示他们与这些合作伙伴的早期合作从一开始就定义了他们的引擎业务风格。他解释说,他们继续使用“社区驱动的方法,以及被许可人和我们的引擎团队之间的开放和直接的沟通。”通过专注于创建有凝聚力的工具和消除技术障碍,他们的目标始终是释放创造力。游戏社区。他们还提供了大量的文档和支持,这是早期引擎经常缺乏的。

今天,虚幻引擎为游戏行业中大多数收入最高的游戏提供支持。 Sweeney在2017年3月接受VentureBeat的采访时表示,迄今为止开发者已经使用虚幻游戏赚取了超过100亿美元。 “我们认为虚幻引擎的市场份额是最接近的竞争对手的两倍,”斯威尼说。 “尽管Unity *拥有更多用户,但这仍然存在。这是因为Unreal专注于高端。在Steam *收入排名前100位的游戏中,有更多游戏是Unreal,超过任何其他可授权引擎的竞争对手。“

英特尔协作使虚幻引擎变得更好

目前许可虚幻引擎的游戏开发人员可以轻松利用此处描述的优化。通过扩展可用平台的范围,从具有集成显卡的笔记本电脑和平板电脑到具有独立显卡的高端台式机,这项工作将帮助他们扩大游戏的市场份额。通过确保平台可以提供动态布料和交互式物理等高端效果,优化将使大多数基于PC的系统的最终用户受益。此外,优化的英特尔工具将继续使英特尔®架构成为首选的首选平台。

根据英特尔开发者关系工程师Jeff Rous的说法,英特尔和Epic Games的团队自20世纪90年代末开始合作。 Rous亲自致力于虚幻引擎优化工作约六年,涉及与Epic工程师就电子邮件和电话会议进行广泛合作和充满活力的沟通,以及每年两到三次访问北卡罗来纳州的Epic总部,进行为期一周的深度潜水。他曾参与过特定游戏,例如Epic自己的Fortnite * Battle Royale,以及虚幻引擎代码优化。

在目前的努力之前,英特尔在以前的虚幻引擎4版本中与Unreal密切合作。英特尔®开发人员专区提供了一系列优化教程,从虚幻引擎4优化教程第1部分开始。教程涵盖了开发人员可以在引擎内外使用的工具,以及编辑器的一些最佳实践。和脚本有助于提高项目的帧速率和稳定性。

英特尔®C++编译器增强功能

对于虚幻引擎4.12,英特尔在公共引擎版本中添加了对英特尔C ++编译器的支持。英特尔C ++编译器是基于标准的C和C ++工具,可加快应用程序性能。它们提供与其他流行编译器,开发环境和操作系统的无缝兼容性,并通过卓越的优化和单指令多数据(SIMD)矢量化,与英特尔®性能库集成以及利用最新的OpenMP * 5.0并行编程来提高应用程序模型的性能。



图1:采用英特尔®SIMD流指令扩展,英特尔®高级矢量扩展和英特尔®高级矢量扩展512的标量和矢量化环路版本。

自虚幻引擎4.12以来,英特尔一直在不断更新代码库,并且对渗透者工作负载的测试表明帧速率有了显着提高。

纹理压缩改进

虚幻引擎4也推出了对英特尔快速纹理压缩器的支持。 ISPC代表英特尔®SPMD(单程序,多数据)程序编译器,允许开发人员通过使用代码库轻松地定位多核以及新的和未来的指令集。在集成ISPC纹理压缩库之前,ASTC(自适应可扩展纹理压缩)是最新和最先进的纹理压缩格式,每个纹理压缩通常需要几分钟。在Sun Temple *演示(虚幻引擎4样本场景包的一部分)上,压缩所有纹理所花费的时间从68分钟到35秒,质量优于之前使用的参考编码器。这使内容开发人员能够更快地构建项目,从而节省了典型开发人员每周的工作时间。

虚幻引擎4.19的优化


英特尔专门针对虚幻引擎4.19的工作为开发人员提供了多种好处。在引擎级别,优化可以改进扩展机制和任务。引擎级别的其他工作可确保渲染过程不会因处理器利用率而成为瓶颈。

此外,游戏开发人员使用的许多中间件系统也将受益于优化。物理学,人工智能,光照,遮挡剔除,虚拟现实(VR)算法,植被,音频和异步计算都将受益。

为了帮助理解4.19中任务系统更改的好处,对虚幻引擎线程模型的概述很有用。

虚幻引擎4线程模型

图2表示从左到右的时间。游戏线程在其他所有内容之前运行,而渲染线程是游戏线程后面的一帧。无论显示什么,因此后面两帧。



图2:了解虚幻引擎4的线程模型。

物理工作在游戏线程上生成并且并行执行。 动画也是并行评估的。 并行评估动画在最近的VR标题Robo Recall *中得到了很好的效果。

游戏线程,如图3所示,处理游戏,动画,物理,网络的更新,最重要的是,操作员滴答作响。

开发人员可以使用Tick Groups控制对象打勾的顺序。 Tick Groups不提供并行性,但它们允许开发人员控制依赖行为以更好地安排并行工作。 这对于确保任何并行工作不会导致游戏线程瓶颈至关重要。



图3:游戏线程和相关的工作。

如下面的图4所示,渲染线程处理生成渲染命令以发送到GPU。 基本上,遍历场景,然后生成命令缓冲区以发送到GPU。 命令缓冲区生成可以并行完成,以减少为整个场景生成命令所需的时间,并使GPU更快地开始工作。



图4:渲染线程模型依赖于将绘制调用分解为块。

每个框架被分解为一个接一个地完成的阶段。在每个阶段中,渲染线程可以变宽以生成该阶段的命令列表:
•深度预通过
•基本通行证
•半透明
•速度

将框架分成块可以使用并行命令列表将它们分成工作任务,这些命令列表可以填充这些任务的结果。那些被序列化并用于生成绘制调用。引擎不会在调用站点加入工作线程,而是加入同步点(阶段结束),或者在足够快的时候使用它们。

音频线程

主音频线程类似于渲染线程,并通过执行以下任务充当较低级别混合功能的接口:
•评估声音队列图
•构建wave实例
•处理衰减等

音频线程是所有用户公开的API(例如Blueprints和Gameplay)与之交互的线程。解码和源工作者任务解码音频信息,并且还执行诸如空间化和头部相关传递函数(HRTF)解包的处理。 (HRTF对于VR中的玩家至关重要,因为算法允许用户检测声音位置和距离的差异。)

音频硬件线程是一个独立于平台的线程(例如,Microsoft Windows *上的XAudio2 *),它直接呈现给输出硬件并消耗混合。这不是由虚幻引擎创建或管理的,但优化工作仍将影响线程使用。

有两种类型的任务 - 解码和源工作者。
•解码:解码压缩源文件块。使用双缓冲来解码正在播放的压缩音频。
•Source Worker:执行源的实际源处理,包括采样率转换,空间化(HRTF)和效果。 Source Worker是INI文件中的可配置编号。 ◦如果您有四个工作人员和32个来源,每个人将混合八个来源。
◦SourceWorker是高度可并行化的,因此如果您拥有更多处理器能力,则可以增加数量。


Robo Recall也是虚幻引擎中新的音频混合和线程系统的第一个出版物。例如,在Robo Recall中,与头部相关的传递函数占用了将近一半的音频时间。

处理器工作者线程缩放

在虚幻引擎4.19之前,任务图上的可用工作线程数量有限,并未考虑英特尔®超线程技术。这导致了具有六个以上内核的系统的情况,其中整个内核将处于空闲状态。在任务图(虚幻引擎的内部工作调度程序)上正确创建正确数量的工作线程允许内容创建者扩展视觉增强系统,如动画,布料,破坏和粒子等


  1. if (NumberOfCoresIncludingHyperthreads > NumberOfCores)
  2.     {
  3.       NumberOfThreads = NumberOfCoresIncludingHyperthreads - 2;
  4.     }
  5.     else
  6.     {
  7.       NumberOfThreads = NumberOfCores - 1;
  8.     }


并行工作的第一步是打开游戏可以使用所有可用内核的可能性。 这是使扩展成功的基本问题。 随着4.19的变化,内容现在可以这样做,并通过布料物理,环境破坏,基于处理器的粒子和高级3D音频等系统充分利用发烧友处理器。



图5:虚幻引擎4.19现在有机会利用所有可用的硬件线程。

在上面的基准测试示例中,系统在3.00 GHz系统的英特尔®酷睿™i7-6950X处理器上得到充分利用,并使用合成工作负载进行测试。

破碎的好处

多核系统中更好的线程利用的一个好处是破碎。破碎系统使用任务图来模拟网格的动态破碎成较小的碎片。典型的销毁工作量包括几秒钟的广泛模拟,然后返回基线。具有更多内核的更好的处理器可以使部件保持更长时间,更多的压裂,这极大地增强了真实性。

Rous认为,开发人员可以通过破坏来做更多事情,并将其称为通过适当内容改善现实主义的良好目标。他说:“通过在更强大的处理器上经过更长的时间后,更多地破碎网格并去除破碎的块,这也很容易扩大破坏程度。” “由于破坏是通过工作线程上的物理引擎完成的,因此处理器不会成为渲染瓶颈,直到很多系统同时出现。”



图6:破碎系统模拟网格的动态破碎成小块。

布料系统优化

布料系统用于通过动态3D网格模拟系统为角色和游戏环境添加真实感,该系统响应玩家,风或其他环境因素。游戏中的典型布料应用包括球员斗篷或旗帜。

布料系统越逼真,游戏体验就越具有沉浸感。一般来说,启用的布料系统越多,场景就越逼真。

开发人员长期以来一直在努力解决使布料系统显得逼真的问题。否则,角色仅限于紧身衣服,并且任何吹过衣服的风都会丢失。然而,对布料系统进行建模一直是一个挑战。

布料系统的早期尝试

据德克萨斯A&M大学的Donald House介绍,Jerry Weil于1986年提出了第一个重要的布料模拟计算机图形模型.House和其他人提供了一个关于“计算机图形学中的布料和服装”的整个课程,并详细描述了Weil的工作。 Weil开发了“一种纯粹的几何方法来模仿悬挂在约束点的织物悬垂,”House写道。 Weil的模拟过程分为两个阶段。首先,用悬链曲线几何近似布料表面,产生约束点的三角形。然后,通过应用迭代弛豫过程,通过内插原始悬链线交叉点来平滑表面。该静态悬垂模型还可以通过应用完全近似和松弛过程一次来表示动态行为,然后稍微连续地移动约束点并重新应用松弛阶段。

大约在同一时间,出现了使用基于物理的布料行为建模方法的连续模型。这些早期模型采用连续体表示,将布料建模为弹性片。这一领域的第一部作品是由Carl R. Feynman撰写的1987年硕士论文,他将连续弹性模型叠加在网格表示上。由于模拟网格尺寸的问题,使用连续体技术的布料建模难以捕获真实布料的复杂折叠和屈曲行为。
粒子模型获得牵引力

粒子模型在1992年得到了相关性,当时David Breen和Donald House开发了一种用于布料悬垂的非连续相互作用粒子模型,它通过相互作用的粒子系统“明确地表示了布料的微观机械结构”,正如House描述的那样。他解释说,他们的模型基于这样的观察:布料“最好被描述为相互作用机械部件而不是物质的机制,并从螺纹之间的微机械相互作用中得出其宏观尺度的动态特性。”1994年展示了如何使用该模型精确再现特定材料的悬垂性,并从那里扩展了Breen / House模型。这些模型中最成功的一个是1996年的Eberhard,Weber和Strasser。他们使用拉格朗日力学重构了Breen / House模型中建议的基本能量方程,得到了一个常微分方程组,动力学可以从中得到计算。

动态网格模拟系统是当前流行的模型。它响应玩家,风或其他环境因素,并产生更真实的功能,如玩家斗篷或旗帜。

虚幻引擎经过多次升级以增强布料系统;例如,在版本4.16中,APEX Cloth *被NVIDIA的NvCloth *解算器取代。这种低级服装解决方案负责运行服装的粒子模拟,并允许集成轻量级且非常易于扩展,因为开发人员现在可以直接访问数据。

更多三角形,更好的现实主义

在虚幻引擎4.19中,英特尔工程师与虚幻引擎团队合作,进一步优化布料系统,以提高吞吐量。 布料模拟与其他物理对象一样对待,并在任务图的工作线程上运行。 这允许开发人员扩展多核处理器上的内容并避免瓶颈。 随着这些变化,场景中可用的布料模拟量增加了大约30%。

即使玩家没有看到那个特定的点,也会在每一帧中模拟布料; 模拟结果将确定布料系统是否显示在玩家的视图中。 假设没有添加更多系统,布料模拟使用处理器在帧与帧之间大约相同的量。 它很容易预测,开发人员可以调整他们使用的数量以适应可用的空间。



图7:内容示例项目中布料系统的示例。

出于本文档中图表的目的,使用的布料演员每个网格有8,192个模拟三角形,并且在捕获数据时都在视口内。 所有数据均在英特尔®酷睿™i7-7820HK处理器上捕获。



图8:虚幻引擎4版本之间的不同处理器用法,基于场景中布料系统的数量。



图9:基于场景中布料系统数量的虚幻引擎4版本之间每秒帧数的差异。

增强的处理器粒子

粒子系统从很早就开始用于计算机图形和视频游戏。它们很有用,因为运动是现实生活的核心方面,因此建模粒子以创建爆炸,火球,云系统和其他事件对于完全沉浸是至关重要的。

处理器粒子可用的高质量功能包括:
•发光
•材料参数控制
•吸引器模块

通过将处理器系统与GPU系统相结合,可以增强多核系统上的粒子。这样的系统很容易扩展 - 开发人员可以继续增加处理器的工作量,直到他们的空间不足为止。工程师们已经发现,将处理器粒子与GPU粒子配对可以通过添加光投射来改善真实感,从而允许光线从他们遇到的物体中反射回来。每个系统都有固有的局限性,因此将它们配对会导致系统大于其各部分的总和。



图10:处理器粒子可以根据可用的余量轻松扩展。

英特尔®VTune™放大器支持

英特尔VTune Amplifier是一种行业标准工具,用于确定线程瓶颈,同步点和处理器热点。在虚幻引擎4.19中,对引擎添加了对英特尔VTune Amplifier ITT标记的支持。这允许用户生成带注释的处理器跟踪,从而深入了解引擎始终在做什么。

ITT API具有以下功能:
•根据您收集的跟踪量控制应用程序性能开销。
•启用跟踪收集而无需重新编译应用程序。
•支持C / C ++和Fortran环境中的应用程序。
•支持跟踪应用程序代码的工具。

用户可以通过启动英特尔VTune Amplifier并使用-VTune开关通过UI运行虚幻引擎工作负载来利用此新功能。进入工作负载后,只需在控制台上键入Stat Namedevents即可开始将ITT标记输出到跟踪。




图11:虚幻引擎4.19中带注释的英特尔VTune放大器跟踪示例。

结论

改进涉及解决每一层的技术挑战 - 引擎,中间件,游戏编辑器和游戏本身。引擎改进不是按标题进行标题,而是使整个虚幻开发者生态系统受益。 4.19的进步改善了整个生态系统中处理器工作负载在以下方面的挑战:
•更真实的破坏,这要归功于每个对象有更多的断点。
•更多颗粒,可以产生更好的动画物体,如植被,布料和灰尘颗粒。
•更逼真的背景角色。
•更多布料系统。
•改进的粒子(例如,与角色,NPC和环境进行物理交互)。

随着越来越多的终端用户迁移到功能强大的多核系统,英特尔计划制定一个路线图,继续利用更高的核心数量。任何线程绑定系统或瓶颈操作都完全在团队的十字准线中。开发人员应确保下载最新版本的虚幻引擎,参与英特尔开发人员专区,亲眼看看。

如果本帖有用,请支持一下论坛发展。
此帖售价 2 G币,已有 0 人购买 [记录] [购买]
购买后,将显示帖子中所有出售内容。
若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID!
此段为出售的内容,购买后显示

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
要让让这里成为动漫爱好者温馨的天堂~~
官方qq讨论群140439020  官方微信公众号galaxixv
关于论坛G币的获得方法,请参考论坛公告的帖子
http://www.galaxix.com/bbs/read.php?tid=3158
快速回复
限200 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个