change shaderSercve so it can take both of char* and std::filesystem::path
This commit is contained in:
46
include/shader.h
Normal file
46
include/shader.h
Normal file
@@ -0,0 +1,46 @@
|
||||
#ifndef SHADER_H
|
||||
#define SHADER_H
|
||||
#include <string_view>
|
||||
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
|
||||
Reference in New Issue
Block a user