Files
2026-07-13 13:33:03 +08:00

33 lines
814 B
Plaintext

layout(set=0, binding=0) writeonly buffer destBuffer{
FLOAT4 data[];
}uOutput;
layout(set=0, binding=1) readonly buffer inputBuffer {
FLOAT4 data[];
} uInput;
layout(set=0, binding=2) readonly buffer KernelBuffer{
FLOAT4 data[];
} uSlope;
layout(set = 0, binding = 3) uniform reluBuffer{
ivec4 imgSize; // plane, 1, channelC4, plane * channelC4
}uPreluParam;
layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in;
void main()
{
int index = int(gl_GlobalInvocationID.x);
int oz = index / uPreluParam.imgSize.x;
if(index < uPreluParam.imgSize.w)
{
FLOAT4 slope = uSlope.data[oz];
FLOAT4 dataIn = uInput.data[index];
FLOAT4 dataTemp = dataIn * slope;
bvec4 lessZero = bvec4(lessThan(dataIn, FLOAT4(0.0)));
uOutput.data[index] = mix(dataIn, dataTemp, lessZero);
}
}