UE4虚幻引擎开发手机游戏

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

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

UE4虚幻引擎开发手机游戏(一)

作者介绍


UE4虚幻引擎开发手机游戏(一)

大纲

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

介绍

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

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

天堂II 革命

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

天堂II 革命

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

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

UE4 移动平台渲染器

UE4虚幻引擎开发手机游戏(一)

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虚幻引擎开发手机游戏(一)

特性集

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

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

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

UE4虚幻引擎开发手机游戏(一)

特性集介绍

ES3_1高端Mobile特性集

•Mobile渲染器

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

•最大16层纹理单元支持

•浮点RenderTarget支持

•VertexTextures Fetch支持

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

UE4虚幻引擎开发手机游戏(一)

特性集介绍

•SM4

•延时渲染器

•Direct3D10OpenGL3.0 Metal支持

•最大16层纹理单元

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

 UE4虚幻引擎开发手机游戏(一)

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

UE4虚幻引擎开发手机游戏(一)

特性集(Android)

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

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

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

UE4虚幻引擎开发手机游戏(一)

Android Vulkan介绍

Vulkan是虾米?

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

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

•专为下一代硬件设计。

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

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

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

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

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

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

 

UE4虚幻引擎开发手机游戏(一)

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

UE4虚幻引擎开发手机游戏(一)

颜色缓冲区(HDR模式)

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

•场景颜色

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

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

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

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

•深度缓冲区

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

•后备缓冲区

•32位RGBA。

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

UE4虚幻引擎开发手机游戏(一)

RGBE HDR 编码

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

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

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

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

 UE4虚幻引擎开发手机游戏(一)

颜色缓冲区(LDR 模式)

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

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

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

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

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

UE4虚幻引擎开发手机游戏(一)

移动平台渲染管线

1.视口建立

2.GPU粒子模拟

3.渲染阴影图

4.基础Pass渲染

5.贴花处理

6.混合阴影处理

7.半透明物理处理

8.后处理 & ToneMapping

9.HUD& UI

UE4虚幻引擎开发手机游戏(一)

1. 视口建立

•查询所有可见物体

•视锥裁剪

•距离裁剪

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

•关联的可见性

•查询所有可见阴影

•收集动态Mesh项

•更新视口相关的UniformBuffer

UE4虚幻引擎开发手机游戏(一)

2. GPU粒子模拟

•需要支持OpenGLES3.1的设备

•在GPU上对粒子进行模拟

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

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

UE4虚幻引擎开发手机游戏(一)

3. 阴影图渲染

•准备深度绘制目标

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

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

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

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

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

 

UE4虚幻引擎开发手机游戏(一)



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

4. 基础Pass(准备阶段)

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

•       无光模式

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

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

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

•       其它

UE4虚幻引擎开发手机游戏(二)

4. 基础Pass(绘制阶段)

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

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

•       静态的距离场阴影

•       动态的CSM阴影

•       静态灯光产生的光照图

•       天光

•       反射

UE4虚幻引擎开发手机游戏(二)

4. 基础Pass(渲染顺序)

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

•       不需要任何排序的情况

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

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

•       最小化状态改变

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

•       最小化Overdraw

•       non-ImgTec GPU的默认选项

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

•       r.ForwardBasePassSort = x


UE4虚幻引擎开发手机游戏(二)

5. 延时贴花

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

•       通过支持的扩展实现

•       GL_ARM_shader_framebuffer_fetch_depth_stencil

•       GL_EXT_shader_framebuffer_fetch

•       GL_OES_depth_texture

•       深度缓冲区解析

•       支持“Receives Decals”标识

•       模板操作

•       贴花不支持光照

UE4虚幻引擎开发手机游戏(二)

6. 混合阴影投影

•       与延时贴花类同

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

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

UE4虚幻引擎开发手机游戏(二)

7. 半透明物体处理

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

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

•       反射支持

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

UE4虚幻引擎开发手机游戏(二)

8. 后处理

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

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

•       景深

•       自定义的后处理材质

•       Tonemapper Pass发生在最后阶段

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

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

•       Bloom也在该阶段应用

•       Filmic tonemapping(4.13+)

UE4虚幻引擎开发手机游戏(二)

9.HUD & UI

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

•       Slate BP(蓝图)

•       幕布(Canvas)

•       交换后备缓冲区

UE4虚幻引擎开发手机游戏(二)

光照: 全动态光照

移动的方向光 + CSM阴影

•       编辑器准备

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

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

•       设置“Num Dynamic Shadow Cascades”的值

•       优点

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

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

•       缺点

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

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

