Unity引擎渲染模塊知識Tree

渲染效果是遊戲表現力的核心賣點之一。尤其近幾年隨着引擎技術的革命翻新,硬件技術的突飛猛進,以及玩家愈發挑剔的要求,遊戲的表現力正在進入到嶄新的層面。有哪些主流的Shader、自陰影、後處理技術?如何加強人物、畫面的表現力?如何結合引擎的特性製作出性能優異的效果?

面對這麼多需要深耕的知識點,你是否想問,「我該從何入手比較合適?」

無論對於從業者還是正在讀大學的技術萌新,學習的有效時間和個人時間都是有限的。高效學習者最在意的是時間的價值,一個需要體系化的知識地圖就顯得尤爲重要。爲此,我們結合UWA學堂和博客上相關的技術博文,歸納總結,分爲「初級」、「中級」、「高級」和「圖形學理論篇」,歡迎大家按照自己的興趣和需要參考取閱。

 


初級

對於初級入門課程,我們希望這一階段的課程可以很好地幫助在校學生和剛剛入職的技術新人理解Unity引擎的實用技術。我們根據大量研發團隊的技術使用和需求情況來設計該部分的課程內容,在渲染方面推出了由UWA學堂制定的技術教案,由海洋老師傾情講授、手把手進行代碼實現的五堂實用基礎技術課程,非常體系化地講解Unity引擎渲染模塊的入門知識,以及真實項目研發過程中,研發團隊所需的常用技術方案。

這幾門基礎課程分別是:

《詳解Unity引擎渲染模塊》
該課從基本的渲染流程入手,學習Unity渲染流程的各個部分及原理,分別從頂點片元着色器及表面着色器瞭解Unity Shader基本規則及寫法。學習使用Unity Shader控制渲染流程各個部分及可編程部分編寫,對Unity Shader基礎知識做了詳細的解釋。學完這門課,你已經對Unity引擎的渲染流程、GPU的渲染底層有了初步的感性認識。同時,跟着我們一步一步地將代碼實際操作出來,那麼你對Shader編程也就算是入門了

 

《詳解Unity引擎基於物理的渲染功能》
基於物理的渲染功能,是目前遊戲的必備知識。PC端遊戲就不用說了,從兩年前開始,已有大量移動端遊戲都在嘗試使用該項技術來提升畫面品質、視覺效果,以求在茫茫的遊戲火海中脫穎而出。所以,該課從基於物理的渲染基本概念入手,分別講解項目研發時所需要掌握的各種原理和實用技術點,主要包括:BRDF漫反射、BRDF高光反射、菲尼爾函數和能量守護等,同時講解Unity中的PBS實現原理及分析Unity PBS代碼。通過海洋老師大量的代碼分析,以幫助技術新人高效、正確地掌握其核心技術點。通過這門課,如果你可以認認真真地學習裏面的內容和代碼操作,那麼你對於PBR的理解已經超過大多數研發團隊中工作1~2年的技術新手了

 

《詳解Unity引擎Shader Graph功能》
該課程帶你全面學習使用Unity最新Shader可視化編輯器——Shader Graph,課程中詳細講解了Shader Graph的使用方法、Shader Graph所有節點解析、使用Shader Graph製作部分效果的案例以及Unity官方Shader Graph案例工程講解等等。通過它,大家可以直觀地構建着色器,可以在圖形網絡中創建和連接節點,而無需手寫代碼。所以,非常適合在校學生、職場新人,以及想後續從事TA工作的開發者。通過這門課,我們希望你可以進一步掌握Shader編程,並做出一些很有想法的視覺特效,同時,也是對於TA工作的一個基礎入門。

 

《Unity引擎實用陰影渲染技術全解析》
該課程主要講解當前中國Unity項目研發過程中最爲常用且實用的三種陰影實現方案。我們分別詳細介紹了其理論原理及其在Unity引擎中的具體實現和使用細節,基本上認真學完這門課,90%以上的3D移動遊戲項目你就知道他們是如何實現的以及你該怎麼做了!

 

