Unity 內置管線有一套對應配套的 Shader,平時我們創建 GameObject 也是默認使用對應的材質。這裡有個疑問,比如我需要添加一個新的效果,但是還想應用這些 內置Shader 的效果,如何將兩者整合到一起比較好?我的想法是單獨 Copy 一份 內置Shader源碼項目,有些引用到 .cginc 中的也都進行修改,暴露出方法來給自己的 Shader 自定義,相當於整一套都提供自定義,然後在項目設置中更改默認的 Shader,不知道這樣做是不是有點跑偏了。

是不是從自定義 Shader 開始就應該自己開發一套根據項目定製的 Shader集,這樣什麼都比較容易把控。

自定義渲染管線... 還沒有嘗試過,打算之後先試水下 SRP


沒看懂你要幹嘛, 你想創建材質的時候直接用自己的shader, 然後需要的時候也能調用系統的?

首先unity 內置的所有shaderlab 你自己寫的shader 都可以直接訪問。 如果你想替換unity內置shader, 直接在你的項目里創建同名shader 就override了。 如果你還想拿出來, 創建一個其他名字的shader 然後 default 到系統shader上就好了。

現在有新的圖形學管線了,貌似直接可以自定義, 不過還沒時間看。


你都已經敢這麼玩了,那SPR就可以嘗試上手了,我個人遇到你這種問題的時候,都是依靠Shader forge,ASE,Shader Graph等插件協助處理即可。


如果你做的是自己的學習項目,那都可以搞。如果是線上產品,慎用任何材質插件,也不要有這種copy一份源碼自己造一套的事情了,shaderlab和shaderlink導致的性能問題後期會出事的。而且你就算不copy在build in下你照樣可以在自己的shader里用內置shader的各種內核,前提是你足夠熟悉內置的那套。如果目標平台是移動平台,建議LWRP深度定製了。


是不是從自定義 Shader 開始就應該自己開發一套根據項目定製的 Shader集,這樣什麼都比較容易把控。

是的。


你們都沒回答到點子上,內置那一套本質就是VF代碼,只不過是封裝過了,順著你的表達回答,用你自己的Shader方式把內置Shader的代碼複寫一遍 = =


一般都是自製shader,內置那套變種太多了,而且不見得適用。

我是把內置那套抄出來,搞清流程再重構,這樣是可以和美術討論清楚哪些是需要的,哪些可以直接敝掉不產生無用變種,也方便根據項目需求魔改。

SRP那套目前不成熟,GC很嚴重。建議等官方維護穩定再用,否則大概率被坑。

如果非要用,可使用最新的LWRP,要把之前寫的cg換成hlsl。


每個遊戲都由自己的要求,Unity 編寫了很多默認的Shader, 如果能滿足我們遊戲的要求

我們會使用默認的,如果不能滿足要求,我們就自己開發,但是一個遊戲裡面切換Shader的代價是

比較大的,所以我們儘可能的用少的Shader的數目。綜上所述,一個遊戲項目不要用太多的Shader類型,

更具繪製效果和功能來開發自己的Shader, 將常用的Shader放緩存裡面。

我也創建了個學習交流群 點擊下面鏈接即可加入

正在跳轉?

links.jianshu.com


建議花些錢招個有能力的TA彌補職位空缺。

前期TA投入不夠後面成本得翻一翻


推薦閱讀:
相关文章