✨ 關於Anime Shading+

簡介
Anime Shading +(plus) - 簡稱ASP -
是一款專為渲染日系動漫風格的人物而設計的Unity插件。幫助遊戲開發者在Unity引擎中將3D人物的中渲染成貼近於傳統賽璐璐風格或是立繪般的人物。
也提供了混和並且卡通化PBR材質的功能 (此類材質常應用於一些日系的3D遊戲中)。
除了角色、眼睛專用的shader,還包括了像是實現不同種類且高度客製化的描邊功能、針對日系風格特化的多光源光照效果…等等。
另外也針對在遊戲中卡通渲染時常見的一些問題提供了對應的解決方案,像是為了解決卡通渲染時難看的self-shadowing,
對角色生成了額外的shadow map,以及製作臉部陰影貼圖的工具,還有額外渲染出動漫風格陰影的專用pass、對動漫角色特製的Tone mapping…等等的功能。
為何製作Anime Shading+
卡通渲染Shader是Unity最廣泛使用的Shader類型之一,網路上也可以找到數不盡的討論文章,但這麼多年來,我覺得Unity Asset Store上並沒有一個同時滿足以下所有條件的插件 :
專用於渲染日系、動漫風格人物的Shader
針對賽璐璐人物額外繪製的ShadowMap
完善的內、外輪廓線效果(針對人物的Screen Space Outline 與 Mesh-based Outline)
針對日系日系、動漫風格人物的後處理效果(e.g Tonemapping)
針對賽璐璐人物的多光源與環境光照(間接光源)的處理
混和標準PBR與卡通渲染的選項
但是,要達成一個高品質的日系、動漫風格的人物渲染,我覺得上面這些要素每一個都是不可或缺的,於是我決定在Unity的URP管線上,將上述機能整合為單一一個插件。
我相信這個插件擁有作為一個以PC平台為目標production ready製品的穩定度/效能/完整性。同時也可以作為一個需要卡通渲染人物的專案,自行拓展人物用shader的起手式。
ASP的功能特色
1. 針對日系、動漫風格人物設計的Shader
ASP提供了專用於渲染日系、動漫風格人物的Shader,Shader中包括了像是卡通光照、風格化PBR的光照參數,邊緣光、深度邊緣光,MatCap反射、次表面散射、FOV修正…等等的功能,
也提供了常用於渲染動漫人物臉部的 - 基於SDF的臉部陰影貼圖的烘培工具與參數。
並且提供一個專門用於渲染動漫人物眼睛的Shader。


2. Character-Only Shadow Map與深度偏移陰影
為了解決卡通渲染時出現在人物身上的低品質的自陰影,ASP支援將人物單獨渲染至獨立的Shadow Map中(場景中會用到兩張shadow map,一張Unity內建的、不包含人物,另一張Shadow Map則只有人物),並
且為了增加角色細節也支援指定Renderer來渲染出基於偏移深度所繪製的陰影。


3. 針對動漫風格人物所製作的Tone Mapping效果
一般的全螢幕Tone Mapping會導致飽和度下降,這對動漫風格人物來說是不可接受的(或者使用者必須用非常客製化的LUT去調色)。
ASP提供一個能夠針對螢幕上人物所佔據的pixel,進行效果的強弱調整的ToneMapping,這種做法可以讓動漫人物在一個3D的PBR場景中,同時避免過度曝光與飽和度過低的問題。

4. 螢幕空間描邊與模型空間描邊
ASP提供了完善的,針對人物的螢幕空間描邊與模型空間描邊的功能。螢幕空間描邊可以基於多種不同類型的資訊來繪製,也提供了利用Vertex Color以及距離相機遠近來控制權重、粗細的選項。
而針對模型空間描邊也提供了烘培平滑法線的工具。

5. 賽璐璐風格的多光源與環境光照(間接光源)處理
為了渲染賽璐璐風格的人物,ASP提供了將額外光源與環境光照的非間接光扁平化的選項,這可以消除人物的3D感,達成更加貼近於2D、賽璐璐風格的渲染結果。