《詳解Unity引擎的屏幕後處理功能》
該課程主要講解了部分Unity引擎屏幕後處理的具體實現方法,包括色調調整、屏幕扭曲、抗鋸齒、Bloom、景深、高度霧等,通過一步步的代碼操作,讓大家掌握如何實現屏幕後處理效果和如何靈活使用Unity官方的Post Processing功能。我們希望通過這門課,可以讓你理解Post Processing的底層工作原理,以及如何製作那些遊戲項目中的「高大上」視覺效果。

 

《畫質與性能的權衡:如何使用可編程渲染管線(SRP)》
該課程是來自於UWA DAY 2019的一堂視頻會議,主要講解如何通過Scriptable Render Pipeline來讓用戶更加靈活地控制Unity的渲染管線,以實現不同的渲染效果,同時也會帶來不同的性能表現。通過案例向大家展示LWRP,HDRP以及Custom SRP的使用,並通過數據來了解不同Pipeline的性能表現,以求讓大家理解SRP的適用情況以及使用何種SRP改進所用的管線。SRP是未來Unity引擎開發者的必備技能,通過該視頻分享,將大幅降低技術新人上手SRP的難度。

 

《Unity移動平臺下的烘焙使用及優化》
這是一篇來自於UWA Blog的一篇技術文章,作者是西山居的TA大牛文雅老師。文章中詳細講解了Lightmap的烘焙實用技術,以及總結了研發工作經常遇到的疑難雜症,是我們UWA非常推薦的一篇瞭解Lightmap的技術文章。通過這篇文章的認真學習,你基本上可以勝任絕大多數研發項目中的Lightmap烘焙工作。

 

通過以上內容的學習,你可以從一個只知道Unity引擎的開發愛好者,變成一位Unity引擎渲染方面的開發者,對於渲染層面的理解可以達到國內2年左右工作經驗的遊戲開發者平均水平。


中級

通過上述基礎課程的學習,你對於Unity引擎渲染模塊已經有了基本的掌握,以及對於研發團隊中的真實技術需求已經有了基本的瞭解。當你開始跨過一名技術萌新後,你則需要根據項目的不同需求來打造合適的功能,點亮自己不同的技能點。

下面是國內各大技術團隊的技術牛人的實力乾貨分享,希望你可以通過以下內容更進一步地提升自己的技術實力。

《Unity項目從Gamma轉Linear顏色空間的經驗分享》
Linear顏色空間的轉換是這兩年大部分研發團隊都在談論的話題,從如何轉變、到轉變過程中所需要的工作流轉變、再到轉變後的各種特殊問題處理(比如UI、特效的半透問題,PBR結合的相關問題等),該篇文章進行了詳細的說明和闡述。作者通過自己所經歷的大量項目實戰,來對Gamma轉Linear過程中的關鍵問題進行了一一闡述和講解。可以說,通過這一篇文章,你可以快速對行業內該方面的技能需求達到非常深刻和深入的理解。

 

《如何實現角色的自陰影效果》
該篇文章可以讓你理解如何在不使用光源的情況下,如何做出高效的自陰影效果。如果你希望對自陰影效果和代碼實現有非常明確的理解,或者項目中恰好有自陰影效果的實現需求(但目前的實現方法又不夠高效),那麼,該篇文章絕對是你非常好的選擇。

 

《光照貼圖Lightmap初探》
光照貼圖是遊戲中很常用的一個技術,不同引擎都有相似但細節處又有很多不同的實現。本篇文章將從原理出發,梳理Unity/UE4等引擎的不同實現,並着重分析項目開發過程中常見但很容易被忽視的精度問題及解決辦法,以及很多實際工程中會遇到的問題及對策。

當你看過了《Unity移動平臺下的烘焙使用及優化》一文後,你就需要閱讀該篇文章,來進一步理解引擎底層的實現原理,以及當今世界上的主流Lightmap實現方法。

 

《Reflection Probe 實現僞室內和僞反射效果的改進方案》
如果你想高效實現一些如下所示的「水面反射」效果和「室內」效果時,這篇文章很可能是你的不二選擇,讀過這篇文章,你會明白,原來渲染方面的很多東西都可以「以假亂真」!

 

 


使用了常規的模型渲染

 


使用了文中所提方法的僞室內和爲室外

 