UE4虚幻引擎开发手机游戏(二)

静态方向光

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

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

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

•       编辑器准备

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

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

优点

•       更快的渲染速度

•       高质量的距离场阴影

缺点

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

•       仅支持混合角色阴影

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

UE4虚幻引擎开发手机游戏(二)

静态方向光 + 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虚幻引擎开发手机游戏(二)

 

动态点光源

与其他光照准备独立

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

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

优点

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

缺点

•       需要额外的shader计算

 UE4虚幻引擎开发手机游戏(二)

 

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

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

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

UE4虚幻引擎开发手机游戏(二)

后处理 – FilmicTonemapper

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

•       通过控制台变量启用

•       r.tonemapperfilm(4.12-5.15)

•       4.15默认开启了该选项

•       r.mobile.tonemapperfilm(4.16+)

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

UE4虚幻引擎开发手机游戏(二)

自定义后处理过程

•       自定义后处理过程

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

UE4虚幻引擎开发手机游戏(二)

•       自定义深度

•       算定义深度(4.14新增)

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

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

UE4虚幻引擎开发手机游戏(二)

后处理 – 自定义模板值

自定义模板值(4.15新增)

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

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

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

UE4虚幻引擎开发手机游戏(二)

非渲染部分

UE4虚幻引擎开发手机游戏(二)

移动平台的补丁和DLC支持

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

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

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

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

•       强制用户内容更新

UE4虚幻引擎开发手机游戏(二)

移动平台的补丁和DLC支持

“Mobile Patch Utilities” BP 库(4.14)

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

•       进度条 & 错误处理

•       存储空间

•       Wifi 可用性

•       其他

UE4虚幻引擎开发手机游戏(二)

大Apk包体支持

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

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

UE4虚幻引擎开发手机游戏(二)

4.16中的移动平台改进

•       更小的Android执行程序

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

•       UI 相关蓝图的性能优化

•       Android的运行时权限获取

UE4虚幻引擎开发手机游戏(二)

4.16中的移动平台改进

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

UE4虚幻引擎开发手机游戏(二)

开发中的移动平台功能

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

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

•       改进的PC iOS版本发布

•       简单的远程工具链安装

•       远程日志输出?

 UE4虚幻引擎开发手机游戏(二)

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17330.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚幻引擎在游戏之外可以做什么呢?

虚幻引擎 4 的跨界表演获得了“家装”引擎,VR 引擎,电影引擎等众多称号,那么在这些新领域的正确玩法是什么? 不玩不知道,一玩吓一跳。 -------又玩到新玩具的老陶 一个趁手的工具在开发者手里,你永远不会猜…

学习虚幻引擎UMG的基础

内容概括 对于UMG,之前我没有相关的经验,今天学习了下其基础知识。因此记录了一些自己感兴趣的内容。 本篇主要参考的教程是:UMG UI设计器快速入门 | 虚幻引擎文档。 但是我排除了一些关联度不高的、过于基础的、重复的内容。增添了一些自己…

虚幻引擎4中的实时GI技术

video: http://v.youku.com/v_show/id_XNDEwMDEwNTg4.html UE4中的realtime GI是基于这个researcher: http://blog.icare3d.org/ 主要的paper: http://perso.telecom-paristech.fr/~eisemann/publications/Crassin2011VoxelGlobalPG/Vox…

用 UE 虚幻引擎做个捏脸小功能~~

最近在学习 UE 相关的使用,正好看到一篇文章讲解用 Control Rig 实现简单捏脸功能,这种小而美的完整案例挺适合来练手的,涉及到了 UI、蓝图、动画、骨骼等方面,值得推荐一下。 从这个小功能出发,在学习其他内容时如果有…

Unreal Engine 虚幻引擎,性能分析,优化(一)

目录 一、Frame 帧 二、理想情况下,做性能分析时,当寻找游戏存在的瓶颈时,游戏的运行环境越接近目标硬件和目标平台,获得的数据越准确。 三、线程 四、Analysis of a frame ,“CPU”线程,“Game”线程 怎…

UE4 虚幻引擎 GitSourceControl源码解析

效果功能图 背景与目标 资产的工作量很大,并不是个人在短时间内可以独自完成的,需要大量美术人员长时间的进行团队合作完成的,并且完成一版之后,后续也还有更新维护的需求。所以UE的Editor也提供了对资产版本管理的功能&#xff…

虚幻4与Unity: 哪个游戏引擎是开发者的最爱?

转自: http://www.narkii.com/club/thread-335184-1.html 虚幻4与Unity: 哪个游戏引擎是开发者的最爱? 虚幻4 (UE4) 和Unity是目前市场上最热门的游戏引擎,也各自拥有为数众多的开发者,虽然一些大型的游戏公…

