Unity Shader預編譯指令

2021-09-08 09:43:20 字數 1014 閱讀 6283

我們在unity中最常見的就是下面前兩種,使用就不必介紹了,這裡會針對其它一些較為常用的編譯指令做一下詳細介紹。

1、#pragma vertex name:編譯name函式為頂點著色器 

2、#pragma fragment name:編譯name函式為片段著色器 

3、#pragma geometry name:編譯name函式為dx10的幾何著色器,會自動開啟#pragma target 4.0 

4、#pragma hull name:編譯name函式為dx10的殼著色器,會自動開啟#pragma target 5.0 

5、#pragma domain name:編譯name函式為dx10的域著色器,會自動開啟#pragma target 5.0 

6、#pragma target name: 表明編譯目標 ,編譯部分可以參考官網:不過這一部分如果不了解不要亂設定,因為可能會出現不支援你的機器的情況,也就是pass不能被使用。

7、#pragma only_renderers space_separated_names:只為指定的渲染平台渲染著色器 

8、#pragma exclude_renderers pace_separated_names:排除指定的渲染平台 

第7和第8指定了渲染平台,以下為可選擇的平台列表:

9、#pragma multi_compile … :根據不同的情況,使用不同的預處理器指令,來多次編譯shader** 

10、#pragma enable_d3d11_debug_symbols : 生成d3d11的除錯資訊,可以在vs2012(或以上)使用圖形偵錯程式除錯shader 

11、#pragma hardware_tier_variants renderername: 針對所選渲染器的每個硬體層級,生成每個已編譯的shader的多重shader硬體變體

1.unity manual

2.unity編譯指令

javascript基礎 預編譯 this指向

預編譯發生在函式執行前一刻,可以拆分成一下幾步 1 生成activation object 即ao物件 執行期上下文 2 查詢形參和變數,並將其作為ao物件的屬性,值為undefined 3 將實參的值賦給形參 4 在函式體內查詢函式宣告,並將值賦予函式體 看看下面的例子 function fn a...

JS預編譯 函式預編譯和全域性預編譯

預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...

Unity shader 編譯指令

程式片段被寫在cgprogram和endcg之間 在程式片段被編譯之前需要個程式加上預編譯 pragma 1 pragma vertex name 編譯name函式為頂點著色器 2 pragma fragment name 編譯name函式為片段著色器 3 pragma geometry name ...