《如何高效使用GPU Instancing技術來進行草叢渲染》
遊戲中經常需要在一個屏幕內渲染大量重複的物體。例如一望無際的廣闊草原,鬱鬱蔥蔥的原始森林,流光溢彩的滿地珠寶等等。在Unity開發中遇到類似需求的時候,很容易碰到性能瓶頸,導致設備卡頓發熱。本篇文章以草海渲染需求爲例,詳細介紹如何使用GPU Instancing技術進行渲染及性能優化。通過這篇文章的學習,你將直接掌握如何對場景中的海量重複物體(比如草海)進行高效渲染,以及在使用GPU Instancing功能時應該注意的方方面面。

 

《Unity遊戲的換裝系統優化》
「換裝」是大多數遊戲項目的必備功能,如何實現一個項目所需的高效換裝系統,可以說是對一名初中級開發者的不小的挑戰。高效換裝,無外乎降低渲染方面的Draw Call和內存方面的使用,該篇文章作者另闢蹊徑,給出了一個「我們目前見過的最爲高效」的實現方式,確實非常值得研究和學習。

 

《Unity PBR介紹及經驗分享》
該課程來自於UWA DAY 2017年錢康來在會議上的視頻講座。主要講解了他在當時項目中對於PBR的使用經驗,特別是對於Standard Shader的深刻理解和優化經驗。如果你希望瞭解Unity PBR功能的演變歷史,以及在真實商業項目中的使用,該視頻內容非常推薦你觀看。

 

《詳解UGUI DrawCall計算和Rebuild操作優化》
隨着你的經驗逐漸豐富,你會慢慢接觸到項目中的一些性能優化需求。所以,在渲染方面,你開始逐步瞭解到Draw Call、Material、Triangle、Overdraw等等名詞。其中,Draw Call是最近二十年來渲染優化方面提到的最爲高頻的一個詞彙。當然,以後還是不是就兩說了。如果你想優化Draw Call,那麼首先,你需要了解它是如何計算的。本篇文章就從UGUI出發,來講解UI系統中的Draw Call計算原理,從而讓你對於UI的底層設計有更進一步的理解。同時,對於UI界面的Overdraw問題也進行了詳細的分析並給出有針對性的解決方案。相信我,在整個遊戲行業,只有5%不到的技術人員是真正明白UGUI的Draw Call是如何計算的。

 

 

《如何根據UWA制定技術選型》
以上我們羅列了各種各樣的遊戲項目研發時所用到的實用、高效技術。同樣的,我們在平時也會被各種團隊問到:「有沒有常用的、好用的工具推薦?」所以,我們在UWA DAY 2019中也整理了下大量團隊技術選型時較爲推薦的各種工具,其中就有不少與渲染相關,比如Imposter、Lighting Box和Smart Shadows等等,非常推薦觀看,在你們的技術選型階段,很可能幫忙少花費不少摸索時間。

除了UWA學堂中的內容外,UWA Blog中也有一些精品內容非常推薦對渲染模塊感興趣的開發者閱讀:

《如何實現更真實的軟陰影效果》
作者Luisa講解在研發過程中創作的更柔和、更真實的高效實時陰影實現,非常推薦學習。

 

《Unity的Enlighten全局光照實踐》
作者CG-Bull在本篇文章中分享了通過Unity Enlighten全局光照明功能來進行場景高質量渲染的實踐心得,非常推薦閱讀。

 


高級

在你學習、研究併爲項目開發了一個又一個功能模塊後,你開始進入到了下一階段:更爲複雜的功能改善、系統搭建和性能優化。在渲染模塊中,PBR效果的增強、各種渲染相關係統的搭建(比如天氣系統、染色系統、自定義SRP等)都是各大研發團隊持續研發的重點。在此,我們先推薦以下幾篇 UWA Blog文章進行進一步學習和研究。

《Unity的PBR擴展》
《Unity的PBR擴展——皮毛材質》
作者Young在這篇文章中講解其在實際項目中對於Unity PBR功能的擴展,特別是其中對於頭髮、皮膚和毛皮的處理,非常推薦學習。

 

 

《基於通道混合的角色染色系統實現》

 

對於渲染模塊的性能優化,我們推薦UWA學堂中的以下幾篇課程:

