glsl 原子操作 基礎(一)

layout( r32ui) uniform uimage2D overdraw_count;
void main()
{
    uint count = imageLoad(overdraw_count,ivec2(gl_FragCoord.xy));
    count = count + 1;
    imageStore(output_buffer, ivec2(gl_FragCoord.xy),count);
}

原子操作的目的是防止多個片元着色器實例同時訪問或讀取同一塊內存區域,造成訪問衝突。
因爲同一個像素可能是多個片元寫入的。
原子操作不能保證運行的順序,只能保證所有的請求操作不會相互影響。

原子操作只能用於單一的有符號或者無符號整形,原子操作不支持浮點類型或向量類型的圖像。

原子特性可以很有效的實現內存區域的序列化訪問。

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