1. 程式人生 > >UNREAL ENGINE 4.13 正式釋出!

UNREAL ENGINE 4.13 正式釋出!

這次的版本帶來了數百個虛幻引擎 4 的更新,包括來自 GitHub 的社群成員們提交的 145 個改進!感謝所有為虛幻引擎 4 添磚加瓦貢獻的人們:

alk3ovation, Allegorithmic (Allegorithmic), Alwin Tom (alwintom), Andreas Axelsson (judgeaxl), Andrew Scheidecker (AndrewScheidecker), Andrian Nord (NightNord), ArnoB (ABeekhub), Artem (umerov1999), Artem V. Navrotskiy (bozaro), Błażej Szczygieł (zaps166), Brent Scriver (FineRedMist), Cedric Neukirchen (eXifreXi), Céleste (CelPlays), Chris Conway (Koderz), Chris528, Christoph Becher (chbecher), Christopher P. Yarger (cpyarger), DanielDylan, DaveC79, Derek van Vliet (derekvanvliet), DevVancouver, Eric-Ketchum, Eugene (grisevg), Franco Salas (SupremeNinjaMaster), gameDNA (gameDNAstudio), ghost, Joel McGinnis (joelmcginnis), Jonathan Johansson (DualCoder), Jørgen P. Tjernø (jorgenpt), Joshua Kaiser (JoshuaKaiser), korkuveren, Kory Postma (korypostma), Krish Munot (KrishMunot), Kuts Alexey (krunt), Lars Jørgen Solberg (larsjsol), Lectem, Lee Reilly (leereilly), Lukasz Baran (iniside), madsystem, Manny (Manny-MADE), Marat Radchenko (slonopotamus), Markus Breyer (pluranium), Martin Gerhardy (mgerhardy), Marvin Pohl (pampersrocker), massanoori, Mateusz Polewaczyk (matii1509), Matthias Huerbe (MatzeOGH), Matthijs Lavrijsen (Mattiwatti), MaximDC, mfortin-bhvr, Michael Allar (Allar), Michael Schoell (MichaelSchoell), mik14a, Miłosz Kosobucki (MiKom), mkirzinger, Moritz Wundke (moritz-wundke), Nachtmahr (NachtMahr87), Narendra Umate (ardneran), NaturalMotionTechnology, Oleksandr Kuznietsov (Teivaz), OWIAdmin, Patryk Stępniewski (kodomastro), Paul Evans (paulevans), pfranz, Piotr Bąk (Pierdek), PistonMiner, projectgheist, Rama (EverNewJoy), Ricardo Maes (kukiric), Rick Deist (dreckard), Robert Segal (robertfsegal), RobertTroughton, Rohan Liston (rohanliston), Saffron (SaffronCR), Sajid (sajidfarooq), salamanderrake, Samuel Maddock (samuelmaddock), Sébastien Rombauts (SRombauts), Tanner Mickelson (DarthCoder117), Thomas Mayer (tommybear), tmiv, Tyler Thompson (Bogustus), Victor Polevoy (vityafx), Webster Sheets (Web-eWorks), Wesley Hearn (wshearn), yehaike, Yohann Martel (ymartel06), Yong-Quan Chen (wingedrobin), Yu He (yuhe00), Zachary Burke (error454)

新貨出爐

虛幻引擎 4.13 已經來了!在這個版本中可以看到方方面面的各種改進。

這次添加了很多新的 渲染特性,比如模型貼花,由藍圖繪製 Render Target,GPU 頂點變化,改進的折射效果,以及面向材質使用的高質量並已油畫的噪點函式。陰影快取貼圖先能夠支援同場景下比以往更多的動態燈光投射陰影。

Sequencer,新的非線性影響編輯器,這次也為高階影視製作帶來了一些新的特性。在遊戲中 實況錄影 的功能得到了大幅改進。另外現在也可以對 SLOT 和 Animation 在外部程式中來回遷移。可以在我們的 2016 SINGGRAPH Real-Time Live! 的演示中看到這些功能。

支援了 Alembic 使引擎能夠匯入複雜且有趣的頂點動畫。新的 物理動畫元件 能夠讓角色對物理的力作出更加真實的反應,由力通過馬達驅動角色骨骼動畫來實現。

對於 移動應用的開發者,這次優化了動態陰影,支援 full-precision 材質,並且支援自定義後處理過程。OpenGL ES 3.1 也能用於安卓裝置,二進位制的 Shader Caching 也將為迭代次數帶來改善。

VR 遊戲 現在可以使用膠囊體陰影技術,即時立體渲染也得到了優化。另外記得去看一下新的 VR 專案模板!對於如何使用手柄互動,如何在遊戲中移動,它都提供了一個很好的示例。

現在虛擬現實的環境下搭建遊戲關卡嗎?虛幻的 VR Editor 也有了進一步進展,現在支援對模型或植被的繪製,有了一個新的移動控制控制代碼,還有 VR 色彩選取。最後,現在還可以直接在 VR 中進行遊戲!在編輯器首選項設定中的實驗室板塊,可以找到 “Enable VR Editing” 並啟用它。

主要功能

新貨:SEQUENCER 實況錄影

image alt text

