#ifndef SHADER_H #define SHADER_H #include constexpr std::string_view vSource = R"( #version 330 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec2 aTexCoord; out vec2 TexCoord; void main() { gl_Position = vec4(aPos, 1.0); TexCoord = vec2(aTexCoord.x, aTexCoord.y); } )"; constexpr std::string_view fSource = R"( #version 330 core out vec4 FragColor; in vec2 TexCoord; uniform sampler2D textureY; uniform sampler2D textureU; uniform sampler2D textureV; void main(){ vec3 yuv, rgb; vec3 yuv2r = vec3(1.164, 0.0, 1.596); vec3 yuv2g = vec3(1.164, -0.391, -0.813); vec3 yuv2b = vec3(1.164, 2.018, 0.0); yuv.x = texture(textureY, TexCoord).r - 0.0625; yuv.y = texture(textureU, TexCoord).r - 0.5; yuv.z = texture(textureV, TexCoord).r - 0.5; rgb.x = dot(yuv, yuv2r); rgb.y = dot(yuv, yuv2g); rgb.z = dot(yuv, yuv2b); FragColor = vec4(rgb, 1.0); } )"; #endif