Quantcast
Channel: 英特尔开发人员专区文章
Viewing all articles
Browse latest Browse all 154

游戏公司借助英特尔® Sample Code 加速发展

$
0
0

下载 PDF

无论是独立的游戏开发人员还是以游戏开发为终身职业的游戏开发人员,都将受益于他人编写的代码。无论是对于了解新特性、解决以前难以攻克的问题,还是对于避免从头编写代码以节约时间,自由许可示例代码都是一种有益工具。英特尔在英特尔® 开发人员专区游戏开发人员板块提供了丰富的游戏示例代码。

Intel Game Developer Community Code Samples
1英特尔通过下列网址提供游戏示例代码:https://software.intel.com/en-us/gamedev/code-samples

过去几年,英特尔与许多游戏开发人员开展合作,帮助他们优化游戏在英特尔® 硬件上的运行性能。我们经常会提出重要见解或开发出卓越功能,它们应该以示例代码的形式与世界共享。有时,为充分满足开发人员的需求,我们会创建相应的示例。过去几年,我们创建的示例能够适用于 Blizzard 和 Codemasters 发布的游戏,例如自适应体积阴影图(Adaptive Volumetric Shadow Maps,简称 AVSM)、保守形态抗锯齿(Conservative Morphological Anti-Aliasing,简称 CMAA)以及 软件遮挡剔除 (Software Occlusion Culling)

AVSM 能够显著提升《超级房车赛:起点 2 (Grid* 2)》的运行性能

多年以来,Codemasters 与英特尔工程师一直在开展游戏开发合作。针对《超级房车赛:起点 2》,Codemasters 想方设法提高游戏在英特尔硬件上的视觉效果。他们与英特尔工程师们展开讨论,决定使用英特尔 PixelSync 特性增加烟雾真实感。该特性被认为可使赛车游戏达到高可视性效果,用户可借助它让赛车产生很大的烟雾痕迹。它源于英特尔工程师 Marco Salvi,他使用 DirectX 11 创建了 AVSM 实施方案,并在 2010 年的国际图形学年会 (Siggraph) 上对其进行了演示。英特尔示例代码使用原子操作确保无规则透明度 (OIT)。为了将该方案用于《超级房车赛:起点 2》,Codemasters 和英特尔工程师开展了合作,以使用 PixelSync 对算法进行修改,确保它可在有限内存中运行。有限内存中的AVSM修改版本也作为英特尔示例进行了发布。

Codemasters 和英特尔工程师开展了为期 14 多天的现场集成合作。当 Codemasters 得到了借助游戏本身的粒子效果来生成 AVSM 纹理和应用自阴影的工作测试层时,便可认为完成了初步实施。一完成初步实施,Codemasters 的工程师就可对系统进行扩展,以让动画纹理更好地匹配游戏画面和视效。同时,Codemasters 的艺术家设计了用于补充新技术的粒子效果,使用了大量更小粒子而非大广告牌来展示多种烟雾粒子。Codemasters 的工程师发现,改善的灯光效果会将用户的注意力吸引到加法混合 (additive-blending) 粒子系统中的排序问题上来,从而需要返工重新创建更可靠的 CPU 粒子排序。

在确保了出色效果后,工程团队还需寻找有可能在极端情况下发生的任何问题。由于该游戏支持受玩家控制的摄像头,因此该摄像头可能会因距离烟雾效果太近以至于屏幕布满烟雾。这会导致大量重绘,且 AVSM 示例无法对其进行处理。工程团队将 AVSM 与按照镜顶而非像素和灯光进行镶嵌的屏幕空间相结合。该新方法成功处理了大量重绘,以应对最糟糕的游戏问题。

英特尔示例代码在解决这种问题方面发挥了多种作用。最初的研究工作激励 Codemasters 添加新特性。于是,Codemasters 进行了修改,使示例更好地匹配他们的游戏。随后,英特尔更新并重新发布了经过改善的示例以供其他游戏开发人员使用。