Sequence 的 Recorder 能夠捕獲實時的遊戲內容,包括所有的動畫,聲音和特效,捕獲到一個獨立的資源中,並可以使用 Sequencer 對它進一步進行編輯!這次的版本中的新功能包括:

  • 選中物體的快速錄影,攝像機選中時自動建立攝像機軌道。

  • 能夠定義 Arbitrary 元件和屬性來記錄。

  • 能夠選擇是否要記錄 Actor 在場景中附屬的其他資料。

  • 當一個 Actor 被附屬但為標記錄像時,以世界空間座標系來記錄位置資訊。

新貨:動態光的陰影貼圖快取。

當一個點光源或者聚光燈不移動的時候,我們能將該光源產生的陰影儲存下來,並在下一幀中重用。現在這個功能被自動實現,對於周遭環境變化不大的時候,動態點光源和的聚光源的投影的效能在遊戲中變得可以接受。

image alt text

上圖中展示了 33 個能夠產生投影的動態點光源,並且消耗非常的小:

使用 970 GTX 在 1920x1200 下的效能:

  • 33 個產生投影的點光源不使用快取時:渲染 Shadow Depths 花費 14.89ms。

  • 使用快取陰影貼圖:.9ms (大約快了 16 倍!)

  • 請注意這將花費 2ms 來渲染 33 個點光源的效果,這點可以通過其他方法優化,並且並不被這個功能有額外影響。

  • 這個快取的記憶體使用可以由 ‘Stat ShadowRendering’ 檢視,此場景是 25.6Mb。

  • 這個快取的最大記憶體佔用可以通過 ‘r.Shadow.WholeSceneShadowCacheMb’ 來控制。

限制

  • 預設情況下,快取只會在以下情況發生:

    • 物件的移動性設定為 靜態 或者 固定

    • 材質並未使用世界位置偏移

    • 光源為點光源或者聚光源,移動性被設定為 Movable,並且當前並未移動。

  • 使用動畫細分或者畫素深度偏移的材質可能會在他們的陰影深度被快取時導致一些可見的錯誤。

新貨:VORONOI 噪點材質

這次我們為 Noise 材質節點添加了一個新的 Voronoi 的選項。Voronoi noise 有時也被稱做 Worley 或者 Cellular noise,對 precedural material 的製作十分有幫助。

image alt text

Voronoi noise 可以用來生成一些熟悉的物理材質模式,比如大理石,請看下圖中的雕塑。

image alt text

這個例子使用了 Voronoi noise 以及一項叫做 ‘gradient mapping’ 的技術來得到大理石的外觀效果。

image alt text

從左至右:

1)標準的 Voronoi Noise,1 octave

2)輸入的位置附加 "Gradient" 的 Voronoi noise,設定為 0.05

3)在輸入前將 Gradient noise 乘了 0.3

4) 使用第 3 步的結果作為一個隨機平鋪貼圖的座標。

Voronoi noise 有 4 個質量等級,越高等級下網格越小,但 Shading 的時間開銷會巨大的增加。

同時,其他的 Noise 材質節點也做了優化,在函式的選擇上對效能的取捨也做了更多細節描述。這裡的大部分在執行時都比較慢,因此應該鼓勵將結果先預烘培到貼圖上來提高效能。

新貨:面向 RENDER TARGET 的藍圖繪製

藍圖函式現在能夠直接用於面向 render target 繪製材質。該功能使得在不修改原始碼的情況下實現各種不同型別的遊戲特定渲染特性成為可能。

image alt text

這裡實現了流體表面的模擬,僅使用藍圖和材質。角色和投射物便能夠推動流體變動!

image alt text

上圖展示了一個簡單的高度繪製模式,完全由藍圖實現,模擬投射處增高高度值。

這個新的藍圖函式 Draw Material to Render Target 繪製一個四邊形的目標 render target,使用 Emissive Color 作為材質的輸入。

image alt text

在開始遊戲時,會先呼叫 Begin Play,該 render target 會填充為藍色。可以此時右鍵點選該 render target,並存為一個靜態貼圖,以便能夠被壓縮。

image alt text

對於更高階的 render target 繪製,使用 Begin Draw Canvas to Render Target 和 End Draw Canvas to Render Target。這能夠有效的多次繪製到一個 render target 的子集上,還有通過 Canvas 物體的字圖繪製的方法。

image alt text

利用藍圖繪製螢幕以外的渲染特性,使得快速實現各類渲染效果而不需要程式設計師的幫助成為可能。這裡可能會很輕易的給 GPU 放上大量的 render target 所需的畫素 Shader 計算工作。可以通過輸入 'ProfileGPU' 來檢視這些 draw call 資訊(在 WorldTick 事件下)。

限制

  • 無法對一個已經被樣例化成貼圖在材質中使用的 render target 進行繪製。也不能使用 alpha blending 來修改一個 render target,或者在兩個 render target 之間來回更新。

  • 材質只有 Emissive Color 和 Opacity 的輸出對繪製到一個 render target 才有效,光照目前並不支援,類似 WorldPosition 的節點則可能會產生預期之外的效果。

  • 預設情況下 Emissive Color 會被限制在正數,但可以通過啟用材質屬性的 ‘AllowNegativeEmissiveColor’ 來實現輸出負數。

在 ContentExamples 中檢視 BlueprintRenderToTarget 地圖以瞭解可以執行的示例!

新貨:對頂點動畫支援 ALEMBIC 匯入(試驗功能)

現在支援 Alembic 動畫匯入了!Alembic 使得複雜動畫能夠被離線製作,並在 UE4 中實時渲染!該功能目前仍處於試驗階段,各位可以試用並給我們反饋意見。

image alt text

