You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.1 KiB
Plaintext
81 lines
2.1 KiB
Plaintext
|
4 years ago
|
Shader "Color Space/YCrCbtoRGB" {
|
||
|
|
Properties {
|
||
|
|
_YTex ("Y (RGB)", 2D) = "white" {}
|
||
|
|
_CrTex ("Cr (RGB)", 2D) = "white" {}
|
||
|
|
_CbTex ("Cb (RGB)", 2D) = "white" {}
|
||
|
|
}
|
||
|
|
SubShader {
|
||
|
|
Tags { "RenderType"="Opaque" }
|
||
|
|
Pass {
|
||
|
|
Tags { "RenderType"="Opaque" }
|
||
|
|
Fog {
|
||
|
|
Color (0,0,0,0)
|
||
|
|
}
|
||
|
|
ColorMask RGB
|
||
|
|
Program "vp" {
|
||
|
|
SubProgram "gles " {
|
||
|
|
"!!GLES
|
||
|
|
#define SHADER_API_GLES 1
|
||
|
|
#define tex2D texture2D
|
||
|
|
|
||
|
|
|
||
|
|
#ifdef VERTEX
|
||
|
|
#define gl_ModelViewProjectionMatrix glstate_matrix_mvp
|
||
|
|
uniform mat4 glstate_matrix_mvp;
|
||
|
|
|
||
|
|
varying mediump vec2 xlv_TEXCOORD1;
|
||
|
|
varying mediump vec2 xlv_TEXCOORD0;
|
||
|
|
|
||
|
|
uniform highp vec4 _YTex_ST;
|
||
|
|
uniform highp vec4 _CbTex_ST;
|
||
|
|
attribute vec4 _glesMultiTexCoord0;
|
||
|
|
attribute vec4 _glesVertex;
|
||
|
|
void main ()
|
||
|
|
{
|
||
|
|
mediump vec2 tmpvar_1;
|
||
|
|
mediump vec2 tmpvar_2;
|
||
|
|
highp vec2 tmpvar_3;
|
||
|
|
tmpvar_3 = ((_glesMultiTexCoord0.xy * _YTex_ST.xy) + _YTex_ST.zw);
|
||
|
|
tmpvar_1 = tmpvar_3;
|
||
|
|
highp vec2 tmpvar_4;
|
||
|
|
tmpvar_4 = ((_glesMultiTexCoord0.xy * _CbTex_ST.xy) + _CbTex_ST.zw);
|
||
|
|
tmpvar_2 = tmpvar_4;
|
||
|
|
gl_Position = (gl_ModelViewProjectionMatrix * _glesVertex);
|
||
|
|
xlv_TEXCOORD0 = tmpvar_1;
|
||
|
|
xlv_TEXCOORD1 = tmpvar_2;
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|
||
|
|
#ifdef FRAGMENT
|
||
|
|
|
||
|
|
varying mediump vec2 xlv_TEXCOORD1;
|
||
|
|
varying mediump vec2 xlv_TEXCOORD0;
|
||
|
|
uniform sampler2D _YTex;
|
||
|
|
uniform sampler2D _CrTex;
|
||
|
|
uniform sampler2D _CbTex;
|
||
|
|
void main ()
|
||
|
|
{
|
||
|
|
lowp vec4 rgbVec;
|
||
|
|
lowp vec4 tmpvar_1;
|
||
|
|
tmpvar_1.w = 1.0;
|
||
|
|
tmpvar_1.x = texture2D (_YTex, xlv_TEXCOORD0).x;
|
||
|
|
tmpvar_1.y = texture2D (_CrTex, xlv_TEXCOORD1).y;
|
||
|
|
tmpvar_1.z = texture2D (_CbTex, xlv_TEXCOORD1).z;
|
||
|
|
rgbVec.x = dot (vec4(1.16438, 0.0, 1.59603, -0.870785), tmpvar_1);
|
||
|
|
rgbVec.y = dot (vec4(1.16438, -0.391762, -0.812969, 0.529594), tmpvar_1);
|
||
|
|
rgbVec.z = dot (vec4(1.16438, 2.01723, 0.0, -1.08139), tmpvar_1);
|
||
|
|
rgbVec.w = 1.0;
|
||
|
|
gl_FragData[0] = rgbVec;
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
Program "fp" {
|
||
|
|
SubProgram "gles " {
|
||
|
|
"!!GLES"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|