精選文章

SmallBurger Asset Home

  SmallBurger

2019年5月21日 星期二

Unity一些相關Shader Texture參數大坑及渲染過濾相關整理

Unity的shader Texture參數大坑相關整理:

  1. Blit時要將Input Texture Name改成"_MainTex",並切記在Properties加上
    _MainTex("Albedo", 2D) = "white" {},否則input會帶不進來…
  2. 用在非Blit,比方DrawMesh,切記不用使用_MainTex,否則會造成texture參數帶不進
    來,從LWRP的final pass的blit用的參數叫"_BlitTex",還有LWRP也把相關的Shader參數
    從"_MainTex"改成"_BaseMap"就可以略知一二…
Unity的渲染過濾相關整理:

  1. LayerMask:
    通常用在camera及physic的過濾,算是物件層級。
  2. RenderingLayerMask(SRP之後才支持):
    在物件過濾層級之後(Camera過濾),依渲染需求的不同,再過濾一次,比方可以用在
    即使用相同層級的LayerMask,也可以用程式動態設定RenderingLayerMask,來控制是否
    要進行渲染。 
  3. LightMode Tag(SRP之後開放給使用,之前是內部使用):用在渲染物件時挑方法來進
    行渲染,比方畫陰影挑ShadowCaster Pass、正常渲染則挑Forward Pass、畫額外時時光時
    挑Add Pass、畫Decal挑Decal Pass之類的,所以通常一個物件在同一個frame,有可能會
    被畫二次以上。
後記:話說Unity到目前還是不開放Camera剔除處理,雖然有人說在Camera做完之後用
RenderLayerMask再做自己的剔除,但我覺得這樣沒什麼用,因為他的Camera剔除處理早就已
經花了性能,還不如在他之前先把Renderer的enable設成false,但這樣其實他還是跑了
Renderer.enable != false的迴圈檢查,還是不好。

Dream continues in...

沒有留言:

張貼留言