lwrp下自寫shader在pc端崩潰的原因及解決辦法

解決辦法:

在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是並不是用來存儲紋理的,而是指可以像紋理那樣來訪問其中的數據,對於索引類數據有更好的性 能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章