我們現在匯入 Alembic 資料有幾種方式:

  • 靜態模型。Alembic 的單幀動畫資料會被匯入為一個靜態模型資源(不含動畫)。

  • 幾何體快取。這是一種新的動畫資源型別,能夠對頂點動畫進行回放。匯入的 Alembic 動畫將會被逐幀回放。效能上因模型本身的複雜度會大不相同,並不是所有的情形下都能夠得到優化處理。

  • 骨架網格體。只要頂點數量不發生變化的時候,這是用於回放 Alembic 動畫資料最有效的方式。在匯入時,動畫序列會使用一個 PCA 壓縮,這時通用的姿勢(基礎)會被分離並計算權重,來組成一個回放時的原始動畫。其中的百分比或者固定的基礎姿勢數量可以在匯入時作為壓縮等級選項來進行調整。

新貨:用於模型預覽的場景

新增了一個功能,在預覽靜態網格體或者骨架網格體時可以設定預覽時的場景。

image alt text

在靜態網格體和骨架網格體的編輯器中有一個新的 Preview Scene Settings 面板介面。這裡可以多個方案(場景)來預覽模型,並且方案是可以被修改的:

  • 方向光(顏色、強度、朝向)

  • 天光(HDRI 環境貼圖,強度、朝向)

  • 後處理設定(基於後處理體積)

image alt text

我們還增加了一些示例用的功能:

  • 手動旋轉環境(按住 K 鍵)和方向光(按住 L 鍵)

  • 自動旋轉光照環境(方向光和環境)

  • 快速隱藏地面(O 鍵)和環境(I 鍵)

新貨:模型貼花

新的模型貼花功能能夠有效的將材質貼到一個靜態網格體上,可以把它看作在網格體上的第二個網格體,但共享了原網格體的拓撲結構和材質。

image alt text

上圖中的柱子每個都是一個基礎的模型覆蓋了另一個單獨的破碎模型。如下面的線框圖所示,左面的柱子使用了模型貼花來獲得更好的顏色、法線、粗造度的混合效果。而右圖則是簡單的材質覆蓋,這裡做一個對比。

image alt textimage alt text

和延遲貼花不同,這裡沒有涉及任何投射,因此一個典型的貼花模型,由於和模型緊貼,可能要在材質中包括一個表面的偏移,另外,還要小心對於 LOD 的模型,貼花可能會在 LOD 時造成不好的效果。

新貨:空間互動元件

使用空間互動元件,可以為控制元件元件在遊戲世界中模擬出硬體輸入事件。

image alt text

可以將它像鐳射指示器一樣附加於任何物體上來和控制元件進行互動,也有其他一些選項可供自定義行為使用。當標準輸入來自玩家控制器時,可以將該輸入定向到互動元件上來模擬一個特定的硬體輸入,比如滑鼠左鍵按下/擡起,並根據當前使用者懸停的物體來實現。

對於以前依靠直接在空間元件中點選滑鼠來實現的做法而言,這個通道已不再支援。使用者需要先附加一個互動元件(在滑鼠模式下),並在輸入事件發生時進一步傳遞輸入給互動元件來實現。

新貨:VR 專案模板

我們這次新增了一個專案模板,為桌面和主機的虛擬現實專案專門設計。

image alt textimage alt text

要訪問這個模板,只需在新建專案的視窗中選擇 VR 專案即可。

這個藍圖專案的設定已經為在 VR 上能跑到每秒 90 幀做了準備。為了支援不同型別的控制器,該模板包含了兩種運動方式,分別在兩套不同的 Pawn 藍圖中實現。第一套為遊戲手柄設計,另外一套則是為運動控制器設計。在使用運動控制器時,可以瞬移到不同的位置來抓去、扔出物體。將來的更新中會提供本模板的 C++ 版本,另外移動平臺的 VR 模板以後也會到來。

新貨:移動裝置自定義後處理過程

現在在移動裝置上也能使用自定義的後處理材質了!看看這個移動渲染器上的“電視雪花屏”效果吧。

image alt text

  • 這個功能需要你開啟在專案設定中的 "Mobile HDR" 選項

  • 支援獲取混合位置在 ‘Before Tonemapping’ 和 ‘After Tonemapping’ 的 PostProcessInput0 (SceneColor)

  • 此功能目前尚不支援那些需要用“馬賽克”編碼來達成HDR渲染的舊安卓裝置。

  • 目前還不支援畫素深度資訊

新貨:支援移動裝置的光通道

現在在移動裝置上也能使用光通道了!這允許你有選擇性的用指定的燈光影響物件。對於需要高階光照的動畫來說相當有意義。

image alt text

  • 在不同的通道中能支援多個方向光。

  • 每個渲染物件(Primitive)只會受一個方向光影響。在渲染物件(Primitive)上的第一個光通道設定會決定它會受哪個方向光的影響。

  • 固定或者動態的方向光生成的 CSM 陰影只會投影到匹配光通道設定的渲染物件(Primitives)上。

  • 動態點光源完全支援光通道。

新貨:MAC 上的 SHADER MODEL 5 渲染

Mac Metal 現在能夠預設開啟 Shader Model 5 的支援了。這將使得所有 Mac OS X 10.11.6 的 Metal 上可用的特性都能在虛幻引擎 4 中得以使用。

