46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#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
							 |