# 4.3 存儲修飾符
變量聲明最多可以在類型的前面指定一個存儲修飾符。存儲修飾符可使用如下:
| 存儲修飾符 | 含義 |
|-|-|
| <none:default> | local存儲讀/寫,或者函數input參數 |
| const | 變量的值不能被改變 |
| in | 變量是由上一個著色器階段拷貝的 |
| out | 變量拷貝到后續的著色器階段 |
| attribute | 僅僅在兼容性的頂點著色器中,類似于頂點著色器中的in |
| uniform | 值再圖元處理的過程中不會改變,鏈接著色器,API,和應用程序中的值 |
| varying | 兼容性,僅僅存在于vertex和fragment shader中,類似于頂點著色器中的out和片元著色器中的out |
| buffer | 值存儲在buffer object中,可以被shader調用和API中讀或者寫 |
| shared | 僅在computer shader中,變量可以被workgroup中的work items共享 |
某些輸入和輸出限定變量最多可以使用一個附加輔助存儲限定符限定:
| 輔助存儲修飾符 | 含義 |
|-|-|
| centroid | 基于質心的插值 |
| sample | 單采樣插值 |
| patch | 每個細分著色器patch屬性 |