image alt text

  • 實現了 RHI 執行緒和平行排程分發渲染指令。

  • 對 Metal 計算 shader 的支援。

  • 支援在 AMD GPU 上的非同步計算。

  • 啟用了原先在 Mac 上不可用的一些高階渲染特性,包括:

    • 高質量的動態曝光功能(也被稱作人眼適應)。

    • 環境反射 Shader 計算 —— 僅在 4.13 版本且有獨立顯示卡裝置上工作。

    • 距離場環境遮蔽 —— 僅在 4.13 版本且有獨立顯示卡裝置上工作。

    • 距離場投影 —— 僅在 4.13 版本且有獨立顯示卡裝置上工作。

新貨:物理動畫元件(試驗功能)

新增了物理動畫元件,能夠很容易的通過物理來驅動骨架網格體的動畫行為!

image alt textimage alt text

該元件能夠直接設定馬達的強度,並使用一個預先設定的物理動畫配置,該配置是在 PhAT 中建立並編輯的。PhAT 中新的 "Physical Animation Profiles" 功能為不同的遊戲內容中的角色提供了強大的支援,並能夠為特殊動畫提供調整的手段。

可以在 PhAT 的工具中建立並編輯不同的配置,並在執行時很容易就能對它們做改動。在藍圖中看一下新的 "Apply Physical Animation Profile" 和 “Apply Physical Animation Settings” 函式,它們能夠動態的改變物理動畫的行為。

新貨:過程生成模型的切割

對於過程生成網格體元件,現在有一個工具可以在執行時對它進行切割。

image alt text

在切割後,我們添加了 ‘capping’ 幾何體,並建立了第二個過程生成網格體元件,作為預期的 ‘另一半’。

另外,過程生成網格體也支援簡單的碰撞,因此可以啟用物理模擬,最後,我們添加了一個工具根據靜態網格體資料拷貝給過程生成網格體(要在 cooked 的版本下工作的話,‘Allow CPU Access’ flag 必須在靜態網格體上被設定)。

新貨:VR 中的模型表面塗抹

現在 VR 編輯器中可以直接對貼圖和模型表面進行塗抹。

image alt text

這裡便可以使用運動控制手柄在 VR 的沉浸環境下直接對靜態網格體表面進行塗抹。只需要開啟 “模式” 面板,點選 “Mesh Paint” 分頁。然後只需要在場景中選擇一個物體,瞄準它並扣下手柄扳機就能塗抹了。壓力敏感度也由手柄扳機按鈕支援,並且可以按住 “Modifier” 按鈕來擦除當前的繪製。

新貨:VR 中的植被塗抹

在這次的版本中,可以使用運動手柄在 VR 中直接繪刷表面植被。

image alt text

選擇一個植被型別,用鐳射線指向所需要的位置並扣下扳機扳機按鍵就能繪刷植被!還可以按住 Modifier 鍵來擦除植被。按壓的力度也是有效的。另外,植被編輯器也為 VR 中更好的使用而做了一些改進,但目前仍然有一些功能不可用,比如 lasso 工具和選取工具。

新貨:VR 中的顏色選取工具

現在在 VR 中顏色選取視窗也可直接使用了。因此可以直接對場景中的燈光或者其他 Actor 的顏色屬性進行修改。也可以使用顏色選取器來作為 VR 中的頂點繪製和貼圖繪製的用途來使用。

image alt text

新貨:VR 編輯器直接運行遊戲

為了更容易的製作遊戲原型,現在能夠在 VR 編輯器內直接啟動 VR 遊戲。只需要在快速選單上點選 “Play” 便能直接啟動遊戲進入 VR!退出遊戲回到 VR 編輯器的操作是兩個手柄同時按住 Grip 按鈕,並且同時扣下扳機按鈕

image alt text

新貨:VR 物體控制工具改進

VR 編輯器中的移動工具也做了改進,更加易用並且還有一些新的特性!

image alt text

平移和旋轉物體更加自然,在 VR 中也可以通過一個 2D 平面來一致的平移或縮放物體。之後我們還會對該工具做進一步的改進。

新貨:VR 編輯器中的手電筒功能

通過使用快速選單,現在可以在手柄上增加一個手電筒,來照亮場景中的暗部,或者通過它來檢視不同材質和燈光的互動效果。

image alt text

新貨:在 VR 編輯器中截圖

現在可以直接在 VR 中截圖了!

image alt text

新貨:VR 編輯模式的自動啟用

現在,當 VR Editor 模式被開啟時,不再需要手動的點選 VR 按鈕來進入或退出 VR 模式。在編輯器為當前啟用視窗時,只需要帶上頭顯裝置,就會自動進入 VR 編輯模式,但移除頭顯裝置時便自動退出 VR 編輯模式。

image alt text

如果需要的話,在 VR 的試驗功能處有一個設定來開關是否使用這個自動的功能。

image alt text

新貨:SEQUENCER 的匯入/匯出

Sequencer 現在支援以 CMX EDL 檔案格式的匯入和匯出,來回非線編編輯包的互動。

image alt text

上圖顯示了一個 sequence 的 shot 被匯出到 Adobe Premiere Pro 中。每個 sequence 的 shot 被寫成一個單獨的視訊檔案,並被 EDL 檔案引用。任何在 Premiere 中的改動則可以被重新匯入到 UE4 的 Sequencer 中!

Sequencer 匯出 OpenEXR 檔案的 HDR 資料功能現在擴充套件了一些,使用者可以選擇 HDR 資料編碼時的色域設定。

image alt text

最後,Sequencer 現在支援直接匯入 FBX 動畫給一個物體或者一個軌道。也可以將動畫軌道匯出成 FBX!