《Unity引擎景深實現原理剖析與優化》
該篇文章從基本的後處理渲染流程入手,學習DepthOfField渲染流程中的各個部分及原理,分別從如何通過深度圖計算出模糊圈、計算焦外模糊效果,如何把模糊圖與原圖混合完成焦點清晰、焦外模糊的景深效果入手,通過剖析其每一步的原理與GPU耗時,分析思考對其進行優化,從而提高渲染效率。通過這篇文章,我們希望你可以理解並掌握後處理性能優化的技巧。

 

同時,我們在最近幾年的UWA DAY大會中,不斷將我們在優化各種商業遊戲時所遇到的問題進行總結和梳理,並向大家進行分享。另外,我們也邀請各大公司的技術牛人來分享他們在項目研發中所遇到和解決的技術難題。

《Unity引擎渲染效率全解析》
這是UWA DAY 2017的優化相關視頻,主要講解Unity渲染模塊中各種渲染效果性能開銷總結。

 

《Unity引擎移動遊戲性能優化全解析》
這是UWA DAY 2018的優化相關視頻,其中包括在UWA DAY 2017後所遇到的各種疑難雜症總結,其中也包含一些渲染模塊的「幺蛾子」問題。

 

《Unity引擎渲染、UI、邏輯代碼模塊的量化分析和優化方法》
這是UWA DAY 2019的優化相關視頻,其中重點講解了最新一年的渲染模塊的重要參數分析以及優化方法。

 

《次世代卡通渲染技術》
這是UWA DAY 2017的會議分享視頻,由米哈遊技術總監賀甲講解《琪亞娜·極樂淨土》的製作過程,揭示瞭如何在Unity中實現高品質的卡通渲染效果。

 

《移動遊戲的GPU性能優化》
這是UWA DAY 2018的移動遊戲GPU性能優化講解視頻。我們從Bandwidth、Fillrate和Shader等幾方面出發,結合大量優化過程中的實際案例讓大家瞭解和掌握如何快速定位和分析遊戲在GPU端的性能瓶頸,以及遊戲開發過程中需要注意的性能點。

 

《深度剖析大型MMO移動遊戲的性能優化》
這是UWA DAY 2019的性能優化相關視頻。言豐老師通過具體案例來分享渲染模塊的實用優化技巧,主要包括:(1)Shader中的性能優化;(2)高效的圖像後處理框架;(3)多人同屏時的Imposter使用。

 

除上述UWA學堂內容外,我們也推薦你閱讀以下兩篇UWA Blog文章:

《渲染優化-從GPU的結構談起》
這是一篇非常好的GPU講解問題,深入淺出,鞭辟入裏!

 

《萬物皆數-深挖UWA Benchmark之渲染篇》
性能優化的本質就是一個數學問題!該篇文章以渲染模塊爲例,講解我們如何通過優化問題轉化爲數學問題進行研究和解決。

 

以上的內容主要是爲了讓你學習和掌握各種各樣的實用技術。在研究各種技術的過程中,你或早或晚都會接觸到很多更爲底層的理論知識——圖形學理論。在此,我們將UWA學堂UWA Blog中已有的圖形學相關內容進行了彙總,希望能夠幫你在渲染領域的學習中打下更爲堅實的理論基礎。


圖形學相關的理論研究工作

《自優化的繪製流水線優化》

 

《三維數字世界的虛與實》

 

《基於物理的渲染—迪士尼的渲染模型》

 

《基於物理的渲染-用真實的環境光照亮物體》

 

《微表面模型-PBR渲染管線的材質》

 

《基於物理的渲染—更精確的微表面分佈函數GGX》

 

《基於物理的渲染—基於球面調和基的實時全局光照明》

 

《基於物理的渲染—基於Haar小波基的實時全局光照明》

 

《基於物理的渲染—HDR Tone Mapping》

 

以上就是我們本期爲大家梳理的Unity引擎渲染模塊學習路徑圖。需要說明的是,這個路徑圖並不是捷徑,相反30多篇文章會更加訓練大家的意志力。作爲體系化的知識,我們希望大家能掌握背後的邏輯與原理,結合學習方法論並反覆實踐,未來嘗試在自己的項目中創新創造出自己滿意的效果。