Saya menggunakan shader komputer untuk mendapatkan nilai penjumlahan (tipenya float) seperti ini:
#version 320 es
layout(local_size_x = 640,local_size_y=480,local_size_z=1)
layout(binding = 0) buffer OutputData{
float sum[];
}output;
uniform sampler2D texture_1;
void main()
{
vec2 texcoord(float(gl_LocalInvocationIndex.x)/640.0f,float(gl_LocalInvocationIndex.y)/480.0f);
float val = textureLod(texture_1,texcoord,0.0).r;
//where need synchronize
sum[0] = sum[0]+val;
//Here i want to get the sum of all val in texture_1 first channal
}
Saya tahu ada operasi atom seperti atomAdd(), tetapi tidak mendukung parameter float, dan penghalang() yang sepertinya tidak menyelesaikan masalah saya. Mungkin saya dapat memasukkan float ke int, atau adakah cara sederhana untuk menyelesaikan masalah saya?