UE4虚幻引擎开发手机游戏

该文章来自用户转载 点击阅读原文

UE4虚幻引擎作为游戏开发引擎之一,在很多项目中都会使用到。下面就给大家分享下如何使用UE4开发高品质的手机游戏。

UE4虚幻引擎开发手机游戏_第1张图片

作者介绍


UE4虚幻引擎开发手机游戏_第2张图片

大纲

•介绍
•UE4 针对3A级手游的渲染管线和特征集
•使用ES3.1, Vulkan, Metal Api的高端机图形处理讲解
•即将发布的UE4移动平台特性
UE4虚幻引擎开发手机游戏_第3张图片

介绍

当前市场上使用UE4开发手游的情况

•有许多已经发布的和正在使用UE4开发的手游, 品质相当高
•开放世界的MMO已经可以在手机上流畅运行
2016年发布的高品质游戏《天堂II 革命》
UE4虚幻引擎开发手机游戏_第4张图片

天堂II 革命

•移动平台的开放世界MMO
•拉高移动平台品质(Sad。。。)
•巨大的成功(月流水1.76亿美元)
UE4虚幻引擎开发手机游戏_第5张图片

天堂II 革命

Netmarble Games(网石游戏)使用标准的UE4特性进行该游戏的开发

•开发, 测试和调试都在PC上完成
•UE4 移动渲染器
•移动HDR, 后处理
•无缝地图
•LevelStreaming(UE4的关卡组织方式,不翻译了)
•材质
•使用BP(蓝图)制作的UI
•扩充性良好的设备适配
•最低配置:GalaxyS4,Iphone5
UE4虚幻引擎开发手机游戏_第6张图片

UE4 移动平台渲染器

UE4虚幻引擎开发手机游戏_第7张图片

UE4渲染器

UE4拥有3个不同的渲染器

•延时渲染器(DeferredRenderer)
•编辑器, PC和主机的默认渲染器
•需求SM4, SM5 特性集(FeatureLevel, UE4定义硬件平台特性的方式,不同FeatureLevel对应不同的硬件平台特性)
•前向VR渲染器(实际上是专门为VR增加的Forward+渲染器,后续也慢慢用作手机的高端渲染器)
•最早用于Epic开发的VR游戏 《Rebo Recall》,这样可以直接支持MSAA抗锯齿(延时渲染对抗锯齿的支持非常不友好, VR游戏对抗锯齿又有较高要求)
•拥有跟延时渲染类似的特性(可以支持较多的动态灯光),然后也与延时渲染存在一些小的差异(比如屏幕空间效果)
•需求SM5特性集(其实就Forest引擎的移植版来说,用Cpu代替cs对物体的光照集进行剔除,在较早期的移动平台也可以支持该渲染器)
•移动渲染器(其实就是经典的Forward渲染器)
•一般是移动平台使用(其实也有部分追求高帧率的游戏使用该方式,在对场景做静态烘焙后, 游戏品质也可以达到水准之上)
•前向渲染(对物体进行绘制的同时计算光照,所以灯光数越多, 系统压力越大)
•对光照和阴影的支持比前面两个渲染器差很多
•需求“ES2”,“ES3_1”特性集

UE4虚幻引擎开发手机游戏_第8张图片

特性集

•UE4可以在多个特性集之间进行切换,特性集会决定材质编辑器支持的Shader特性。
•特性集同样检测可用的UE4渲染器。
•“ES2”和“ES3_1”命名的特性集并非严格对应OpenGLES2 和 OpenGL ES3 的API集合
•ES2渲染器会在可能的情况下使用ES3的特性。
•材质切换节点(FeatureLevel Switch)可以在材质中使用
UE4虚幻引擎开发手机游戏_第9张图片

特性集介绍
•ES2
•Mobile渲染器
•对应OpenGLES2.0-3.x(Android平台)       OpenGL ES2.0(iOS平台,支持ES3.0的IOS平台已经能够支持metal, 所以直接使用metal渲染器)
•支持最大8个纹理单元
•Android平台:

 ES3.0扩展的支持
Fallback到32位RenderTarget

UE4虚幻引擎开发手机游戏_第10张图片

特性集介绍

ES3_1高端Mobile特性集

•Mobile渲染器

•OpenGLES 3.1(Android平台) Vulkan(Android平台, Android7.0) Metal(iOS平台)

•最大16层纹理单元支持

•浮点RenderTarget支持

•VertexTextures Fetch支持

•sRGB支持(可以支持硬件Gamma校正,但此处一般使用更简化的Shader计算代替,方便统一低配与高配机的效果)