新貨:SEQUENCER 在渲染器上的 BURN-IN

在將電影序列渲染成品時,可以為輸出圖片配置 “Burn-in”。這個功能能更方便的識別每個 Track Shot。

image alt text

新貨:媒體播放的框架結構翻新

這次媒體框架 API 被徹底翻新了,還加了很多新功能!現在能夠在專案中嵌入實時的視訊和音訊,還有其他諸多強大的特性。

image alt text

  • 為播放多個媒體源的播放列表資源

  • 支援回放音訊

  • 改進了匯入媒體檔案的過程

  • 改進了藍圖的整合

  • 在多個平臺上改進了效能

  • 在 GPU 上進行畫素格式轉換

  • 對一些平臺支援動態改變視訊解析度

Android

  • 支援多個音訊軌道

  • 支援可用 HTTP Live Streaming (HLS) 的裝置(m3u8)

Playstation 4

  • HTTP Live Streaming (HLS)

  • 回放控制的改進(Pause,SetRate,等)

  • 媒體檔案可以預先快取到記憶體中

  • 從 FArchive 開啟媒體

  • 能夠同時播放多個視訊(可能需要在設定中增大記憶體池)

Windows

  • 現支援 H.264

  • 對 HTTP(S) 和 RTSP 流媒體支援的更友善

  • 更好的錯誤處理和日誌記錄

  • 改進穩定性和可用性

  • 對於非標準或不支援的編碼格式處理的更加優雅

備註

  • 對 macOS/iOS 的支援當前為試驗功能 (AvfMedia 外掛)

  • 對 Linux 的支援為試驗功能 (GitHub 上的 VlcMedia 外掛)

  • 對 Video-Over-IP 的支援為試驗功能 (GitHub 上的 NdiMedia 外掛)

  • XboxOne (MfMedia) 和 HTML5 暫時還不支援

  • 和 Sequencer/視訊錄影 的功能整合計劃在 4.14 中實現

  • PlatformMediaSource 資源暫時還沒有實現

更新:各平臺 SDK 更新

在每次版本中,我們對會將引擎對各大平臺 SDK 更新到最新的版本。同樣在這次的版本中,現在已經能夠在 Windows 下使用二進位制的 UE4 版本直接遠端編譯 iOS/tvOS 的專案了!

image alt text

  • iOs/tvOS: 在 Windows 下使用 Unreal Engine Launcher 下載的二進位制 UE4 版本已經可以直接編譯具有程式碼的專案了。(當然仍然需要某處有一臺 Mac 來遠端編譯)

  • macOS: 現支援 Xcode8 和 macOS 10.13 Sierra

  • iOS/tvOS: 現支援 iOS10/tvOS10

  • Xbox One: 更新到 August 2016 XDK

  • Playstation 4: 更新到 PS4 SDK 3.508.201

  • Oculus Rift: 更新到 Oculus 1.6 Runtime

  • SteamVR: 更新到 OpenVR 1.0.2

  • Google VR: 為 iOS 添加了 Google VR (Cardboard) 的支援

  • OSVR: 更新到 v0.6-1194-g0c54f5e

  • Android: Google Play Games native C++ SDK 更新到 2.1

  • Android: Google Play Services 更新到 9.2.0

  • Android: 支援在 Nougat 上執行,即 Android 7.0

  • Vulkan API: 更新 SDK 為 1.0.17.0 (面向 安卓 及 Windows 平臺)

更新:地表的表面細分的功能改進

硬體的地形曲面細分現在更快了!現在地形的渲染只會在最高階的 LOD 上做硬體曲面細分,並將地形對次一級的 LOD 做漸變過渡。低級別的 LOD 不再做曲面細分,這將大幅提升效能,並對靠近攝像機部分的畫面細節再次提升。

image alt text

在上圖的視覺化結果中,最高級別的 LOD 渲染時啟用了曲面細分,而其他 LODs(顏色)渲染時則不使用曲面細分。

新貨:動畫 POSE 資源

我們為動畫資源增加了一個新的型別,叫做 Pose 資源。它包含一組骨骼的位置,可以被附加在其他動畫上使用,類似於頂點在混合空間中的用法。

image alt text

一個用途可以支援面部表情動畫,要麼通過 FACS(Facial Action Coding System) 驅動,或者 viseme 曲線驅動。可以用這套系統通過混合其他姿勢來創造新的動畫。

可以在 Persona 中的 Create Asset 選單,或者內容管理器中的內容選單,從一個動畫序列資源中建立 Pose 資源。在建立 Pose 時資源的名字會自動生成,之後可以手動對它重新命名,或者使用剪貼簿粘帖給所有資源同時重新命名。

Pose 由普通動畫曲線驅動。在動畫中都能看到這個曲線。在 Persona 中如果想要從曲線中預覽一個 Pose,需要設定當前預覽 Pose 資源。

image alt text

在動畫圖表中,可以使用 Pose Blender 節點(或者是 Pose By Name),根據輸入曲線來輸出 Pose 資訊。

image alt text

為了支援這個系統,我們對如何處理附加混合的縮放做了改進。將來我們希望對其他資源也支援曲線(比如聲音波形資源),以用來驅動 Pose 資源或者頂點變化。

新貨:動作驅動的動畫節點(試驗功能)

我們新增了一個 Pose Driver 節點,可以通過它根據一個骨骼的運動來驅動曲線數值(比如頂點變化的目標權重)。

image alt text