【UE4】虚幻引擎运行流程

前言 当前版本:4.26.2 本文原创 说明:有些名词保持英文可能更容易理解 目录 游戏流程总览 各个平台启动引擎的入口函数 引擎入口函数 GuardedMain() EnginePreInit 引擎预初始化 EngineInit 引擎初始化 EngineLoop 引擎主循环 EngineExit 引擎退…

【虚幻引擎】UE4/UE5插件

一、插件分类 插件分为七大类 Blank:空白插件,可以从头开始自己定义想要的插件风格和内容,用此模板创建的插件不会有注册或者菜单输入。BlueprintLibrary:创建一个含有蓝图函数库的插件,此模板函数都是静态全局函数&…

虚幻引擎5 C++游戏开发教程

虚幻引擎5 C游戏开发教程 与 Epic Games 合作创建。从基础开始学习 C,同时在 Unreal 中制作您的前 5 个视频游戏 课程英文名:Unreal Engine 5 C Developer Learn C & Make Video Games 此视频教程共5.5小时,中英双语字幕,画…

【虚幻引擎】带你了解UE4

行业前景 越来越多的开发者,开发商投入到UE4中,简单来说就是使用UE4的人越来越多,许多独立游戏,大型的游戏,大公司例如“腾讯,网易”都在使用UE4来开发,加上UE4对开发者来说使用完全免费&#…

【虚幻引擎】UE4/UE5 后期处理盒子(PostProcessVolume)

B站教学链接:https://space.bilibili.com/449549424?spm_id_from333.1007.0.0 一、简介 PostProcessVolume(后期处理盒子):UE4非常强大的一个后期处理,可以调节画面的色彩,相机的景深,视频的输…

芒格-“永远不要有受害者心态”

我们应该以什么样的心态去对待我们的生活? 我不是受害者,我是幸存者。(ps :芒格深处利益之中,手握财富,应该见到过很多阴暗的人性。 他 可能也有魔鬼的一面)受害者的感觉:我认为这是一种反其道而行之的人类思考方式&…

巴菲特+查理芒格+投资理论+经典语录+给韭菜的启示

巴菲特查理芒格投资理论经典语录给韭菜的启示 巴菲特: 一个老年人在零售店里发现老婆丢了,恰好遇到一个年轻人也在找自己的另一半,老人问:你妻子长什么样?年轻人答:“她可真是个金发美人啊,身材…

git多账号切换

参考文档: https://blog.csdn.net/lqlqlq007/article/details/80613272 https://blog.csdn.net/qq_36602939/article/details/79794686 1.ssh-keygen -t rsa -C "你的邮箱" 回车,查看rsa目录,先进入该目录,将里面已…

git 用户的切换

需求场景: 某天已入职了 发现电脑上已经存在一个git的账号 这时候你需要登录你的 也就是账号切换 再比如 你的git换号了 养了个小的git号 或是从新建号了 但是电脑还存在老的号怎么办 就是需要账号的切换 目的就是登上我的账号 拉取我的私有仓库 第一步 准备 查看当前的git用配…

Git切换账号

用了新的电脑需要切换git到自己的账户 winR 输入 CMD 后运行以下命令 查看用户名: git config user.name查看用户邮箱: git config user.email修改用户名和邮箱,user.name/email后面千万记得加空格 git config --global user.name "…

拥抱生产力变革!GPT4接入Office,动嘴就能Excel到PPT!

梦晨 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 一觉醒来,工作的方式被彻底改变。 微软把AI神器GPT-4全面接入Office,这下ChatPPT、ChatWord、ChatExcel一家整整齐齐。 CEO纳德拉在发布会上直接放话:今天,进入人机交互的新时代…

零代码编程:用ChatGPT合并多个表格中的内容到一个excel中

电脑有几百个excel表格: 表格里面表头是一样的,但是数据不一样 现在,想把每个表格中的内容合并到一张表中,然后进行数据处理分析,该怎么办呢? 用ChatGPTPython,很快就可以搞定。在ChatGPT中选中…

巴比特 | 元宇宙每日必读:美版权局判定用AI工具生成的图片不受版权保护,官方解释:AI生成具有不可预测性,但并非一刀切...

摘要:据GameLook报道,一名图书作者Kristina Kashtanova此前为其创作的漫画书《Zarya of the Dawn》向美国版权局提起注册,书中使用了部分由Midjourney创作的插图。版权局此前曾接受了这一注册,但在近日却宣布撤销这项授权。该机构…