UE4虚幻引擎开发手机游戏_第11张图片

特性集介绍

•SM4

•延时渲染器

•Direct3D10OpenGL3.0 Metal支持

•最大16层纹理单元

•支持延时渲染的最低特性集

 UE4虚幻引擎开发手机游戏_第12张图片

特性集介绍
•SM5
•延时或者前向VR渲染器(Forward+)
•Direct3D11, OpenGL4.0, Playstation 4, XboxOne, Metal, GLES3.1 +AEP
•16+纹理单元支持
•支持Tessellation(曲面细分)的最低特性集,可以利用Compute Shader完成一些高级渲染特性支持。

UE4虚幻引擎开发手机游戏_第13张图片

特性集(Android)

打开黄框选中的特性可以让UE4生成ES3_1特性集使用的Shader

•UE4在对应设备执行时会自动选择最匹配的RHI(抽象硬件接口)和特性集

•这些配置可以被设备配置重写

UE4虚幻引擎开发手机游戏_第14张图片

Android Vulkan介绍

Vulkan是虾米?

•用来取代OpenGL和OpenGLES的次世代的渲染Api。

•由工业派设计,克拉魔发起。

•专为下一代硬件设计。

支持Vulkan的UE4(Android平台, iOS官方标配是Metal, 不支持Vulkan)

•运行Android7.0的设备现在自带一个可工作的Vulkan驱动。

•轻量级的Api, 最小化Cpu开销。

•“PipelineState Objects”带来高效的渲染状态切换。

•更多的渲染批次,因为每个渲染批次更轻量化

•???大意应该是按“RenderPass”组织方式带来更高效的Gpu硬件利用率(字被人挡住了。。。)

 

UE4虚幻引擎开发手机游戏_第15张图片

这里是Epic官方的Vulkan示例(可以自行查阅相关视频)

UE4虚幻引擎开发手机游戏_第16张图片

颜色缓冲区(HDR模式)

对比延时渲染器, UE4移动渲染器使用一个前向渲染器, 仅输出颜色,而不是使用Gbuffer。

•场景颜色

•理想的情况在支持的设备上使用16位浮点RenderTarget。

•不支持的情况使用“ RGBE 编码”或者“马赛克”模式(??Whatis “mosaic”mode???)。

•在渲染过程中RGB存储HDR颜色值。

•Alpha通道用来存储后续会使用到的深度值(软粒子,贴花)。

•深度缓冲区

•通常使用24位深度,8位模板的模式。

•后备缓冲区

•32位RGBA。

•存储后处理和Tonemapping后的最终结果。

UE4虚幻引擎开发手机游戏_第17张图片

RGBE HDR 编码

RGB + 指数 的编码方式需要被低端移动设备使用(运行Android5.X的GalaxyS6/Note4等)

•需要 EXT_shader_framebuffer_fetch的扩展(该扩展在GalaxyS6上可用)

•支持full HDR, bloom 而且没有分辨率限制。

从图中可以看到Native HDR和“Encoding” HDR的实现基本没有区别

 UE4虚幻引擎开发手机游戏_第18张图片

颜色缓冲区(LDR 模式)

•32位硬件后备缓冲区 & 深度缓冲区

•系统分配(比如Android上的EGL)

•许多移动设备并不支持sRGB

•场景在Gamma空间中被直接渲染到后备缓冲区,随后透明物体和UI也被直接渲染到后备缓冲区

•最快的渲染方式(一般给简单游戏或者VR游戏使用)

UE4虚幻引擎开发手机游戏_第19张图片

移动平台渲染管线

1.视口建立

2.GPU粒子模拟

3.渲染阴影图

4.基础Pass渲染

5.贴花处理

6.混合阴影处理

7.半透明物理处理

8.后处理 & ToneMapping

9.HUD& UI

UE4虚幻引擎开发手机游戏_第20张图片

1. 视口建立

•查询所有可见物体

•视锥裁剪

•距离裁剪

•预计算的可见性(类似U3D的Umbra,离线计算场景的可见性,运行时通过少量开销即可判断静态物体的遮挡情况)

•关联的可见性

•查询所有可见阴影

•收集动态Mesh项

•更新视口相关的UniformBuffer

UE4虚幻引擎开发手机游戏_第21张图片

2. GPU粒子模拟

•需要支持OpenGLES3.1的设备

•在GPU上对粒子进行模拟

•将粒子位置写入128位的目标中

•将粒子的速度写入64位的目标中

UE4虚幻引擎开发手机游戏_第22张图片

3. 阴影图渲染

•准备深度绘制目标

•查询所有产生阴影的对象