這裡使用了一個 RBF(Radial Basis 函式)基於目標骨骼的朝向和驅動數值之間做插值。使用一個 Pose 資源來定義骨骼的目標姿勢,以及每個姿勢上所期望的曲線數值。該節點能夠作為一個 Pose Space Deformer,根據骨骼的朝向驅動正確的混合形狀。

新貨:動畫節點姿勢的檢視功能

動畫圖表中的節點可以在 Persona 中進行查看了。

image alt text

這個功能提供了一個方式來檢視動畫圖表中任意節點位置計算得出的動畫效果的實時顯示。可以同時檢視多個節點,以便於對一些可疑的問題更容易的找到原因。這個功能對除錯複雜的動畫藍圖系統是非常有用的,而以前只能通過將想觀察的節點直接連線至 ROOT 上並重新編譯藍圖才能看到效果。

更新:場景捕獲功能的改進

和新的 “藍圖繪製到 Render Target” 功能一起,場景捕獲的功能做了改進並且更加有用了!

image alt text

  • 現支援正交投射。

  • 當藍圖通過 Capture Scene 函式更新場景獲取畫面時,它會立刻執行,使得畫面能夠對 Draw Material to Render Target 進行處理

  • 不透明度以 Alpha 形態捕獲,這能夠對場景捕獲時部分渲染並且方便之後和其他場景合成。

  • 各種 GBuffer 屬性現在也能被捕獲,包括深度。

  • 新增了 ‘Hidden Actors’ 和 ‘Show Only Actors’ 陣列,使用它們可以較容易的控制場景捕獲時那些要被渲染。

image alt text

遊戲的特定效果,比如戰爭迷霧,可以根據模型的可見性來決定是否在正交場景捕獲是渲染,然後再使用 Draw Material To Render Target 對影象進行處理。

更新:折射材質的改進

有個新的 “畫素法線偏移” 的折射模式,基於頂點法線,並根據畫素法線和頂點法線的差異計算折射便宜。這倒不是基於物理的演算法但能夠使得平面的水面得到折射效果。

image alt text

左:簡單的場景,沒有折射

中:預設的折射方法,引起了水面不希望見到的常量偏移

右:畫素法線偏移折射方法,根據法線貼圖的差異計算

image alt text

新貨:來自射線跟蹤的貼圖座標

我們在專案設定中增加了一項支援來自射線跟蹤下的貼圖座標(UV)。

image alt text

該選項在 專案設定 -> Physics -> Optimizations。在啟用時,可以使用 ‘Find Collision UV’ 函式做一次碰撞檢測並對任意 UV 通道在該碰撞處獲取 UV 資訊。該功能會使用額外一些記憶體,作為 UV 資訊的一部分拷貝需要被儲存到 CPU 訪問的記憶體中。

更新:SPLINE 編輯的改進

藍圖編輯器中預設編輯 Spline 元件

現在可以在藍圖編輯器中直接對 Spline 元件的控制點進行編輯。預設情況下會建立新的藍圖例項,也可以對關卡中放置的示例逐一覆蓋。

image alt text

"Reset to Default" 操作可以將當前例項的 spline 恢復到藍圖類預設狀態。任何對藍圖類的修改都會被自動的應用到那些沒有做過自定義修改的例項上。

image alt text

細節面板中對 spline 控制點的數值編輯

原先並沒有方法來精確的控制各個點和他們的縮放、傾向、角度資訊。現在這些屬性可以在當前選中 spline 時的細節面板中直接編輯了:

image alt text

新的 spline 點屬性

現在 spline 點能夠逐個定義進入角和離去角,以及一個仲裁輸入鍵值。以前只允許 spline 不連續,而以後可以在點上有更多控制手段。在設計 spline 線路時這會帶來很多幫助。

在 spline 視覺化視窗中,Spline 元件細節面板上,選單中有一個選項可以允許每個進入角和離去角的單獨設定,而不再是鎖定的狀態:

image alt text

作為可以可以每個點設定輸入值的結果,現在有另一個方法來定義一個封閉 spline 的迴圈位置的輸入值:

image alt text

如果輸入值或者迴圈點未被定義,那麼仍然和以前一樣,會從 0.0 處開始,並每個點增加 1.0。

藍圖中的 spline 延遲更新

有時候,可能希望在藍圖的構造指令碼中過程生成 spline。先前每個對 spline 的操作都會造成 spline 重新構建,現在,為了優化的目的,在每個 spline 點上操作後都能夠指定 spline 是否需要重新構建。因此有一個轉為更新 spline 用的節點。

image alt text

為構建指令碼輸入 spline 點

有時候在 spline 視覺化編輯器中編輯 spline,並在藍圖指令碼中對它進一步改造。比如藍圖可以鎖定所有的可編輯點到一個球體的表面,類似這樣子:

image alt text

可以通過勾選 "Input Spline Points to Construction Script" 屬性來實現:

image alt text

新貨:子動畫藍圖

現在,可以在動畫藍圖中使用 ‘Sub Anim Instance’ 節點,來引用另一個子動畫藍圖,這麼做可以將一個巨大的動畫藍圖分解成幾個不同的部分,比如分解成 “運動” 部分和 “物理” 部分。

image alt text

子藍圖的成員變數可以被對外暴露並作為節點的輸入引腳。子動畫藍圖和它的外部藍圖必須使用同一個骨架結構。

新貨:動畫曲線檢視

