constant修飾符用來表示在裝置記憶體池上分配的唯讀記憶體. 在程式域(program scope)中宣告的變數必須是constant型的,而且在宣告的位置被初始化. 用於宣告constant型別變數的值必須是在編譯期就可以獲取的. 在程式域宣告的constant變數其生命期與程式相同, 而且其值在任意的函式呼叫中都保持不變.
**例項:
constant float samples = ;
指向constant變數的指標或者引用是可以作為函式的引數傳遞的.
任意對constant變數的寫操作將引發編譯錯誤. 宣告constant變數的時候如果沒有初始化, 也將引發編譯錯誤.
注意: 需要根據變數在graphics或者kernel函式中被使用的情況, 來決定變數的位址空間屬性(device or constant)
constant 位址空間為多執行例項同時訪問同一塊記憶體的情形作了優化, 這種情形通常是繪製光照/陰影的材質屬性或者訪問矩陣資料(the matrix accessed from a matrix array used for skinning), 和卷積運算中濾波器係數的訪問等等. 但是如果並行訪問的時候需要使用索引,比如vertex id, fragment 座標, 執行緒組位置等等, 你只能使用device位址空間變數.
Metal 著色語言程式設計指南 一
metal shading language guide 這篇文章講述了metal 圖形繪製和計算 shading 程式語言.metal shading 語言是基於c 的程式語言,使用metal shading 語言的 可以在gpu上進行圖形繪製或者通用平行計算。由於metal shading 語言...
Metal 著色語言程式設計指南 四
metal shading 語言的向量數學庫提供了對向量和矩陣型別表示和運算的支援。向量的命名規則如下所示 booln,charn,shortn,intn,uncharn,ushortn,uintn halfn,floatn 這裡 n 可以是 2,3,4 的其中乙個數字,表示 2 3 4 維向量。矩...
Metal 著色語言程式設計指南 七
floatnxm 和 halfnxm 矩陣可以被看成是型別為floatm和halfm的陣列.類似二維陣列,矩陣的成員可以用二維下標來定址.矩陣物件後面跟乙個下標可以被看作是乙個列向量.如同陣列,列向量的計數也是從0開始,矩陣物件的第二個下標就如同是對向量物件進行定址。所以,矩陣物件後面跟兩個下標就表...