解決辦法:
在lwrp下的shader,要傳遞的參數需要用
CBUFFER_START(UnityPerMaterial)
CBUFFER_END
包起來。
類似這樣:
CBUFFER_START(UnityPerMaterial)
uniform half4 _MainTex_ST;
CBUFFER_END
這是因爲在pc平臺下用的是dx版本的顯卡,DirectX10中新引入的constant buffer,在DX10中,constant存放於常量緩衝區中,每個常量緩衝區由 4096個常量寄存器組成,共有16個常量緩衝區。這樣就可以根據constant更新的頻率來組織,可以提升性能。lwrp應用了該優化屬性,所以需要用cbuffer來讓變量放到常亮緩衝區,這樣lwrp才能獲取到我們的數據。如果不標記爲cbuffer就相當於管線裏獲取不到相關的數據的定義就會崩潰。另外的,Constant buffer會爲 兩種:cbuffer,tbuffer。注意tbuffer是並不是用來存儲紋理的,而是指可以像紋理那樣來訪問其中的數據,對於索引類數據有更好的性 能。