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,是否不计算高光,是否无金属,反射精度等等,这些设置和上面的渲染管线,编辑器深度耦合,因此推荐在修改相关东西的时候也是直接修改相关编辑器和渲染管线内容,而不是另起炉灶,不然得维护两套东西。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

游戏实时渲染中HDR入门介绍

游戏实时渲染中HDR入门介绍 虽然HDR这个概念绝大多数做游戏的人都知道了,不过可能有的人会像我一样一直对这个概念一知半解,这里做下学习笔记,省的以后又忘了= = 1. 到底什...

UE4 用Touch的方法实现物体的旋转

UE4的案例实在是少的可怜,在用UE4开发移动端时,简单的滑动屏幕实现三维物体旋转的命令,愣是在网上没找到,Google里居然都没有,真是郁闷死了。不过还好,以前开发过Android和cocos2d-...

Planar reflection clipplane bug on Metal.

Planar reflection clipplane bug on Metal. 0 It seems that Clip p...

FRenderCommandFence类

FRenderCommandFence用于game线程和渲染线程的同步,UE4最多允许game领先渲染线程一帧,也就是渲染线程跑第N帧的时候,game线程最多跑第N+1帧,这是因为game线程跑的太快...

UE4渲染概述

渲染 & 图像 虚幻引擎4拥有全新的、DirectX 11通道的渲染系统,包括延迟着色,全局光照,半透明光照,后处理以及使用矢量场的GPU粒子模拟。 延迟着色 虚幻引擎4中所有光照均为...

NDK与Cygwin配置

1、Android 开发环境搭建 Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。 下载 JDK 下载 Eclipse 下载 An...

基于JQuery的插件 ------ 持续追加

基于JQuery的插件 ------ 持续追加

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

http://m.manew.com/thread-46721-1-1.html 目标是通过10次左右的讲座,对图形学的基础知识和用法做一个梳理,把广大对图形图像有兴趣的爱好者带入门。 并...

UE4 ENQUEUE_UNIQUE_RENDER_COMMAND_ONEPARAMETER 宏

该宏非常重要, 其作用是: 创建一个渲染命令任务,并将该任务压入渲染队列,待渲染线程执行. 主要用于多线程渲染! #define ENQUEUE_UNIQUE_RENDER_CO...

UE4 RHI浅析

RHI: Render hardware interface 渲染硬件层接口, 本人理解RHI是一套硬件无关,平台无关的图形渲染API.  它是如何做到与平台无关,与硬件无关的呢? 每个RHI接...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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