37 lines
		
	
	
		
			840 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			840 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #version 440
 | |
| 
 | |
| layout(location = 0) in vec2 vTexCoord;
 | |
| 
 | |
| layout(location = 0) out vec4 fragColor;
 | |
| 
 | |
| layout(std140, binding = 0) uniform buf {
 | |
|   mat4 qt_Matrix;
 | |
|   ivec4 swizzle;
 | |
|   mat4 color_matrix;
 | |
|   float qt_Opacity;
 | |
| } ubuf;
 | |
| 
 | |
| layout(binding = 1) uniform sampler2D Ytex;
 | |
| layout(binding = 2) uniform sampler2D UVtex;
 | |
| 
 | |
| vec4 swizzle(in vec4 texel, in ivec4 swizzle) {
 | |
|   return vec4(texel[swizzle[0]], texel[swizzle[1]], texel[swizzle[2]], texel[swizzle[3]]);
 | |
| }
 | |
| 
 | |
| vec4 yuva_to_rgba(in vec4 yuva, in mat4 color_matrix) {
 | |
|   return yuva * color_matrix;
 | |
| }
 | |
| 
 | |
| void main()
 | |
| {
 | |
|   vec4 yuva;
 | |
|   yuva.x = texture(Ytex, vTexCoord).r;
 | |
|   yuva.y = texture(UVtex, vTexCoord).r;
 | |
|   yuva.z = texture(UVtex, vTexCoord).g;
 | |
|   yuva.a = 1.0;
 | |
|   yuva = swizzle(yuva, ubuf.swizzle);
 | |
|   vec4 rgba = yuva_to_rgba (yuva, ubuf.color_matrix);
 | |
|   fragColor = rgba * ubuf.qt_Opacity;
 | |
| }
 | |
| 
 |