UE4虛幻引擎開發手機遊戲

該文章來自用戶轉載 點擊閱讀原文html

UE4虛幻引擎做爲遊戲開發引擎之一,在不少項目中都會使用到。下面就給你們分享下如何使用UE4開發高品質的手機遊戲。
 
UE4虛幻引擎開發手機遊戲(一)

做者介紹性能優化

 

UE4虛幻引擎開發手機遊戲(一)

大綱app

•介紹
•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特性進行該遊戲的開發fetch

•開發, 測試和調試都在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虛幻引擎開發手機遊戲(二)

 

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!但願你也加入到咱們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

相關文章
相關標籤/搜索