1#version 450 core 2#define PRECISION ${PRECISION} 3#define FORMAT ${FORMAT} 4 5layout(std430) buffer; 6 7/* Qualifiers: layout - storage - precision - memory */ 8layout(set = 0, binding = 0, FORMAT) uniform PRECISION restrict writeonly image3D uOutputX; 9layout(set = 0, binding = 1, FORMAT) uniform PRECISION restrict writeonly image3D uOutputY; 10layout(set = 0, binding = 2, FORMAT) uniform PRECISION restrict writeonly image3D uOutputZ; 11layout(set = 0, binding = 3, FORMAT) uniform PRECISION restrict writeonly image3D uOutputW; 12 13layout(set = 0, binding = 4) uniform PRECISION sampler3D uInput; 14 15layout(set = 0, binding = 5) uniform PRECISION restrict Block { 16 ivec3 pos; 17} uBlock; 18 19void main() { 20 vec4 texel = texelFetch(uInput, uBlock.pos, 0); 21 22 ivec3 out_pos = ivec3(0, 0, 0); 23 24 imageStore(uOutputX, out_pos, vec4(texel.x, 0.0, 0.0, 0.0)); 25 imageStore(uOutputY, out_pos, vec4(texel.y, 0.0, 0.0, 0.0)); 26 imageStore(uOutputZ, out_pos, vec4(texel.z, 0.0, 0.0, 0.0)); 27 imageStore(uOutputW, out_pos, vec4(texel.w, 0.0, 0.0, 0.0)); 28} 29