Unity 2018.2正式版功能介紹(上)
時間: 2018-07-19 14:32
瀏覽次數:
Unity 2018.1標志著全新發布周期的開始,最核心的二個創新功能: 可編程渲染管線Scriptable Render Pipeline (SRP) 和 著色器視圖Shader Graph 。它們為藝術家和開發者帶來了更多強大的功能;C#
Unity 2018.1標志著全新發布周期的開始,最核心的二個創新功能:可編程渲染管線Scriptable Render Pipeline (SRP)和 著色器視圖Shader Graph。它們為藝術家和開發者帶來了更多強大的功能;C# Job System、Burst Compiler和ECS,則讓用戶不必為編程煩惱,合理利用多核處理器成為可能。Unity 2018.2以此為基礎,增加一些新功能與新特性。本文我們將詳細為大家介紹Unity 2018.2中的重要功能與更新。
由于本文篇幅過長,為了讓用戶方便閱讀,我們將分拆進行發布,本文重點介紹Unity 2018.2中的圖形方面改進。
你可以從Unity Hub或下面地址下載Unity 2018.2:
https://unity3d.com/get-unity/update
Unity 2018.2版本新功能簡介
Unity 2018.2的目標之一是構建可編程渲染管線SRP,加強下一代渲染技術。它的另一個目標則是開發大量新功能和改進內容,幫助用戶在移動領域開發取得成功。現在先簡要介紹我們在這二方面所做的工作。
Unity 2018.2優化了輕量級渲染管線LWRP的性能,增強了高清晰渲染管線HDRP的效果,從而幫助開發者實現高端視覺效果,還為著色器視圖Shader Graph的多項改進,使它能夠支持上述二個管線。請注意,LWRP和HDRP目前仍處于預覽版。
我們增加了對iOS、Android、Windows、MacOS、UWP和PS4的IL2CPP托管代碼調試的支持,并且開始為輕量級渲染管線LWRP添加了針對移動端的優化。
對于Android項目,我們正式發布了對64位(ARM64)支持,現在我們允許開發者直接添加Java代碼到Unity插件文件夾下,而不需提前創建Java庫。
最后,新版本中還加入了一些新的2D功能,它們將作為預覽版資源包發布,包括Vector Graphics(矢量圖形)導入器和Pixel Perfect(完美像素)。矢量圖形導入器能讓你輕松處理SVG圖形,Pixel Perfect使你可以更輕松地在各種設備上實現不同分辨率的完美復古外觀。
我們將在下文為大家詳細介紹改進的細節功能及內容。
可編程渲染管線SRP
在Unity 2018.1中,我們引入了可編程渲染管線SRP(預覽版),它讓藝術家和開發者能夠控制強大的新渲染管線。Unity 2018.2包含以下SRP更新:
1、SRP批處理器加速CPU渲染
SPR批處理器(SRP batcher)是一種Unity引擎的新型內循環代碼,它可在不影響GPU性能的情況下加速CPU渲染速度,它替代了傳統的SRP渲染代碼。
使用基于物理渲染功能的游戲經常通常具有多個對象和網格,對象上不同的材質共享著相同的著色器和關鍵字。SRP批處理器為使用PBR的游戲提供了很大的CPU速度提升。
SRP批處理器能夠與高清晰渲染管線HDRP和輕量級渲染管線LWRP結合使用,目前支持PC DirectX-11、Metal和PlayStation 4。
2、可編程著色器變體移除
由于項目中的著色器變體數量增多,安裝包構建時間和數據大小會隨著項目復雜度而提升。可編程著色器變體移除功能在Unity 2018.2引入,你可以使用它管理生成的著色器變體數量,大幅減少安裝包構建時間和數據大小。
此功能允許你移除所有帶有無效代碼通道或無用功能的著色器變體,創建著色器構建配置,例如:標記為“調試”和“發布”的配置,而不會影響迭代時間和維護復雜度。可編程著色器變體移除功能將大幅提高團隊效率。
了解著色器變體移除功能請閱讀:Unity 2018.2新功能:可編程著色器變體移除。
在GraphicsSettings中的著色器變體移除選項
3、輕量級渲染管線(預覽版)
輕量級渲染管線LWRP提供了高性能,它對于低端硬件、XR和移動端等性能消耗較大的應用和平臺。
LWRP通過利用優化瓦片(Optimized Tile)功能進一步提升了性能和優化效果。LWRP會調整瓦片的載入和存儲數量,從而優化移動端GPU的內存。它可分批對光照著色,減少重復繪制和繪圖調用的次數。
目前,LWRP的基本功能目前支持所有VR平臺,然而在Unity 2018.3發布前,它不會支持多重采樣抗鋸齒MSAA技術。
請注意:LWRP目前還不支持手持式AR開發工具,例如:ARCore、ARKit、HoloLens以及Magic Leap設備。新產品計劃將在未來的計劃中發布。
LWRP為低端硬件和XR等性能要求較高的應用提供了高性能效果
4、高清晰渲染管線(預覽版)
高清晰渲染管線HDRP在Unity 2018.1首次作為預覽版發布,它針對PC和主機等高端平臺優先處理高端視覺效果。
在Unity 2018.2中,我們將進一步幫助開發者實現高端視覺效果。請注意:SRP目前仍處于預覽階段,所以我們不推薦將它們用于正式制作之中。這次更新的改進內容包括體積測算、光滑平面反射、幾何鏡面反射AA、代理屏幕空間反射及折射、網格貼花和陰影遮罩。
體積測算(Volumetrics):體積霧會從除了區域光外所有支持的光照類型獲取光照。你也可以用密度體積來控制霧的密度。
光滑平面反射(Glossy planar reflection):平面反射功能現在已支持光滑的反射效果,這意味著它會考慮材質的光滑度。
幾何鏡面反射AA(Geometric specular AA): 三角形數量較為密集的網格會造成鏡面鋸齒現象。為了解決這個問題,我們新增了一個選項來降低并限制鋸齒數量。
代理屏幕空間反射和折射(Proxy Screen Space Reflection & Refraction):此功能允許你使用代理體積即接近場景邊界的體積,來執行屏幕空間的反射和折射。盡管它和使用深度緩沖得到的效果相比并沒有那么準確,但它在運行時的性能消耗較低。
網格貼花(Mesh decals):這個功能可以在投影器貼花之外,讓你使用網格來作為貼花之用。
陰影遮罩(Shadow mask):此前,HDRP中的這個功能使用距離陰影遮罩(Distance Shadowmask)模式(這個模式會使動態陰影漸變為最大陰影距離位置的陰影遮罩)。在Unity 2018.2中,如果動態陰影只渲染一個不受光照貼圖影響的對象(對應內置渲染管線的陰影遮罩模式),你可以選取每個光照。所以,和內置渲染管線不同,HDRP還能同時啟用陰影遮罩模式,這樣便可為內置陰影遮罩模式控制每個光照。
除此之外,我們還添加了“部分”著色器視圖Shader Graph對HDRP的支持,可通過可視化的方式創建著色器,我們還提升了總體的穩定性和性能。“部分”支持是指只有HDRP功能中的一個子集可以在著色器視圖Shader Graph中使用。目前Shader Graph針對HDRP的支持還不包括高級材質功能,例如:SSS、清漆層等,也無法進行曲面細分。
請注意:HDRP目前不支持任何AR或VR平臺。對這些平臺的支持預計在2019年推出,新的產品計劃將在之后通知。
在楓丹白露攝影制圖演示中,帶有來自陽光的體積光射線
漸進光照貼圖
漸進光照貼圖Progressive Lightmapper在Unity 2018.1版本脫離預覽階段,這次更新添加不少改進。
1、可配置烘焙光照衰減
在漸進光照貼圖中的可配置光照衰減功能可以讓你在烘焙光照時匹配符合物理特性的衰減曲線。此前,聚光燈和點光源的光強度會大幅受到光的范圍值影響。這樣的效果不符合物理規則,因為現實中光的衰減距離或衰減量是由光強度決定的。
此功能允許使用漸進光照貼圖通過使距離衰減與世界空間距離相關聯來解耦范圍和強度。雖然Unity仍支持傳統的衰減功能,但現在也新增了對線性衰減和距離平方衰減的支持,尤其是在范圍限制中衰減為0的距離平方衰減。默認情況下,平方反比衰減會在HDRP中使用,用來匹配實時光照,并且為光強度啟用物理單元。
2、用于預計算的實例化反照率和發射率
我們曾在所有光照貼圖的特有光照貼圖空間中分配發射和反照率。然而,由于實例通常分享反照率/發射特性,我們現在支持對每個特有實例生成這些映射。這樣會減少漸進式光照貼圖所使用的內存總量,進而能夠烘焙更大的場景。
3、附加場景光照警告
出于性能原因,最好將大型場景分割為較小的子場景,這些子場景能夠在運行時根據可見性來加載和卸載。我們稱之為“附加性加載”或“多場景”設置。
帶有全局光照的附加載入場景
當為多個場景配置生成GI光照時,Unity所提供的工作流會讓用戶載入所有需要的子場景,然后讓子場景為這個完整的場景層級生成照明。這樣會輸出一個LightingData.asset文件,它會保存光照貼圖、預計算實時GI和探針數據。這與第一個載入的場景相關聯,該場景被稱作“主”場景。
然后進行運行,加載/卸載的場景會從LightingData.asset導出它們的照明數據,這個文件與主場景相關聯。在這種情況下,子場景的照明設置無關緊要。然而,場景會根據目的以不同的順序單獨烘焙或加載。這可能導致場景帶有不兼容的照明設置和不匹配的照明數據。例如:天空盒效果可能會有所區別,光照貼圖分辨率可能會有多種設置,不同的光照模式也有可能混在一起。
此前,Unity從未提醒用戶這個問題,造成得到的結果與預期不一致。現在,Unity會生成一個警告,提醒用戶存在的不兼容性。然后有關不兼容性的信息顯示出來,以便調試和驗證。
4、其它改進內容
我們還向剔除光照貼圖陰影投射器函數(僅在腳本API中)顯示出“per light”選項,讓它能夠被HDRP使用。
著色器視圖Shader Graph(預覽版)
在Unity 2018.1中,我們引入了Shader Graph,使開發者能夠可視化的構建著色器。這個過程無需編寫代碼,便可在圖形網絡中直接創建并連接節點。視圖中的每個節點都會按照改動提供即時反饋,其易用性使得新用戶也可以參與著色器創建。在Unity 2018.2中,我們進行了一些改進,其中包括:
1、高清晰渲染管線HDRP支持
著色器視圖Shader Graph現在支持帶有PBR和Unlit Master節點的HDRP。用著色器視圖Shader Grap構建的著色器在LWRP與HDRP中都可以使用。
2、頂點位置
現在你可以通過PBR和Unlit Master節點上的Position槽來修改頂點位置。默認情況下,會將對象空間位置輸入到這個節點中。對這個屬性槽的自定義輸入應該指定特定頂點的絕對本地位置。在頂點著色器上,有一些特定節點,例如:程序化形狀節點不會顯示出來。因為這類節點不兼容這個屬性槽。
3、Master節點設置
主節點的設置現在可以在一個小窗口訪問,你可以隨意開啟或關閉這個窗口來修改著色器上的多個渲染設置。
4、屬性引用名字和暴露狀態
現在你可以編輯屬性的引用名字,使它更快速地從腳本引用你的著色器屬性。為此,首先選擇所需屬性,然后在引用旁邊輸入一個新名字。如果你想要重置默認名字,右鍵單擊引用,然后選擇重置引用(Reset reference)即可。
在展開的屬性窗口中,你也可以點擊勾選Exposed。
5、視圖的可編輯路徑
現在你可以修改Unity的著色器視圖和子視圖的路徑。當你修改著色器視圖路徑時,將修改其在著色器選項列表中的位置。當你修改子視圖的路徑時,它會在節點創建菜單中得到一個不同的位置。
6、Is Front Face節點
使用此節點,你可以根據特定部分的面標識來改變視圖的輸出內容。如果當前片段是正面的一部分,節點會返回True。如果是背面,節點會返回False。
請注意:這個功能會要求你在主節點上使用二個面。
7、Gradient節點
此功能會通過二個新節點添加漸變功能。Sample Gradient節點會通過已有的Time參數采樣漸變。你可以在控件視圖上的Gradient槽定義這個漸變。Gradient Asset節點會定義一個漸變,這個漸變可以使用不同的Time參數來被多個Sample Gradient節點采樣。
8、Texture3D和Texture2D數組
這個改動通過二個新的屬性類型和四個新節點來拓展Unity對Texture類型的支持。這些新增內容將讓你定義并采集著色器可視化編程工具中的Texture 3D和Texture 2D Array類型資源。
9、Texture 2D LOD節點
這個節點會為Texture 2D Sample 上的LOD功能添加新節點。Sample Texture 2D LOD使用的輸入和輸出槽和Sample Texture 2D相同,但它還包含一個通過Vector1槽調整細節等級的輸入。
10、展示生成代碼選項
你可以查看任意節點的生成代碼。右鍵點擊節點,點擊Show Generated Code即可展示生成代碼,代碼段會在鏈接到Unity的代碼編輯器中打開。
15.gif (1.29 MB, 下載次數: 0)
下載附件
9 小時前 上傳
小結
Unity 2018.2中的圖形方面改進就為大家介紹到這里,后續我們會介紹此版本其它新功能與改進信息,盡請關注,更多Unity 2018的新功能介紹盡在Unity官方中文論壇(UnityChina.cn)!