我需要爲我的片段着色器調用原子地將矢量添加到某些圖像,因爲更多的片段可以訪問相同的紋素。如何在片段着色器中原子地添加矢量
所以我的問題是,這樣做的最好方法是什麼?
每個片段應該添加兩個向量,一個應具有16位的部件和其他8個組件。
我想過一個自旋鎖,但每一個自旋鎖我試圖用崩潰......
另一種選擇是用packSnorm2x16/4x8
數據打包成3個R32UI
紋理atomicAdd
,首先將包含的xy
16位向量,所述第二將包含16位矢量的z
和第三紋理將包含整個8比特向量(packSnorm4x8
),但問題是,總和將超過1.0f
,但(un)packSnorm
正在與簽名歸一化值,我甚至不知道你是否可以添加打包的數據並獲得好的結果。
您是否考慮過其他選項來避免原子,比如在稍後的傳遞中累積矢量或者在計算着色器中使用本地組存儲?你能詳細說明你需要什麼嗎? – Quinchilion
我從燈光角度渲染場景,每個片段都應該添加從光源到片段的方向爲3D紋理,這些紋理包含我的體素化場景(用於體素錐形追蹤),此刻我是隻是存儲從光線到體素中心的方向,但那不是準確的,我應該存儲入射光線方向的平均向量。 – FamZ
因此,如果我理解正確,那麼每個片段都會沿着它的射線前進,並將射線方向添加到它穿過的每個體素?或者多個片段如何訪問相同的紋理元素? – Quinchilion