SPIRV-Cross/shaders-no-opt/comp/subgroups_arithmetic_fadd.vk.comp
2023-05-01 15:51:54 +03:00

62 lines
2.4 KiB
Plaintext

#version 450
#extension GL_KHR_shader_subgroup_arithmetic : require
layout(local_size_x = 128) in;
layout(std430, binding = 0) buffer DATA_IN
{
float data_in_float[128];
vec2 data_in_vec2[128];
vec3 data_in_vec3[128];
vec4 data_in_vec4[128];
double data_in_double[128];
dvec2 data_in_dvec2[128];
dvec3 data_in_dvec3[128];
dvec4 data_in_dvec4[128];
};
layout(std430, binding = 1) buffer DATA_OUT
{
float data_out_float;
vec2 data_out_vec2;
vec3 data_out_vec3;
vec4 data_out_vec4;
double data_out_double;
dvec2 data_out_dvec2;
dvec3 data_out_dvec3;
dvec4 data_out_dvec4;
};
void main()
{
data_out_float = subgroupAdd(data_in_float[gl_LocalInvocationID.x]);
data_out_vec2 = subgroupAdd(data_in_vec2[gl_LocalInvocationID.x]);
data_out_vec3 = subgroupAdd(data_in_vec3[gl_LocalInvocationID.x]);
data_out_vec4 = subgroupAdd(data_in_vec4[gl_LocalInvocationID.x]);
data_out_double = subgroupAdd(data_in_double[gl_LocalInvocationID.x]);
data_out_dvec2 = subgroupAdd(data_in_dvec2[gl_LocalInvocationID.x]);
data_out_dvec3 = subgroupAdd(data_in_dvec3[gl_LocalInvocationID.x]);
data_out_dvec4 = subgroupAdd(data_in_dvec4[gl_LocalInvocationID.x]);
data_out_float = subgroupExclusiveAdd(data_in_float[gl_LocalInvocationID.x]);
data_out_vec2 = subgroupExclusiveAdd(data_in_vec2[gl_LocalInvocationID.x]);
data_out_vec3 = subgroupExclusiveAdd(data_in_vec3[gl_LocalInvocationID.x]);
data_out_vec4 = subgroupExclusiveAdd(data_in_vec4[gl_LocalInvocationID.x]);
data_out_double = subgroupExclusiveAdd(data_in_double[gl_LocalInvocationID.x]);
data_out_dvec2 = subgroupExclusiveAdd(data_in_dvec2[gl_LocalInvocationID.x]);
data_out_dvec3 = subgroupExclusiveAdd(data_in_dvec3[gl_LocalInvocationID.x]);
data_out_dvec4 = subgroupExclusiveAdd(data_in_dvec4[gl_LocalInvocationID.x]);
data_out_float = subgroupInclusiveAdd(data_in_float[gl_LocalInvocationID.x]);
data_out_vec2 = subgroupInclusiveAdd(data_in_vec2[gl_LocalInvocationID.x]);
data_out_vec3 = subgroupInclusiveAdd(data_in_vec3[gl_LocalInvocationID.x]);
data_out_vec4 = subgroupInclusiveAdd(data_in_vec4[gl_LocalInvocationID.x]);
data_out_double = subgroupInclusiveAdd(data_in_double[gl_LocalInvocationID.x]);
data_out_dvec2 = subgroupInclusiveAdd(data_in_dvec2[gl_LocalInvocationID.x]);
data_out_dvec3 = subgroupInclusiveAdd(data_in_dvec3[gl_LocalInvocationID.x]);
data_out_dvec4 = subgroupInclusiveAdd(data_in_dvec4[gl_LocalInvocationID.x]);
}