我們從 Persona 中醫除了骨架曲線的分頁,將這部分功能改進並作為動畫曲線分頁。這裡可以對曲線進行重新命名或刪除曲線,以及預覽曲線的資料。

image alt text

這裡可以看到當前骨架下的所有曲線,或者來自上一個資源的當前活躍曲線。這裡還可以根據特定型別對曲線進行過濾。請注意我們將預設曲線改稱為“屬性”,因此任何動畫曲線都將有預設屬性曲線。

如果想要修改曲線數值,可以去掉 Auto 的勾選項,或者直接輸入數值。

新貨:UMG 控制元件中的 SPRITE

現在可以使用 Paper2D Sprite 作為 UMG 和 Slate 空間的 Brush 輸入。除了可以對已有的 UI 有更好的使用外,這麼做還對空間渲染帶來很多優化效果,在很多平臺上 drawcall 的數量始終很緊張。不同的 Sprite 可以作為同一個貼圖資料並在 Slate 中整合在一起,渲染時共享同一個層面以提高效能。

image alt textimage alt text

更新:VR 中即時立體渲染的優化

這次對即時立體渲染做了一些改進,包括了將 velocity pass 移動到即時立體渲染中,多視口支援對 PS4 也起效,這在使用 ISR 過程的時候帶來巨大的效能提升。

新貨:GPU 頂點變形(MORPH TARGET)

現在專案可以通過 GPU 在 硬體上計算 Shader Model 5 的頂點變形。這麼做將釋放更多的 CPU 計算效能。

image alt text

更新:優化地形 SHADER 的記憶體

現在對於地形材質來說,編譯少得多的 Shader 組合,改進了第一次 Shader 的載入編譯時間,在編輯器的迭代工作和 Shader Cache 的大小及記憶體佔用上都做了優化。

更新:移動平臺的 SHADER 優化

Combined Static 和 CSM 陰影模式在 4.12 中就有了,這個模式下,靜態方向光源能夠對靜態物體產生靜態陰影,對動態物體產生 CSM 陰影。在 4.13 中,對造成 CSM 陰影的動態物體會根據它們的邊界自動的選取合適的 shader,不再需要手動的為每個受相關光照影響的物件指定標籤了。

新貨:地形匯入外掛

這次為地形檔案格式新增了一個外掛 API,為地形支援不同的高度圖和權重圖的檔案格式。現存的 raw 支援和 png 支援也被更新到了新的 API。特別是 png 支援的部分,也是一個要實現其他新的地形檔案格式外掛的很好的參考示例。

新貨:安卓的自動測試

現在專案啟動器可以打包並同時在多個安卓裝置上啟動遊戲。每個裝置上執行的應用程式都會通過 USB 和主機電腦通訊,並顯示在 Session Frontend 視窗中。

可以在所有裝置上啟動自動化測試,並在 Session Frontend 中檢視結果。

image alt text

更新:安卓上的 OPENGL ES 3.1

雖然 UE4 並不支援一些 OpenGL ES 3.0 和 3.1 的特性,但現在可以在安卓裝置上指定使用 ES 3.1。這裡會為安卓裝置帶來一些 Metal 和 Vulkan 的高階特性,能夠使用 16 個貼圖取樣,以及使用統一的快取區來改進效能。

可以為專案打包同時選擇 ES 2.0 和 ES 3.1 shader,裝置會自動使用當前相容下的最佳 shader 平臺。

image alt text

新貨:移動平臺打包引導

我們添加了一個 Mobile Packaging Wizard 來幫助生成一個最小的需要上傳到 AppStore 的程式以及其他可以通過雲端下載的內容。

image alt text

  • 這種型別的打包方式對具有固定 DLC 更新到大型遊戲很常見

  • 這麼做也能夠使得使用者可以僅下載裝置相關的內容,比如符合裝置所需的 shader 和貼圖格式等

  • 該 Wizard 可以從 Project Launcher 視窗的建立新增配置選項處開啟

新貨:移動裝置支援全精度材質

在移動裝置上,材質有一個選項可以在 Pixel Shader 上使用全精度(預設是中度精度),例如這麼做對於使用世界座標參與計算的材質就能帶來效果的幫助。

image alt text

新貨:安卓裝置的二進位制 SHADER 快取

已編譯的 Shader 會被儲存在磁碟上用於第一次載入使用,並在之後的執行中被重用。

  • 要求 GL_OES_get_program_binary 擴充套件

  • 預設關閉,僅能在安卓裝置上開啟。(r.UseProgramBinaryCache=1)

更新:本地化文字格式改進

為了更準確的實現文字的翻譯,我們改進了本地化文字的格式。

複數形式::

  • 複數形式可以根據一個給定的數字,使用多個文字。複數形式可以是 Cardinal 格式,比如 "There is 1 cat", “There are 4 cats”,或者是 Ordinal 格式,比如)“You came 1st!”, “You came 2nd!”,等等。

  • 複數形式通過 key->value 一組來定義,並支援任意一下關鍵字(有 culture 的 CLDR Data 來定義,):zero, one, two, few, many, other. 數值是另一個引用字串,並可以包含格式標記。

  • Cardinal Format 示例:"There {NumCats}|plural(one=is,other=are) {NumCats} {NumCats}|plural(one=cat,other=cats)"

  • Ordinal Format 示例:"You came {Place}{Place}|ordinal(one=st,two=nd,few=rd,other=th)!"

