33 lines
814 B
Plaintext
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);
|
|
}
|
|
|
|
}
|