UE4移动端渲染简介

原创 2017年01月03日 15:41:31

本文从大面上介绍了下UE4移动端渲染的相关东西,实在是太大面了,里面每一条都可以展开说很久,大概也就是Base pass说的相对细一些吧,就是默认的固体surface与光照交互在shader中具体是啥样的。

UE4在渲染方面倾向于代码统一易于维护,美术资源在端游手游也只需制作一份。为此,跨平台方面,在底层的DX, OpenGL, OpenGL ES, Metal, Vulkan等API上面搭了一层中间层,代码使用该中间层操作渲染。在Shader方面,只需写一个HLSL风格的Shader代码,由UE4将其编译成对应平台的代码,比如GLSL。

对于不同平台开发,在编辑器使用,渲染效果上面尽可能保持一致,比如PBR效果在端游手游上尽可能接近。同时不同级别的平台开放对应特性,比如中低端手机不支持GPU粒子


移动端使用Forward Rendering,渲染管线如下:

Views setup 

渲染前的处理,包括CPU层面的各种剔除(Frustum culling,Distance culling,Precomputed visibility)等。


GPU particles simulation

需要OpenGL ES 3.1/Metal级别,使用GPU计算粒子位置/速度,这样可以计算大量粒子,比CPU效果好很多,结果存到texture给CPU使用。


Shadow maps 

设置深度缓冲,取得需要shadow的物体,只有主光源(一般是方向光)渲染shadow map,给后面的Base pass或Modulated shadow projection使用


Base pass 

首先将物体分组排序,根据材质属性,距离远近等。

然后开始渲染,具体着色包括:

Lightmap(低质量),可以设置是否使用计算法线&光线方向的direct lightmap。一般情况下主光源为Stationary Directional Light。Stationary Light不将直接光照烘焙进去,而只是烘焙间接光照,也就是说Stationary Light可以动态调整强度和颜色。Lightmap不包括stationary方向光的直接阴影,有一个专门的shadowmap储存这个主阴影。这个单独的shadowmap使用的技术是distance field shadow,不会受到贴图分辨率的影响,能一直保持边缘锐利,这个stationary light的indirect shadow和其它static light的shadow会直接烘焙到光照图上。 这个是与diffuse color相乘,针对静态物体。

Cached point indirect light,这个是移动物体用的SH光照。可以通过调整static lighting level scale调整场景中光照小球数量,和lightmap精度匹配,这块儿可以修改一下,保持野外场景减少其数量的同时保证光照图精度。这个是与diffuse color相乘,针对动态物体。

方向光shadow计算(使用shadow map信息,该shadow map或者是直接读取静态物体的distance field shadow,或者是c步骤里面计算出来的CSM,两者可以融合到一起,不会造成阴影叠加阴影的错误显示效果)。

方向光的直接光照,这个基本是最主要的动态光照。这个包括diffuse和specular,针对静态物体和动态物体。

使用环境贴图的间接高光,也就是所谓的反射效果。环境贴图由反射球和天空光构成。针对静态物体和动态物体。

stationary的skylight(这个不推荐用,因为stationary skylight在移动端只有diffuse光照,这样会造成只有specular color的金属材质物体颜色完全为黑色,推荐使用static skylight,这样将其烘焙的光照图和reflection probe上)

动态点光源,多个,包括diffuse和specular,针对静态物体和动态物体。

自发光。


Deferred decals 

需要有取得场景深度的扩展指令,不支持光照,相当于在场景画好后后处理的样子。


Modulated shadows projections 

和延时贴花很像,后处理使用shadow map画阴影,会在已有的阴影上再叠加一层,使用CSM更好。


Translucency 

画折射物体,透明物体,比如粒子。


Post-process 

只有打开HDR时才会开启后处理,包括多种后处理,bloom,light shaft,AA,Tonemapper等。


HUD 

Slate/Canvas UI


Mobile的设置包括针对低中高平台的各种细节设置,比如LDR/HDR,是否不计算高光,是否无金属,反射精度等等,这些设置和上面的渲染管线,编辑器深度耦合,因此推荐在修改相关东西的时候也是直接修改相关编辑器和渲染管线内容,而不是另起炉灶,不然得维护两套东西。



UE4移动组件详解(一)——移动框架与实现原理

前言 关于UE4的移动组件,我写了一篇非常详细的分析文档。由于篇幅比较大,我将其拆分成三个部分。分别从移动框架与实现原理,移动的网络同步,移动组件的优化与改造三个方面来写。这三篇文档中难免有问题和漏...
  • u012999985
  • u012999985
  • 2017年11月29日 20:44
  • 1988

UE4蓝图简介

蓝图简介 蓝图内容示例 On this page: 概述蓝图的工作原理?常用的蓝图类型蓝图还能够做什么?蓝图编辑器和图表 概述 Bluep...
  • pizi0475
  • pizi0475
  • 2015年08月05日 21:09
  • 13638

UE4学习笔记(六): 次世代的移动平台渲染技术

在GDC2014上, UE4展示了一个SOUL Mobile Tech Demo: http://www.youtube.com/watch?v=jzGRbGb-fog
  • xoyojank
  • xoyojank
  • 2014年10月19日 23:30
  • 7983

UE4 性能优化方法(转载)

戏帧率很低,或者有卡顿的现象,可能会有很多原因,这时候不要乱猜,比如是不是人物太多了或者渲染的东西太多了,这样猜意义是不大的,可能会浪费很多时间,但是总找不到点上,当然如果运气好也可以找到瓶颈,这个时...
  • sinat_27456831
  • sinat_27456831
  • 2016年10月12日 19:37
  • 3659

虚幻UE4中移动端水材质的设置

在本教程中,我们将教您如何创建可以在移动设备上使用的实例化水资源。本教程是最新版本,支持只有在高端移动设备(如iPad Pro)才能进行的高品质移动端反射渲染功能。...
  • u013131744
  • u013131744
  • 2017年05月09日 17:22
  • 988

Epic Games王祢:UE4在移动平台的开发优势

2016年3月7日--9日,由全球移动游戏联盟GMGC主办的第五届全球移动游戏大会GMGC2016在北京国际会议中心盛大举行,此次大会以“Game2.0:创新不止·忠于玩家”为主题,来自全球移动游戏及...
  • pizi0475
  • pizi0475
  • 2016年03月09日 17:58
  • 2115

UE4 GPU Profiling

GPU Profiling Performance and Profiling The GPU has many units working in parallel...
  • pizi0475
  • pizi0475
  • 2015年08月20日 11:51
  • 1484

UE4 性能及分析

Unreal Engine 4.9 引擎特性 SHARE: 本页面的内容: 通用提示定位到性能局限的原因Show F...
  • pizi0475
  • pizi0475
  • 2016年02月17日 16:32
  • 5278

UE4 Shader 框架(转载)

Trace的空间 关注跨平台次世代游戏开发 博客园 首页 新随笔 联系 订阅 管理 随笔-88  文章-0  评论-69  ...
  • jiangdengc
  • jiangdengc
  • 2017年03月13日 15:02
  • 2235

[UE4教程] 图形学基础教程01--渲染管线 (带演示程序)

http://m.manew.com/thread-46721-1-1.html 目标是通过10次左右的讲座,对图形学的基础知识和用法做一个梳理,把广大对图形图像有兴趣的爱好者带入门。 并...
  • hcud024
  • hcud024
  • 2016年07月05日 21:07
  • 1476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UE4移动端渲染简介
举报原因:
原因补充:

(最多只允许输入30个字)