性別形式:

  • 性別形式能夠根據 ETextGender 的值來對文字使用不同的字串,比如:"Le guerrier est fort", “La guerrière est forte”.

  • 性別形式定義了一個列表,順序是男性,女性,中性(中性為可選)。數值是另一個字元並且可以包含格式標記。

  • 格式示例:"{Gender}|gender(Le,La) {Gender}|gender(guerrier,guerrière) est {Gender}|gender(fort,forte)"

韓文位置後處理:

  • 韓文位置後處理能夠在顯示韓文的時候處理語法規則,並根據結尾處的子音或母音在正確的位置插入字形,比如:"사람은", “사자는”.

  • 韓文位置後處理有一個列表定義,順序為 子音,母音。數值則是可選的字串。

  • 格式示例:"{Arg}|hpp(은,는)"

為了複數形式和性別形式的支援,正確的傳入 數字/性別 的數值,所有的 FText::Format(...) 家族函式現在傳入 FFormatArgumentValue 而不是 FText。這樣可以準確的從數值型別、ETextGender 或者 FText 來執行函式。

在藍圖中也暴露了這些功能,在 "Format Text" 的節點上的萬用字元輸入引腳:

image alt text

image alt text

如果預期會被多次呼叫 FText::Format(...) 的話,還可以預編譯格式模式來重用。只需要新建並儲存一個 FTextFormat 例項並將它作為模式傳給 FText::Format(...)。

新貨:多執行緒聲音(試驗功能)

除編輯器外,現在 sound cue 的評估和啟用的 wave 例項的確定性計算能獨立於遊戲執行緒執行。正對遊戲的活躍的 sound cue 的數量和複雜度,每個遊戲的收益可能有所不同,不過在有些情況下,在我們的測試中,我們發現了差不多每幀有1毫秒的遊戲執行緒時間轉移到了音訊執行緒。

這個功能在 4.13 中預設是關閉的,不過你可以嘗試在 BaseEngine.ini 的[Audio]部分修改 UseAudioThread 為true 來開啟它。

新貨:網路回放的向下相容

現在,錄影錄製功能有了向後相容性。這意味著你可以修改版本,甚至新增或者刪除一些用以同步的屬性,然後再在新版本中開啟一個在舊版本中錄製的錄影。

如果要測試這個功能,你可以簡單的用某個版本錄製一個錄影,改變一些同步的屬性,並且在新的版本中開啟同樣的錄影!

大部分工作是在每個同步屬性的底層的反射資訊中被處理的。對於自定義序列化的網路資料(UObject::NetSerialize),你現在可以使用兩個新加到 FArchive 的方法(FArchive::EngineNetVer() 和 FArchive::GameNetVer()),這些可以讓你獲取當前版本的網路資料流並且手動處理舊的資料。

新貨:構建圖表指令碼化(試驗功能)

BuildGraph 指令碼可被用來建立自定義的UE4構建命令序列用以自動化構建。這些圖(構建指令碼)以 XML 指令碼的形式,用類似 MSBuild,Ant 或者 NAnt 的語法,由一個有依賴 節點 的網路來組成各個 任務

image alt text

一些 BuildGraph 指令碼的示例存在了這裡:Engine/Build/Graph/Examples/…

新貨:製作安裝版本的指令碼

以製作過程更簡單以及對其他的開發團隊更透明的引擎定製化為目標,我們已經用 BuildGraph 指令碼語言重寫了可安裝的UE4釋出版本的構建過程。指令碼在 Engine/Build/InstalledEngineBuild.xml,能用 AuomationTool 和一下的命令列來執行。

Windows:

BuildGraph -target="Make Installed Build Win64” -script=Engine/Build/InstalledEngineBuild.xml -clean

Mac:

BuildGraph -target="Make Installed Build Mac” -script=Engine/Build/InstalledEngineBuild.xml -clean

加上 -listonly 選項來檢視定製化構建過程的可用選項列表。

新貨:作為虛幻屬性的 TSETS

TSets現在能被用來作為UPROPERTY了,也就是說可以被用來做自動的序列化,垃圾回收,ini設定以及通過細節面板來編輯(受限於用字串來輸入(例如"(1,2,3)"))。類似於TMap,TSet的屬性目前還不能作為“同步屬性”以及不能被用在藍圖中。

版本變更詳單(以下保留原文)

AI

  • New: Added two appropriately named functions to the AI Perception Component

    • The functions for "Get Currently Perceived Actors" and “Get Known Perceived Actors” have replaced the ambiguously named “Get Perceived Actors”.

  • New: Made AI Sight sense's collision channel configurable via the AI System's settings.

  • Bugfix: There was a case where EQS item score normalization where all all items had the same score. We used to normalize the score to 1, but now it's based on the shared item score.

  • Bugfix: The AI Controller was overzealously clearing out its Cached Gameplay Tasks Component on UnPossess, even if the pawn was not the owner of Game Play Tasks Component.

  • Bugfix: Blackboard Key Selectors were not being tied to the blackboard entries properly when used in Blueprint.

  • Bugfix: EQS queries were losing part of the data on asset duplication when they had more than one option branch.

  • Bugfix: The Processing of AI Messages has been fixed when a new message appears during a notify loop.

  • Made Simple Move To Location/Actor reset velocity only if the agent is already at goal.

  • Removed infinite loop protection from Gameplay Task event processing, as it was hiding source of issues.

  • Turned Graphs off by default in the Visual Logger.

BEHAVIOR TREE
  • New: Added v-logging of failures of adding dynamic subtrees to a Behavior Trees Component.