•使用主光视角对这些物体进行渲染

•阴影图将在后续过程被使用

•在基础Pass阶段处理CSM阴影的时候使用

•随后,在需要混合阴影投影的地方使用

 

UE4虚幻引擎开发手机游戏_第23张图片



前面已经对使用UE4开发高品质的手机游戏的UE4渲染器、特性集和渲染管线做了介绍,这篇文章是要对它下面部分进行介绍,结合这两部分的干货内容,大家才能更好的去利用UE4引擎做出一款好的手机游戏。

4. 基础Pass(准备阶段)

•       根据阴影和灯光的属性为物体选择合适的Shader

•       无光模式

•       预处理的距离场阴影 + 光照图

•       预处理的距离场阴影 + 光照图 + CSM(用于处理动态物体阴影)

•       动态光照(一般与CSM阴影配合)

•       其它

UE4虚幻引擎开发手机游戏_第24张图片

4. 基础Pass(绘制阶段)

绘制所有拥有不透明材质的物体(同时计算物体光照), 在HDR/线性空间输出场景颜色

•       动态的方向光和点光源(逐像素光照, ps中计算光照)

•       静态的距离场阴影

•       动态的CSM阴影

•       静态灯光产生的光照图

•       天光

•       反射

UE4虚幻引擎开发手机游戏_第25张图片

4. 基础Pass(渲染顺序)

物体的渲染顺序由设备决定

•       不需要任何排序的情况

•       支持TBDR的芯片,一般都支持 “HiddenSurface Removal”(“隐藏面消除”)

•       重新按从近到远的顺序对每个列表进行排序

•       最小化状态改变

•       重新按从近到远的顺序对所有列表中的所有物体进行排序

•       最小化Overdraw

•       non-ImgTec GPU的默认选项

•       你能够根据自己的需要对该行为进行定制

•       r.ForwardBasePassSort = x


UE4虚幻引擎开发手机游戏_第26张图片

5. 延时贴花

•       需要场景深度获取的功能

•       通过支持的扩展实现

•       GL_ARM_shader_framebuffer_fetch_depth_stencil

•       GL_EXT_shader_framebuffer_fetch

•       GL_OES_depth_texture

•       深度缓冲区解析

•       支持“Receives Decals”标识

•       模板操作

•       贴花不支持光照

UE4虚幻引擎开发手机游戏_第27张图片

6. 混合阴影投影

•       与延时贴花类同

•       不能与静态光照进行比较好的混合

•       静态光照 + CSM是一个更好的选择(4.12+)

UE4虚幻引擎开发手机游戏_第28张图片

7. 半透明物体处理

•       利用Base Pass时使用的相同Shader,在半透的混合模式下对图元进行绘制。

•       不对深度缓冲区进行写操作。

•       反射支持

•       需要完整的场景颜色拷贝。

UE4虚幻引擎开发手机游戏_第29张图片

8. 后处理

•       仅在HDR打开的时候才被支持

•       根据效果使用的情况需要一些额外的Pass

•       景深

•       自定义的后处理材质

•       Tonemapper Pass发生在最后阶段

•       将HDR 颜色映射到8位每通道的RGB颜色

•       同时将颜色值写回后备缓冲区

•       Bloom也在该阶段应用

•       Filmic tonemapping(4.13+)

UE4虚幻引擎开发手机游戏_第30张图片

9.HUD & UI

•       直接将UI对象绘入后备缓冲区

•       Slate BP(蓝图)

•       幕布(Canvas)

•       交换后备缓冲区

UE4虚幻引擎开发手机游戏_第31张图片

光照: 全动态光照

移动的方向光 + CSM阴影

•       编辑器准备

•       方向光组件,“Mobility” 属性设置为 “Movable”

•       设置“Dynamic Shadow Distance Movable Light” 的值

•       设置“Num Dynamic Shadow Cascades”的值

•       优点

•       所有的光都是动态的,都可以被运行时修改

•       减少内存大小和包体大小(因为没有预计算的光照信息)

•       缺点

•       所有在场景中的物体,不管是静态还是动态的,都需要被CSM渲染

•       额外的渲染批次和CSM生成开销

UE4虚幻引擎开发手机游戏_第32张图片

静态方向光

更简单的移动平台光照准备

•       直接光和高光被逐像素计算

•       强度和颜色能被运行时改变,但光的方向不能被改变

•       编辑器准备

•       方向光组件中,将“Mobility”属性设置为“Stationary(1 supported)”

•       将“Cast Dynamic Shadows”属性设置为“False”

优点

•       更快的渲染速度

