Unreal Engine* 全新 Chaos 物理系统与英特尔 CPU 深度优化强强联合带来令人惊叹的效果

签署人: Jeff Rous IDZSupport KS

已发布:07/15/2019   最后更新时间:06/11/2019

简介

“好莱坞品质”的物理模拟与破坏系统在 2019 年游戏开发者大会 (GDC) 上精彩亮相。在 State of Unreal* 演示中,Epic Games* 首次展现了在英特尔工程师帮助下开发的 Chaos 物理系统。Chaos 演示以虚拟现实游戏《Robo Recall*》为背景,展示了系统的全新破坏工具、动态应变评估以及改进的物理参数。这部动作类短片获得了巨大成功。

realistic destruction
图 1.Chaos 物理系统展示逼真的破坏效果,在 GDC 2019 上大受欢迎。(图片来源:State of Unreal)

“我们与 Epic 的物理团队密切合作,呈现了这场视觉盛宴,”英特尔图形与多核设计团队的高级开发人员关系工程师 Jeff Rous 说。

Epic 首席技术官 Kim Libreri 感谢英特尔在优化代码方面提供的“巨大帮助”。他声称:“实时渲染越来越能重现真实世界的样子。”关于“与虚拟世界中的对象互动”,他说,我们不再仅仅局限于“简单的缸体碰撞、布偶、偶尔还有一些布料”,现在是制作复杂宏大场景的最佳时机。全新物理系统可以极大地推动特效和物理模拟,为游戏增添新的元素。

陶醉于 Chaos 的全新功能

“下一代物理将颠覆传统,改变游戏规则,” Libreri 在谈到全新 Chaos 物理系统时说,“我们汇集了来自游戏、电影甚至是学术界的全球顶尖物理专家,目标就是让您大吃一惊。”

Unreal Engine* 4.23 的早期版本将具备以下功能:

  • 引擎内破坏工具
  • 动态应变评估
  • 交互式模拟缓存
  • 使用单一设置实现可扩展性
  • 物理参数字段
  • Niagara 集成
  • 下一代碰撞
  • 材料支持

Libreri 还说,团队希望支持用户充分利用工作站的全部功能。技术美工应该能够创建“超高密度模拟”,在运行时在普通硬件上回放。

深入了解英特尔优化

Libreri 邀请 GDC 与会者参加了随后的技术会议,应邀参会的还有“我们来自英特尔的朋友,他们帮我们进行了优化,确保我们充分发挥处理器的全部功能”。Jeff Rous 在会上发表了演讲,介绍了新系统的内部构件,以及英特尔如何帮助我们编写多核友好型代码。在 Epic GDC 展台上,数百位开发人员体验了演示,兴高采烈地将混凝土喷射成巨大的碎石堆,效果极为逼真。

realistic smoke, dust, and rubble
图 2.全新 Chaos 物理引擎让烟雾、灰尘、碎石看起来更加逼真。(图片来源:State of Unreal)

Rous 透露,演示的多个方面都受益于英特尔优化;具体而言,低级解算器、数据结构和线程并行性方面的代码都发生了变化。

英特尔® 隐式 SPMD 程序编译器是关键

为了赶上 GDC 的截止日期,Rous 和 Epic 的工程师们一起工作了很长时间,但他说,真正的英雄是 英特尔® 隐式 SPMD 程序编译器(英特尔® ISPC)技术,它可以充分利用多核的功能。他解释说,英特尔 ISPC 是面向 C 编程语言变体的编译器,支持“单指令多数据” (SIMD) 编程的扩展。SIMD 支持开发人员用单个指令执行多次计算,从而显著提高处理器吞吐量。

Rous 指出,自 21 世纪初以来,CPU 就拥有程序员用来加速代码的矢量单元。“SIMD 可以让您用一条指令完成八次浮点运算,”他解释道。“C++ 存在一个问题,就是很难让编译器对任何东西进行矢量化。常见的解决办法是编译器内联函数[内置函数],您必须使用新的指令集进行更新。”

英特尔 ISPC 可以很好地解决这一问题。英特尔 ISPC 像是在 CPU 上运行的着色器语言,为您提供隐式并行性,”Rous 继续说。和着色器语言一样,英特尔 ISPC 默认采用 SIMD,并且执行模式和 GPU 着色器类似。

它的一大优势是,程序员可以编写一次英特尔 ISPC,然后编译成许多矢量化指令集,例如 SSE4、AVX 和 AVX2。“如果要编译多个指令集,自动检测机制会根据用户的 CPU 选择合适的函数。”Rous 说。“新的指令集到达时,不再需要更新内联函数。”开发人员只需要重新编译。

目标是确保英特尔 ISPC 用法尽可能无缝。今年晚些时候,Chaos 物理系统将在虚幻引擎 4.23 中发布,届时开发人员能够在自己的游戏中使用英特尔 ISPC。流程很简单:在构建中包含英特尔 ISPC 模块,然后将英特尔 ISPC 文件添加至项目。作为构建过程的一部分,英特尔 ISPC 包含将生成 C++ 头文件。Unreal 构建工具将负责处理其他流程,包括编译几个指令集,并将这些对象文件链接至最终的可执行文件中。

未来显著加速

英特尔 ISPC 经常为包含 4 宽矢量 SSE 单元的 CPU 提供显著加速。包含 4 宽矢量 SSE 单元的 CPU 会产生更好的效果,编写内联函数代码方面不会有任何困难。英特尔 ISPC 也支持跨多个内核实施并行化,这样有利于根据内核数量和矢量单元大小来编写性能显著提高的代码。

使用英特尔 ISPC 时,程序似乎成为了常规串行程序,但执行模式可以让程序实例在硬件上并行执行。(请参阅英特尔 ISPC 文档,了解更多详细信息和相关示例。)

Chaos 物理系统中的性能关键区域可以极大地受益于英特尔 ISPC。例如,在进行物理交叉测试时,可以使用英特尔 ISPC 解锁的 SIMD 同时测试多次交互。另外一大优势是,程序员可以编写一次英特尔 ISPC,然后编译成许多矢量化指令集,例如 SSE4、AVX 和 AVX2。如果要编译多个指令集,自动检测机制会根据您的 CPU 选择合适的函数。新的指令集到达时,不再需要更新内联函数;重新编译即可!

Chaos physics system delivers an interactive environment
图 3.Chaos 物理系统提供一个对提高沉浸感至关重要的交互环境。(图片来源:State of Unreal)

开发人员面临巨大机遇

Unreal Engine 是世界上首屈一指的 AAA 游戏引擎之一,为许多最受欢迎的游戏提供支持。下一版 Unreal Engine 4 将支持所有开发人员在游戏中使用英特尔 ISPC。现在就做好准备:浏览下面的链接,阅读文档,然后在下一个项目中充分利用这一关键技术。

资料来源

英特尔 SPMD 程序编译器下载

Junkins, Stephen:我们可以从英特尔 SPMD 程序编译器中学到什么?

Kennedy, Jon:使用英特尔® SPMD 程序编译器实现游戏 CPU 的矢量化

Unreal Engine:Chaos 高性能物理和破坏系统完整演示

Unreal Engine:State of Unreal(56:15 开始展示 Chaos)

观看录制的 GDC 视频:面向一切的可扩展性:英特尔技术支持下的 Unreal Engine* 4

产品和性能信息

1

性能因用途、配置和其他因素而异。请访问 www.Intel.com/PerformanceIndex 了解更多信息。