vulkan-playground/quad.comp

22 lines
787 B
Text

#version 450
#extension GL_ARB_separate_shader_objects : enable
#define WORKGROUP_SIZE 32
layout (local_size_x = WORKGROUP_SIZE, local_size_y = WORKGROUP_SIZE, local_size_z = 1 ) in;
layout (binding = 0) uniform sampler2D ycbcrSampler;
layout (binding = 1, rgba8) uniform image2D resultImage;
layout (constant_id = 0) const float width = 1920;
layout (constant_id = 1) const float height = 1080;
const vec2 in_res = vec2(width,height);
void main()
{
vec2 uv = vec2(gl_GlobalInvocationID.xy)/in_res;
vec3 yuv = texture(ycbcrSampler,uv).xyz;
float y = yuv.y;
float u = yuv.z;// - 0.5;
float v = yuv.x;// - 0.5;
vec4 out_ = vec4(y + 1.403*v, y - 0.344*u - 0.714*v, y + 1.770*u, 1);
imageStore(resultImage, ivec2(gl_GlobalInvocationID.x, gl_GlobalInvocationID.y), out_);
}