Before and After Applying Intel AVSM Sample
2 Codemasters《超级房车赛:起点* 2应用了英特尔® AVSM 示例以达到更好的视觉效果

CMAA 使《魔兽世界*》的画面效果更加流畅

鉴于《魔兽世界》资料片《德拉诺之王*》可达到震撼的画面效果,Codemasters 将新抗锯齿算法添加到游戏图形选项。CMAA 用于为主流硬件提供快速有效的抗锯齿效果,是一种基于图像的后处理技术,由英特尔工程师 Filip Strugar 开发。通过在最后帧缓冲器上运行,它可在独立于渲染管线中其它变更的情况下实施抗锯齿。如《魔兽世界》某些最新延迟渲染技术所表明,该方法支持独立于所选明暗模型实施抗锯齿,为开发人员提供更多灵活性。

CMAA 还是一种可简单修改的算法,开发人员可自由地针对特殊用途对它进行修改并采取增强措施。《魔兽世界》6.1 内容补丁含有另一种名为 SSAA 2x + CMAA 的新抗锯齿模式。这样,通过在向下采样至原始分辨率之前针对 2x 帧缓冲对象实施 CMAA 计算,可将原始超级采样与后处理抗锯齿相匹配。通过算法组合可为高级用户提供最高保真度抗锯齿效果。

开发人员永远都是根据技术的开发价值而制定决策。就《魔兽世界》而言,由于英特尔提供了CMAA 示例,CMAA 试用决策的制定变得更加容易。该示例具有默认的测试场景,但仍允许开发人员插入自己的图像以预览 CMAA 效果并以毫秒计算分辨率或测量用例的增加成本,从而帮助开发人员制定成熟、明智的决策。《魔兽世界》开发团队可将当前 Pandaren 袭击内容的屏幕截图放入该示例中,并查看该性能成本下可达到多大程度的边缘平滑效果。

Intel CMAA Sample on a Custom Image
3英特尔® CMAA 示例具有默认场景,还支持在自定义图像上对效果进行测试

一旦决定好将 CMAA 添加至游戏,就需要对《魔兽世界》引擎做出某些更改,以支持 CMAA 使用的 DirectX 11 特性。虽然该技术成功地用于了渲染管线的尾端,但仍需以特定的方式准备数据。该算法需要有只读深度缓冲器视图,这意味着某些引擎可能需将可选的只读标志添加到纹理和帧缓冲器对象中。它的某些功能及性能还要依靠乱序访问视图 (UAV 又称 ImageBuffer)来实现。虽然很多 DirectX 11 引擎都实现了对 UAV 的支持,但其它引擎还需完成更新才能实现 UAV 支持。在这些支持加法之外,只对某些结构进行少许修改,就可几乎不加选择地对该示例的着色器代码进行重复利用。

CMAA 在成本价值和整体流程最小侵袭之间取得了重要平衡。这允许它以 90%-120% 的成本提供与 FXAA 3.8 相比更好的图像质量和稳定性。“增强型子像素形态学反锯齿” (SMAA) 是另一种受欢迎的后处理抗锯齿选择;最经济的版本 —— SMAA 1x 可提供更多抗锯齿功能,产生较少整体图形产品,但会造成更多的模糊及形状失真现象,且更易受到轻微帧间变化(短暂失稳)的影响,所有这些使它的运行成本与 CMAA 相比增加了 30%-120%。Leigh Davies 和 Filip Strugar 对这些算法的分析可用于 IDZ。

与 MSAA 不同,CMAA 的平滑功能还将能够用于 alpha 测试的纹理,为帧提供更加完善的抗锯齿。《德拉诺之王》甚至证明了,CMAA 可与 SSAA 相匹配,它所提供的抗锯齿效果与将它用于其他任何选项时相比,都更为美观和精确。该算法用于在 15W 第四代智能英特尔® 酷睿™ 处理器上以 1600x900 分辨率运行时,将时间保持在 3 毫秒以下。从算法复杂性角度来看,它的成本可按照 ½ 分辨率 3 pass + 1 最终原始分辨率 pass 来计算。

