diff options
Diffstat (limited to 'src/qtmultimediaquicktools/shaders')
11 files changed, 151 insertions, 0 deletions
diff --git a/src/qtmultimediaquicktools/shaders/biplanaryuvvideo_core.frag b/src/qtmultimediaquicktools/shaders/biplanaryuvvideo_core.frag new file mode 100644 index 000000000..1261782f8 --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/biplanaryuvvideo_core.frag @@ -0,0 +1,16 @@ +#version 150 core +uniform sampler2D plane1Texture; +uniform sampler2D plane2Texture; +uniform mat4 colorMatrix; +uniform float opacity; +in vec2 plane1TexCoord; +in vec2 plane2TexCoord; +out vec4 fragColor; + +void main() +{ + float Y = texture(plane1Texture, plane1TexCoord).r; + vec2 UV = texture(plane2Texture, plane2TexCoord).ra; + vec4 color = vec4(Y, UV.x, UV.y, 1.); + fragColor = colorMatrix * color * opacity; +} diff --git a/src/qtmultimediaquicktools/shaders/biplanaryuvvideo_core.vert b/src/qtmultimediaquicktools/shaders/biplanaryuvvideo_core.vert new file mode 100644 index 000000000..1c162785e --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/biplanaryuvvideo_core.vert @@ -0,0 +1,14 @@ +#version 150 core +uniform mat4 qt_Matrix; +uniform float plane1Width; +uniform float plane2Width; +in vec4 qt_VertexPosition; +in vec2 qt_VertexTexCoord; +out vec2 plane1TexCoord; +out vec2 plane2TexCoord; + +void main() { + plane1TexCoord = qt_VertexTexCoord * vec2(plane1Width, 1); + plane2TexCoord = qt_VertexTexCoord * vec2(plane2Width, 1); + gl_Position = qt_Matrix * qt_VertexPosition; +} diff --git a/src/qtmultimediaquicktools/shaders/biplanaryuvvideo_swizzle_core.frag b/src/qtmultimediaquicktools/shaders/biplanaryuvvideo_swizzle_core.frag new file mode 100644 index 000000000..48ef3fa2c --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/biplanaryuvvideo_swizzle_core.frag @@ -0,0 +1,16 @@ +#version 150 core +uniform sampler2D plane1Texture; +uniform sampler2D plane2Texture; +uniform mat4 colorMatrix; +uniform float opacity; +in vec2 plane1TexCoord; +in vec2 plane2TexCoord; +out vec4 fragColor; + +void main() +{ + float Y = texture(plane1Texture, plane1TexCoord).r; + vec2 UV = texture(plane2Texture, plane2TexCoord).ar; + vec4 color = vec4(Y, UV.x, UV.y, 1.); + fragColor = colorMatrix * color * opacity; +} diff --git a/src/qtmultimediaquicktools/shaders/monoplanarvideo_core.vert b/src/qtmultimediaquicktools/shaders/monoplanarvideo_core.vert new file mode 100644 index 000000000..23b9bfae2 --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/monoplanarvideo_core.vert @@ -0,0 +1,10 @@ +#version 150 core +uniform mat4 qt_Matrix; +in vec4 qt_VertexPosition; +in vec2 qt_VertexTexCoord; +out vec2 qt_TexCoord; + +void main() { + qt_TexCoord = qt_VertexTexCoord; + gl_Position = qt_Matrix * qt_VertexPosition; +} diff --git a/src/qtmultimediaquicktools/shaders/rgbvideo_core.frag b/src/qtmultimediaquicktools/shaders/rgbvideo_core.frag new file mode 100644 index 000000000..ac41c108d --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/rgbvideo_core.frag @@ -0,0 +1,10 @@ +#version 150 core +uniform sampler2D rgbTexture; +uniform float opacity; +in vec2 qt_TexCoord; +out vec4 fragColor; + +void main() +{ + fragColor = texture(rgbTexture, qt_TexCoord) * opacity; +} diff --git a/src/qtmultimediaquicktools/shaders/rgbvideo_padded_core.vert b/src/qtmultimediaquicktools/shaders/rgbvideo_padded_core.vert new file mode 100644 index 000000000..d4fa8ad76 --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/rgbvideo_padded_core.vert @@ -0,0 +1,11 @@ +#version 150 core +uniform mat4 qt_Matrix; +uniform float width; +in vec4 qt_VertexPosition; +in vec2 qt_VertexTexCoord; +out vec2 qt_TexCoord; + +void main() { + qt_TexCoord = qt_VertexTexCoord * vec2(width, 1); + gl_Position = qt_Matrix * qt_VertexPosition; +} diff --git a/src/qtmultimediaquicktools/shaders/rgbvideo_swizzle_core.frag b/src/qtmultimediaquicktools/shaders/rgbvideo_swizzle_core.frag new file mode 100644 index 000000000..e952124d1 --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/rgbvideo_swizzle_core.frag @@ -0,0 +1,12 @@ +#version 150 core +uniform sampler2D rgbTexture; +uniform float opacity; +uniform bool hasAlpha; +in vec2 qt_TexCoord; +out vec4 fragColor; + +void main() +{ + vec4 v = texture(rgbTexture, qt_TexCoord); + fragColor = vec4(v.bgr, hasAlpha ? v.a : 1.0) * opacity; +} diff --git a/src/qtmultimediaquicktools/shaders/triplanaryuvvideo_core.frag b/src/qtmultimediaquicktools/shaders/triplanaryuvvideo_core.frag new file mode 100644 index 000000000..ad81083f5 --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/triplanaryuvvideo_core.frag @@ -0,0 +1,19 @@ +#version 150 core +uniform sampler2D plane1Texture; +uniform sampler2D plane2Texture; +uniform sampler2D plane3Texture; +uniform mat4 colorMatrix; +uniform float opacity; +in vec2 plane1TexCoord; +in vec2 plane2TexCoord; +in vec2 plane3TexCoord; +out vec4 fragColor; + +void main() +{ + float Y = texture(plane1Texture, plane1TexCoord).r; + float U = texture(plane2Texture, plane2TexCoord).r; + float V = texture(plane3Texture, plane3TexCoord).r; + vec4 color = vec4(Y, U, V, 1.); + fragColor = colorMatrix * color * opacity; +} diff --git a/src/qtmultimediaquicktools/shaders/triplanaryuvvideo_core.vert b/src/qtmultimediaquicktools/shaders/triplanaryuvvideo_core.vert new file mode 100644 index 000000000..ebf3604e1 --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/triplanaryuvvideo_core.vert @@ -0,0 +1,17 @@ +#version 150 core +uniform mat4 qt_Matrix; +uniform float plane1Width; +uniform float plane2Width; +uniform float plane3Width; +in vec4 qt_VertexPosition; +in vec2 qt_VertexTexCoord; +out vec2 plane1TexCoord; +out vec2 plane2TexCoord; +out vec2 plane3TexCoord; + +void main() { + plane1TexCoord = qt_VertexTexCoord * vec2(plane1Width, 1); + plane2TexCoord = qt_VertexTexCoord * vec2(plane2Width, 1); + plane3TexCoord = qt_VertexTexCoord * vec2(plane3Width, 1); + gl_Position = qt_Matrix * qt_VertexPosition; +} diff --git a/src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag b/src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag new file mode 100644 index 000000000..75c7de5a6 --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/uyvyvideo_core.frag @@ -0,0 +1,13 @@ +#version 150 core +uniform sampler2D yTexture; // Y component passed as GL_LUMINANCE_ALPHA, in uyvy Y = a +uniform sampler2D uvTexture; // UV component passed as RGBA macropixel, in uyvy U = r, V = b +uniform mat4 colorMatrix; +uniform float opacity; +in vec2 qt_TexCoord; +out vec4 fragColor; + +void main() +{ + vec3 YUV = vec3(texture(yTexture, qt_TexCoord).a, texture2D(uvTexture, qt_TexCoord).rb); + fragColor = colorMatrix * vec4(YUV, 1.0) * opacity; +} diff --git a/src/qtmultimediaquicktools/shaders/yuyvvideo_core.frag b/src/qtmultimediaquicktools/shaders/yuyvvideo_core.frag new file mode 100644 index 000000000..010c4a5f2 --- /dev/null +++ b/src/qtmultimediaquicktools/shaders/yuyvvideo_core.frag @@ -0,0 +1,13 @@ +#version 150 core +uniform sampler2D yTexture; // Y component passed as GL_LUMINANCE_ALPHA, in yuyv Y = r +uniform sampler2D uvTexture; // UV component passed as RGBA macropixel, in uyvy U = g, V = a +uniform mat4 colorMatrix; +uniform float opacity; +in vec2 qt_TexCoord; +out vec4 fragColor; + +void main() +{ + vec3 YUV = vec3(texture(yTexture, qt_TexCoord).r, texture2D(uvTexture, qt_TexCoord).ga); + fragColor = colorMatrix * vec4(YUV, 1.0) * opacity; +} |