zoukankan      html  css  js  c++  java
  • CRY ENGINE 3 引擎详解

    转载的。
    “在今年,2009 年CRYTEK 宣布 CRY ENGINE 成功的移植到了家用机的 PS3 以及 Xbox360 平台,在 GDC2009 上正式发布了 CRY ENGINE 3 ( CE3 )。那么就让我们来看看,这次的 CE3 引擎,到底会进化成什么样吧。 ”
    代表欧洲最高水准的游戏引擎

    CRY ENGINE 3 引擎详解

    要说起能够代表欧洲次世代游戏水准的引擎,那么绝对是非德国 CRYTEK 的 CRY ENGINE 莫属。

    德国的 CRYTEK 公司是在 GPU 进入可编程时代后,最先发现游戏引擎的重要性并且着手开发的独立游戏工作室之一,他们于 2004 年开始发售采用初代 CRY ENGINE 引擎制作的游戏 FARCRY ,取得了非常好的销售记录。但可惜的是作为游戏引擎 CRY ENGINE 的销售却并没有获得成功。当然,我们也听说 CRY ENGINE 的部分功能被欧洲的一些游戏公司如 Academy 公司等采用,在一些社团内仍然受到了很高的评价。


    作为 CRYTEK Senior R&D Graphics Programmer 的 Carsten Wenzel


    在 GDC 2009 中相比起技术讲解来说 CRYTEK 更加重视展台上的推广

    在 2007 年登场的 CRY ENGINE 2 ,则升级成为了一款对应最新技术 DirectX 10 的游戏引擎,采用该引擎的首部作品则是 CRYTEK 本公司的游戏 CRYSIS ,至此 CRYTEK 公司在 PC 用游戏引擎领域更上了一层楼,撑起了属于自己的一片天空。随后,在今年,2009 年CRYTEK 宣布 CRY ENGINE 成功的移植到了家用机的 PS3 以及 Xbox360 平台,在 GDC2009 上正式发布了 CRY ENGINE 3 ( CE3 )。那么就让我们来看看,这次的 CE3 引擎,到底会进化成什么样吧。

    CRY ENGINE 3 Sandbox

    作为 CE3 最大的特征就是对应支持 PS3 与 XBOX360 。伴随着对应 PS3 与 XOBX360 ,在构筑起整个游戏世界的 CE3 Sandbox 搭载了支持与 HOST PC 连接的 XBOX360 与 PS3 的同步更新功能。在 HOST PC 上对 CE3 Sandbox 进行的场景设置以及游戏场面的构成等,将不用重新进行读取就能够即时的呈现在 PS3 和 XBOX360 的机器上。

    从初代 CE 引擎开始就已经具备的,可以边制作边进行测试游戏的 What you see is what you play (WYSIWYP) 概念,理所当然的也被整合在了 CE3 Sandbox 中。可以自由自在制作高低不平的场景的地形制作功能,以及能够对在制作完成的地形上的植物进行自动 / 手动繁殖的功能也搭载在了 CE3 中。


    CRY ENGINE 3 SANBOX的运作概念图

    在制作完成的地形上添加自动匹配的道路,河流等,其实整个的制作过程也很有一种在玩诸如上帝也疯狂之类的游戏的感觉。另外,CE3 中还增加了 Vehicle Editor (载具编辑器)功能。

    这是一种能够自由的设计在游戏中登场的载具的工具,可以自由的定义诸如载具的类型,车轮的位置,乘车的位置,以及搭载武器的地方,损伤表现等数据。在实际运行时也可以定义上和外观设计吻合的载具物理效果。

     
    在PC 上进行修改


    修改结果能够迅速的通过 PS3 和 Xbox 360 进行试玩。

    CRY ENGINE 3 图形引擎

    CE3 的图形引擎,基本上是以 CE2 为基础进行加工完善而成的,我们可以认为是对与 PS3 以及 XBOX360 进行的修正 .CE3 并不是改变 CE2 图形引擎的渲染流程,而是给人一种将 CE2 的各个部分在各个游戏平台上进行最大幅度的优化,以便得能够更好的对应各个平台的感觉。

    那么下面就让我们来看一下 CE3 图形引擎中最具有代表性的几个部分吧。

    实时动态光照( Real-time Dynamic Illumination )

    不进行预先的演算,也不限制场景的复杂性,能够实现二次光照与反射等特效。在图中我们能够看到空中漂浮的光点照亮了周围,而被光源照射到的物体身上的反射,就是段落开头说说的特效。不进行预先的演算,不被几何条件所左右是该引擎的最大特点,在实际的效果中,我们还能看到类似与后述的 SSAO 改进型态的特效。

    延迟光照( Deferred Lighting )

    CE3 中采用了和 KILLZONE2 一样的 延迟渲染 (Deferred Shading) 技术,在延迟着色的场景渲染中,像素的渲染被放在最后进行,随后在通过多个 buffer 同时输出。最后进行的是光照渲染,这是一种将存在于该场景的光源通过类似于后处理的渲染来进行的处理。在该流程中,理所当然的要对光照进行计算,这个时候首先需要使用到的是通过多个 buffer 输出的中间值。

    在延迟光照中,就算是遇到动态光源比较多,或者是场景内 3D 物件数量比较多的情况,也能够高效率的进行光照渲染。但是,因为半透明物件需要同普通的渲染管线的效果进行合成处理,所以在遇到场景内半透明的物件比较多的场合,可能会碰到性能的损失,使得延迟渲染的效果无非得到很好的发挥。

    动态软阴影( dynamic soft shadows )

    动态阴影的生成可以说是 CE 引擎的一个特色了CE3 中使用了深度阴影的算法来实现阴影的生成。而阴影边缘的则使用了模糊滤镜,从而实现了平滑的软阴影效果。


    即时动态柔和阴影的生成


    可以表现出真实的空气远近状态


    通过HDR能够表现出更加自然的效果

    容积云与视距雾化

    CE3 支持适用于以场景距离为基础的模拟光散射的远程雾(Distance fog)表现。具体来说,画面内由近到远的那些空旷的部分因为有着比较多的光散射所以雾的颜色也会比较强,而距离试点比较近的场所,因为有着遮挡物的存在,所以光散射比较的稀少,雾的颜色也显得比较的淡。

    另外,引擎也能够表现出那些具有具体的立体形状的容积雾( Volume Fog )的效果。这也是一种我们经常用到的效果。从雾的立体形状的前后之间的差来求出该雾领域的厚度,随后在将视线如何穿透该厚度的方法用像素单位表现出来,来求得雾的色彩。在这一的容积雾中,能够自由的在场景中配置那些由立方体,球状之类形状组合成的任意形状的雾团是该效果的特征。另外,CE3 还支持 Cloud Sprite 的云层表现以及烟雾表现。

    法线贴图与视差遮蔽贴图

    能够表现出那些用多边形无法实现的极其细微的凹凸效果的就是法线贴图技术。法线贴图是将微小的凹凸法线数据纹理化之后的产物,在进行渲染的时候以该数据为基础来表现出细微凹凸阴影的效果。

    从地面的几何参数来看其实是平坦的地面,但是通过视差遮蔽贴图,则可以表现出真实的砂石的凹凸感来。

    将此技术继续进化的话,就是视差遮蔽贴图了。视差遮蔽贴图在渲染的时候不仅仅只参照细微凹凸的法线数据,而是连凹凸的高度数据都考虑进去的一种技术手段。而将凹凸高度的数据纹理化后的产物被称作为高度贴图,基本上视差遮蔽贴图都是和法线贴图 1 : 1 对应使用的。

    在渲染视差遮蔽贴图时,将从高度贴图中读取出的细微凹凸的高度情报与视线的冲突情况进行处理,随后在考虑到视线与凹凸的遮蔽构造的情况下进行阴影的处理。如果视线与凹凸有冲突的话,那么就从视线冲突的地方的法线贴图上提取出法线情报随后进行渲染。这样做的话,就算是几何程度上来看是非常平坦的贴图,但是因为连细微的凹凸之间的遮蔽关系都被考虑了进去,所以最终的效果上能够呈现出非常具有立体感的细微凹凸的表现。

    POLYBUMP 技术支持工具对应多核心与 64bit

    将创作时通过多边形来表现出的细微详细的数据转换成法线贴图的 CRTEK POLYBUMP 技术,在 CE3 引擎中将会对应多核心与 64bit 的操作系统。


    可以从右边的详细凹凸模型中生成出左边的法线贴图的POLUBUMP工具

    新的 POLYBUMP 工具中,不仅仅是法线贴图,也可以制作位移贴图。这一技术同时也可以运用在 DX11 的渲染管线之中。另外,POLYBUMP 工具不仅仅是作为 CE3 引擎的支援工具,也可以作为一种独立的工具来进行使用,例如,可以作为 3ds Max 等的 DCC 工具配合来进行运用。

    屏幕空间环境光遮蔽(SSAO:Screen Space Ambient Occlusion)

    屏幕空间环境光遮蔽( SSAO )技术已经陆续的被运用在了最新的 3D 游戏中,这原本是 CRYTEK 所想出来的技术。

    使用画面坐标系的负载后处理可以随着GPU的性能共同提高,SSAO就是其中之一,简单来说就是通过距离数值来对于被遮蔽的场所加上深色调的一种处理手法。

    SSAO 就是将各个像素被周围环境遮蔽了多少这点通过参照渲染后的距离缓存情报,随后在附加上阴影的一种后处理手段。通过将亮度降低到类似于周围被遮蔽住的像素的亮度,来实现类似全局光照的阴影的表现。在 CE3 中,SSAO 不仅对应 PC ,在 PS3 和 XBOX360 中也支持该特效。前面所述的即使动态全局光照就是将 SSAO 技术进化后,在检测周围遮蔽状态时,将像素的颜色数字也计算在内以运用到阴影处理的一种表现。

    综合植被和地形覆盖生成系统(Integrated Vegetation and Terrain Cover Generation System)

    CE3 内置的植被生成引擎,能够制作出符合自然规律的各种植物。能够根据地形倾斜角度与地质的不同来生成出不同密度的植物,这一切的控制,既可以由该系统来自动进行运作,当然也可以通过手动来进行实现。

    CE3中内置了植物生成引擎,可以正确的处理与植物间的互动。

    在 CE2 中受到枪弹的设计后会产生折断等物理效果的植被破坏反应系统也会保留在 CE3 中。

    HDR 渲染 (Eye adaption & High Dynamic Range Lighting)

    CE3 引擎,理所当然的也使用了 HDR 渲染。只是,在 PS3 的版本中,因为 RSX 的限制 16bit 浮点(FP16)-64bit 缓存的渲染将无法同时开启 MSAA ,所以可能会使用 8bit 整数 -32bit 缓存的 HDR 渲染模式。在室外进入到室内,室内到室外等完全不同亮度的场景中移动时,会根据场景的亮度来自动的进行色调映射( Tone Mapping )处理来模拟人的瞳孔的适应过程。

    运动模糊与景深 (Pristine Motion Blur & Depth of Field)

    在 CE3 中同时支持对于画面整体的运动状态进行模糊的 CMB ( Screen Based Motion Blur )模式与针对个别运动的 3D 物体进行模糊的 OMB 模式。

    在 CMB 中,将镜头运动的动态矢量情报同场景的距离值进行位移比较,随后以该值为基础对整个场景进行模糊处理。也就是说,在远处场景模糊的效果比较弱,而在近处的景物则模糊的比较厉害。


    美丽的HDR模糊效果是CRY ENGINE 3的特征之一


    美丽的HDR模糊效果是CRY ENGINE 3的特征之一

    在 OMB 中,将各个 3D 角色在前一帧的顶点位置与现在这一帧的顶点位置进行差分比对,从而求出各个顶点单位的速度。再以这个值为基础进行模糊的处理。另外,CMB 与 OMB 效果,不仅仅只是给画面带来很强的动感,也可以减轻玩家对于帧数不足的敏感程度,特别是对于那些非固定帧数的游戏来说,效果就来的更加的大了。景深则采用了参照渲染后的距离缓存中的内容,从与合焦点相当的位置的深度值开始越偏离模糊效果越高的一种常见的景深方式。

    动态光照系统

    大多数的游戏中,天空都是以设计师所画出的天空或者是照片为基础来制作的。在 CE3 中,可以通过输入天空的状态,太阳以及月亮的位置,云的状态以及空气中的湿度状态,来实现动态真实的天空表现。

    在现实的世界里,太阳的位置是通过时间来决定了。随后在来观察太阳光是如何传递到观测者的,而在 CE3 中则可以很好的模拟这种效果。具体的步骤是,首先决定作为光源的太阳的具体位置,随后在通过( 瑞利散射)与(米氏散射理论)这两种光散射的方程式来进行计算。

    高品质的水面效果

    CRYTEK 在 GeForce3 发布的时候就已经开始研究 3D 游戏显示中的水面表现问题,至今已经历时 10 年。因此,CE3 拥有着现存游戏引擎中最佳的水面表现效果。大海海面的波浪通过 Jerry Tessendorf 的算法来进行波浪的模拟,从而得以生成出真实壮观的波浪效果。这一点想必大家在 CRYSIS 中就印象深刻吧。


    CRYSIS中的大海波涛

    对于在水面上的倒影采用了模糊的效果,而水面下折射的情景则是进行了 菲涅耳反射处理后的合成图像。以上这些都是比较常见的水面表现的处理,但是在 CE3 中,有着将水下场景的 RGB 像素进行抖动处理产生虚拟的色差表现,以及将水面的凹凸加上透镜的效果以产生出一种 CAUSTICS 的聚光现象。这样一种能够彻底的展现出真实的水面的效果的确是非常的新颖。而如此固执的追求真实水面的表现这一点,则是其他 3D 游戏引擎中所无法看到的。


    左图为CAUSTICS效果关闭,右图为开启


    左图为泡沫效果关闭,右图为开启

    另外,水面看上去不真实的另一个原因,则在水面和陆地的分界线上CE3 中,为了克服这个弱点,在水面和岸边的分界点附近采取了越靠近陆地水面透明度越高的方法。另外,采用了再打向岸边的波浪中混入了同样形状的泡沫这一手段来实现更拟真的感觉。该手段是通过 2 层的泡沫纹理动画与水面波浪的法线贴图进行扰动,同时又以岸边的分界线向这深水的方向进行柔性的合成来实现的。


    非常真实的CE3水面效果


    非常真实的CE3水面效果

    即时神圣光芒表现 (Dynamic Volumetric Light Beams & Light Shaft Effects)

    通过距离值来生成出遮蔽画面,随后在从太阳光的位置进行放射状的模糊处理。最后将该画面覆盖到放大后的太阳光上就完成了整个的处理。

    CE3 中那美轮美奂的神圣光芒的表现也是一大亮点。而且令人惊讶的是,在 CE3 中,那些能够完美的匹配场景中的几何坐标的神圣光忙的表现,是通过画面坐标系的后处理来实现的。


    这美丽的神圣光芒的表现就是通过画面坐标系的后处理来实现的


    这美丽的神圣光芒的表现就是通过画面坐标系的后处理来实现的

    该效果处理的顺序是,首先对场景渲染后留下的距离缓存进行读取查询,接着生成出太阳被遮挡后的画面,随后在从太阳的位置开始进行放射状的模糊处理。再这之后在对于同方向的太阳进行模糊放大处理,最后将这处理完毕的场景同前面遮挡后的画面进行合成便大功告成了。在概念上是通过挡住太阳的遮挡物的阴影来对太阳光进行遮蔽。这样的神圣光芒的表现不仅仅适用于逆光的时候,在水面下观察水面的情况下也同样的适用。

    CRY ENGINE 3 角色表现动画系统


    卓越的动画演示功能

    对于一个游戏来说,人类角色的运动 DEMO 是不可或缺的存在CE3 中,对于能够展现真实的人类动作的人类角色表现的机能进行了扩充。

    首先,在 CE3 中对于各种专业的用途内置了各种不同的专用动画系统,通过角色编辑系统制作的角色首先可以通过前面所说的沙盒系统来进行显示和运动。作成的角色与角色动画可以快速的进行确认。

    CE3 的人体动画引擎有着很强的可塑性,可以很方便的制作出体型和体格完全不同的角色。具体来说就是对于做出来的 3D 模型,可以自动的附加上另外制作的骨骼模型,并且立即的就能看到效果。此外,还能够即时的替换头部,手腕,上半身和下半身的模型并且可以立即看出不同的动态效果。更强的一点是在程序上还可以生成出体型和体格完全不同的变种角色来。

    骨骼动作系统则支持不同的复数的动作间柔和的连接。另外 CE3 还搭载有以 IK (反向动力学 inverse kinematics )为基础,可以临机应变的对应场景的倾斜和凹凸等环节的动态对应系统。所以说,并不需要进行什么特殊的调整,就可以实现诸如在斜面上进行行走时,足底完美的贴合着地面的效果。不管是碰到什么样的地形,都可以实现扎扎实实的脚底着地的动作。


    通过IK控制来实现的对应斜面与凹凸表面的骨骼动作系统


    在CE3中,可以在游戏里即时的表现出如此真实的脸部画面来

    在最近另一个非常受重视的项目就是表情动画系统,而 CE3 中也对于表情的控制下了很大的功夫CE3 中具有通过对于声音的波形进行解析随后分析音素来进行口型生成的系统。另外,在表情控制方面,搭载有可以跟踪演员表情的视频并抓取将演员的面部动作,将其组合到面部模型的系统。

    为了表现出面部皮肤的质感,CE3 中也搭载了特殊肌肤着色系统。除此之外还对应最近我们经常能够看到的虚拟次表面散射表现功能,因此能够实现非常高度的真实皮肤的质感表现。

    在 CE3 的 AI 系统中,可以通过知觉系统来控制各个角色的动作化后的表现。具体来说就是可以通过视觉听觉,来控制对于对象的识别,以及对周围声音的反应。

    移动路径探索功能,则可以即时的对应场景的破坏,或者是地形的变更和障碍物的出现。除此之外还对应设定移动路线的导航网格自动生成系统。导航网格系统并不仅仅只对应 2D ,而是可以通过多个地面进行导航,可以实现跳跃或者是爬高等的立体方向的移动 3D 导航系统。

    CRY ENGINE 3 中整合的内置物理引擎

    CE3 中因为内置了游戏中所有必需的物理演算机能,所以不需要诸如 HAVOK 或者是 PhysX 这样的外置物理引擎。内置物理引擎的适用于从小道具到植物的各个范围,而物理演算的要因不仅仅局限在了物体之间的碰撞以及重力音速,还包括了风,爆炸,摩擦等。


    实现动态破坏的程序系统

    另外,该物理引擎还对应游戏中限定范围内的动态程序破坏系统,破坏后的物体碎片将会保留他的物理状态,并且作为场景中的物件继续的存在下去。例如,某个碎片横飞的场景里,爆炸产生的碎片不但会和其他的碎片碰撞,如果落在水面上的话还会根据碎片的特征来决定是否漂浮的效果。


    CE3中内置有物理模拟引擎


    CE3中内置有物理模拟引擎

    在 CE3 中还支持先进的线状物理模拟效果。该效果适用于诸如树枝的弯曲,吊桥的表现以及生物的触手表现等。上述的所有物理模拟演算都进行了并行化处理的设计,并且为 PC ,Xbox360 以及 PS3 各自单独进行了优化处理。

    CRY ENGINE 3 作为第三方引擎能否成功?

    不管是初代还是第二代的 CRY ENGINE ,它的技术先进性都是被人们广为认可的,但是作为一个商业引擎来说,则很难称的上是成功。采用 CE 引擎的作品远远不及 EPIC GAMES 的 UE3 引擎来的多。

    但是,由于 UE3 引擎有着诸如技术支援不利以及开发思想差异等的问题发生,所以对于 CE3 来说还是有这很大的机会CRYTEK 方面也非常清楚这一点,所以面向引擎的使用方推出了很多的服务。

    对于取得授权的工作室,首先会派遣非常熟悉 CE3 系统的工程师进行为期大约 1 周左右的培训。接着,如果被授权方有需要,随时可以派遣员工前往 CRYTEK 的总部进行进修。并且还给予同引擎的设计者进行涉及引擎底层方面的讨论研究的机会。

    当然,除了能够即时的通过网络得到关于 CE3 引擎的支援服务外,CRYTEK 还将会在美国,中国,日本,英国,韩国和德国设置了本地的服务中心。也就是说在中国也将会有服务中心设置,这样就可以不用担心时差以及语种的差异。这一点则是 UE3 引擎所不具备的。

  • 相关阅读:
    【leetcode】1103. Distribute Candies to People
    【leetcode】1074. Number of Submatrices That Sum to Target
    【leetcode】1095. Find in Mountain Array
    【leetcode】1094. Car Pooling
    2018.9.27 长难句1
    L142
    L141
    L140
    Agilent RF fundamentals (11)-Vector modulator
    Agilent RF fundamentals (10) Mixer ,Phase domain and modulator
  • 原文地址:https://www.cnblogs.com/lai3d/p/1573003.html
Copyright © 2011-2022 走看看