Blizzard's World of Warcraft uses CMAA
4使用 CMAABlizzard 的《魔兽世界》*能够在主流 PC 上实现顺畅的运行性能。

软件遮挡剔除可减少《魔兽世界》*中不必要的渲染工作。

另一个对《魔兽世界》具有吸引力的英特尔示例是软件遮挡剔除。通过仅渲染摄像头实际能够看到的物体,渲染时间大幅缩短,且几乎不会影响结果。Fabien Giesen 撰写了包含多个部分的博客系列,旨在分析英特尔示例(已经得到更新),且 Blizzard 认为它很好用。

如往常一样,该示例代码需要进行重写,以适合游戏引擎。Blizzard 工程师通过采用该示例的内核,独立构建了其余部分。2013 年 3 月首次实施时,整个遮挡流程仅耗费了 0.2 - 1.5 毫秒和较低成本。此后,它日益成为了该游戏中不可或缺的有益部分。

这些技术的使用帮助《魔兽世界》继续流畅运行,同时,Blizzard 增强了游戏的视觉效果,凭借主流硬件为用户提供畅快的游戏体验。自由选择全套机器可帮助工程师发掘新机会,而且情况已经在向好的方向发展。

英特尔® Sample Code 面向所有人

英特尔游戏示例代码团队竭力满足游戏开发人员的需求,并努力发现实际要求,构建可供所有开发人员使用的有效实施方案。英特尔® Code Samples 许可不会减慢您的开发进程,也不会妨碍您发布游戏。本文所举实例旨在表明英特尔开发人员专区的示例代码能够通过各种方式帮助提升游戏的图形保真度和运行性能。

参考文献

英特尔游戏开发人员社区 (Intel Game Developer Community) 中的代码示例 - https://software.intel.com/en-us/gamedev/code-samples

自适应体积阴影图 - https://software.intel.com/en-us/blogs/2013/03/27/adaptive-volumetric-shadow-maps

保守形态抗锯齿 (CMAA) - 2014 年 3 月更新 - https://software.intel.com/en-us/articles/conservative-morphological-anti-aliasing-cmaa-update

《德拉诺之王》中基于边缘检测的后处理(GDC 演示由 Blizzard 和英特尔® 实施) - https://software.intel.com/sites/default/files/managed/4a/38/Edge-Detection-based-Post-Processing-in-Warlords-of-Draenor.pdf

工程师研讨会:《德拉诺之王》中的引擎演进 - http://us.battle.net/wow/en/blog/15936285/

英特尔® Code Sample 许可协议 - https://software.intel.com/en-us/articles/code-samples-license-5/

基于像素同步的无规则透明度近似法 - https://software.intel.com/en-us/articles/oit-approximation-with-pixel-synchronization-update-2014

软件遮挡剔除更新 2 - https://software.intel.com/en-us/blogs/2013/09/06/software-occlusion-culling-update-2

 

作者介绍

Brad Hill 目前担任英特尔开发人员关系部门的软件工程师。Brad 负责调研关于英特尔硬件的新技术,并通过英特尔® 开发人员专区以及在开发人员会议上与软件开发人员分享最佳方法。此外,他还担任学生/独立黑客松的工程总监,负责为全美范围内高等院校的优秀黑客松/游戏开发活动 (gamejam) 提供代码运行支持。

John Hartwig 目前担任英特尔开发人员关系部门的软件工程师。John 主要负责与 PC 客户端和 Android 移动设备领域的游戏开发人员进行合作,实施优化和推出独特的硬件特性。John 于 2010 年加盟英特尔,最初担任 GPGPU 和媒体驱动程序的显卡驱动开发人员。他能够自己制作艺术玩具,并获得了德保罗大学游戏开发学士学位。


Viewing all articles
Browse latest Browse all 154

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>