•       高质量的距离场阴影

缺点

•       光的方向不能运行时改变

•       仅支持混合角色阴影

•       内存和包体大小因为预计算的Shadowmap等信息变大

UE4虚幻引擎开发手机游戏_第33张图片

静态方向光 + CSM阴影

4.13版本的优化

•       不再需要对每个物体设置是否接收CSM阴影的属性。

•       编辑器准备

•       方向光组件,将“Mobility”属性设置为“Stationary(1 supported)

•       设置“Dynamic Shadow Distance Stationary Light”的值

•       设置“Num Dynamic Shadow Cascades”的值

•       禁用 “Inset Shadows For Movable Objects”选项

优点

•       静态几何体通过距离场阴影产生静态阴影

•       动态角色阴影能够很好的与静态阴影混合

缺点

•       CSM生成消耗(仅仅只包含动态对象)

•       基础Pass需要一个额外的纹理单元(用于CSM阴影)

UE4虚幻引擎开发手机游戏_第34张图片

 

动态点光源

与其他光照准备独立

•       每个物体/表面支持最多4个点光

•       将“Max Movable Point Lights” 设为大于0的值, 该选项在Project Settings/ Engine Rendering中

优点

•       当成基础Pass的一部分进行渲染,所以不会产生额外的渲染批次

缺点

•       需要额外的shader计算

 UE4虚幻引擎开发手机游戏_第35张图片

 

灯光通道(???没有搞明白这东东的作用)

灯光通道在4.13及以上版本被支持

•       限制:每个物体仅一个静态或者动态方向光能被应用

UE4虚幻引擎开发手机游戏_第36张图片

后处理 – FilmicTonemapper

•       对于美术来说可以更自由的获取他们想要的视觉效果。

•       通过控制台变量启用

•       r.tonemapperfilm(4.12-5.15)

•       4.15默认开启了该选项

•       r.mobile.tonemapperfilm(4.16+)

•       因为有额外的性能开销,建议仅在高端机上使用。

UE4虚幻引擎开发手机游戏_第37张图片

自定义后处理过程

•       自定义后处理过程

•       通过材质系统创建后处理Shader

UE4虚幻引擎开发手机游戏_第38张图片

•       自定义深度

•       算定义深度(4.14新增)

•       选中的物体可以被渲染到一个独立的深度缓冲区中

•       这个独立的缓冲区可以在自定义的后处理中被采样

UE4虚幻引擎开发手机游戏_第39张图片

后处理 – 自定义模板值

自定义模板值(4.15新增)

•       在PC上可以直接对模板缓冲区中的模板值进行采样

•       在移动GPU上不能进行该操作

•       UE4通过渲染到一个独立的颜色缓冲区的方式支持该功能

UE4虚幻引擎开发手机游戏_第40张图片

非渲染部分

UE4虚幻引擎开发手机游戏_第41张图片

移动平台的补丁和DLC支持

最小化的APK/IPA + DLC 打包向导(4.13)

•       极小的包体下载(AppStore/GooglePlay)

•       仅需要下载内容时显示的UI

•       从云端下载游戏内容和补丁

•       强制用户内容更新

UE4虚幻引擎开发手机游戏_第42张图片

移动平台的补丁和DLC支持

“Mobile Patch Utilities” BP 库(4.14)

•       通过BP控制下载安装处理过程

•       进度条 & 错误处理

•       存储空间

•       Wifi 可用性

•       其他

UE4虚幻引擎开发手机游戏_第43张图片

大Apk包体支持

•       在中国分包模式不可行(阿西, 专门提到中国), 然而在某些情况下大包体在一些设备上不能正常工作

•       4.16开始这个问题被修复,现在不存在APK包体大小的限制了

UE4虚幻引擎开发手机游戏_第44张图片

4.16中的移动平台改进

•       更小的Android执行程序

•       更改编译器的选项移除不使用的代码

•       UI 相关蓝图的性能优化

•       Android的运行时权限获取

UE4虚幻引擎开发手机游戏_第45张图片

4.16中的移动平台改进

•       材质节点新增“VertexInterpolator” – 对移动优化极其有用(???使用VS中的插值代替PS插值)

UE4虚幻引擎开发手机游戏_第46张图片

开发中的移动平台功能

•       更快的帧迭代时间 –Android平台

•       改进的 编辑器内 移动平台预览

•       改进的PC iOS版本发布

•       简单的远程工具链安装

•       远程日志输出?

 UE4虚幻引擎开发手机游戏_第47张图片

 


你可能感兴趣的:(Unreal,游戏开发,图形引擎,图形图像,游戏引擎)