iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
0
自我挑戰組

探索Unity中的視覺化製作工具系列 第 14

展開Shader視覺化工具的了解

  • 分享至 

  • xImage
  •  

著色器(Shader)在遊戲開發中可謂蒙著一層神秘的面紗,在人數本就不多的遊戲開發者中,掌握Shader使用的中更是少之又少。Shader功能的實現說實在的也和一般撰寫程式碼沒有有什麼差異,同樣在撰寫程式碼,為什麼撰寫Shader的人少之又少?其中最大的困難點在於對於數學上的認知和應用,以及不容易的設定。

撇開本來就複雜的數學概念不說,很久之前要設定Shader的環境就困難重重,再加上之前用組合語言的概念在寫,中間又要很多潛規則,再加上顯卡的支援性等,一整個就很不方便。而後的演進則慢慢的高階的類C語言進行撰寫,雖然看起來簡化了複雜度,但仍是很不友善的。好吧,講白了就是那時自我的認知不夠,導致沒有學習的需求和動力。

而這二年隨著Unity在呈現方面著手調整下,撰寫Shader日漸成為必要的手段,就連Unity推廣的Visual Effect Graph,也和Shader脫不了關係。也就是說了解Shader對於在Unity開發生態中勢必為不可逆的。而隨著近日Unity將Light Weight Rendering Pipeline命名為Universal Rendering Pipeline後,推廣的力道會更加快速。

想說趁著這次挑戰,就安排一段時間研究Shader和Unity的呈像生態,一方面有足夠的動力,二方面也是為了日後的開發進行準備。就於接下來這幾天邊看著教學影片邊跟著動手實作,並將一將過程記錄下來。

工具的選則上,伴隨著Unity Scriptable Rendering Pipeline的Script會選用Shader Graph視覺化工具進行,然而Shader Graph是建構在新的呈像機制上所發展的工具,但在某些專案的開發上,一時之間也還未切入到新的呈像機制,故使用Shader Graph並不適合。

還好Unity擴充中的Amplify Shader,一樣是視覺化的Shader開發工具,不但可以套用新的呈像機制,也可以使用原來的機制(事實上這是預設的)。在這個不太明確的階段,最好的方式就是同時針對二套視覺化工進行理解,而隨著開發的需求逕自使用最有利的方案進行。

但工具也只能減低撰寫時不確定性所帶來的複雜度,Shader另個面貌是數學應用的展現,這是屬於理論的範疇,工具可能也幫不上什麼忙。

雖說要趁這些時間研究Shader,但其博大精深,感覺起來也不是一時三刻就能學會的。自己目前是安排從這幾個Shader

  • Glow
  • Toon
  • Dissolve

著手進行二個工具的實作,透過相同的Shader一方面可以了解到工具之間的差異用法,另一方面可以評估其適性。記錄撰寫的同時,也安排時間了解數學理論的概念,而不是純粹的學習工具怎麼用。若是基礎知識建立後,工具的更換也比較不受影響。

這部分就是做中學,可能也會有不少的錯誤,若是記錄上的觀念不正確,也請不吝賜教。


上一篇
Doozy讓狀態機的概念發揮到極致
下一篇
學習Glow Shader
系列文
探索Unity中的視覺化製作工具30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言