shader fixes
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
Shader "Color Space/YCrCbtoRGB Add" {
|
||||
Properties {
|
||||
_YTex ("Y (RGB)", 2D) = "white" {}
|
||||
_CbTex ("Cb (RGB)", 2D) = "white" {}
|
||||
_CrTex ("Cr (RGB)", 2D) = "white" {}
|
||||
}
|
||||
SubShader {
|
||||
Tags { "QUEUE"="Overlay" "RenderType"="Opaque" }
|
||||
Pass {
|
||||
Tags { "QUEUE"="Overlay" "RenderType"="Opaque" }
|
||||
Fog {
|
||||
Color (0,0,0,0)
|
||||
}
|
||||
Blend One One
|
||||
ColorMask RGB
|
||||
Program "vp" {
|
||||
SubProgram "gles " {
|
||||
"!!GLES
|
||||
|
||||
|
||||
#ifdef VERTEX
|
||||
|
||||
varying highp vec2 xlv_TEXCOORD0;
|
||||
uniform highp vec4 _YTex_ST;
|
||||
uniform highp mat4 glstate_matrix_mvp;
|
||||
attribute vec4 _glesMultiTexCoord0;
|
||||
attribute vec4 _glesVertex;
|
||||
void main ()
|
||||
{
|
||||
gl_Position = (glstate_matrix_mvp * _glesVertex);
|
||||
xlv_TEXCOORD0 = ((_glesMultiTexCoord0.xy * _YTex_ST.xy) + _YTex_ST.zw);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
#ifdef FRAGMENT
|
||||
|
||||
varying highp vec2 xlv_TEXCOORD0;
|
||||
uniform sampler2D _CrTex;
|
||||
uniform sampler2D _CbTex;
|
||||
uniform sampler2D _YTex;
|
||||
void main ()
|
||||
{
|
||||
mediump vec4 rgbVec_1;
|
||||
mediump vec4 yuvVec_2;
|
||||
lowp vec4 tmpvar_3;
|
||||
tmpvar_3.w = 1.0;
|
||||
tmpvar_3.x = texture2D (_YTex, xlv_TEXCOORD0).x;
|
||||
tmpvar_3.y = texture2D (_CbTex, xlv_TEXCOORD0).y;
|
||||
tmpvar_3.z = texture2D (_CrTex, xlv_TEXCOORD0).z;
|
||||
yuvVec_2 = tmpvar_3;
|
||||
rgbVec_1.x = dot (vec4(1.16438, 0.0, 1.59603, -0.870785), yuvVec_2);
|
||||
rgbVec_1.y = dot (vec4(1.16438, -0.391762, -0.812969, 0.529594), yuvVec_2);
|
||||
rgbVec_1.z = dot (vec4(1.16438, 2.01723, 0.0, -1.08139), yuvVec_2);
|
||||
rgbVec_1.w = 0.3;
|
||||
gl_FragData[0] = rgbVec_1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif"
|
||||
}
|
||||
}
|
||||
Program "fp" {
|
||||
SubProgram "gles " {
|
||||
"!!GLES"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Fallback "VertexLit"
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
Shader "Color Space/YCrCbtoRGB Chroma Key" {
|
||||
Properties {
|
||||
_YTex ("Y (RGB)", 2D) = "white" {}
|
||||
_CrTex ("Cr (RGB)", 2D) = "white" {}
|
||||
_CbTex ("Cb (RGB)", 2D) = "white" {}
|
||||
_KeyYCrCb ("Key Color YCrCb", Vector) = (0,0,0,-0.6)
|
||||
_KeyScale ("Comparison Scale", Vector) = (0.2,1,1,4.5)
|
||||
}
|
||||
SubShader {
|
||||
Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="True" "RenderType"="Transparent" }
|
||||
Pass {
|
||||
Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="True" "RenderType"="Transparent" }
|
||||
ZWrite Off
|
||||
Fog {
|
||||
Color (0,0,0,0)
|
||||
}
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
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 mediump vec4 _KeyYCrCb;
|
||||
uniform mediump vec4 _KeyScale;
|
||||
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);
|
||||
mediump float tmpvar_2;
|
||||
tmpvar_2 = ((length (((tmpvar_1.xyz - _KeyYCrCb.xyz) * _KeyScale.xyz)) + _KeyYCrCb.w) * _KeyScale.w);
|
||||
rgbVec.w = tmpvar_2;
|
||||
gl_FragData[0] = rgbVec;
|
||||
}
|
||||
|
||||
#endif"
|
||||
}
|
||||
}
|
||||
Program "fp" {
|
||||
SubProgram "gles " {
|
||||
"!!GLES"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
Shader "Color Space/YCrCbtoRGB Split Alpha" {
|
||||
Properties {
|
||||
_YTex ("Y (RGB)", 2D) = "white" {}
|
||||
_CrTex ("Cr (RGB)", 2D) = "white" {}
|
||||
_CbTex ("Cb (RGB)", 2D) = "white" {}
|
||||
}
|
||||
SubShader {
|
||||
Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="True" "RenderType"="Transparent" }
|
||||
Pass {
|
||||
Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="True" "RenderType"="Transparent" }
|
||||
ZWrite Off
|
||||
Fog {
|
||||
Color (0,0,0,0)
|
||||
}
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
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_TEXCOORD2;
|
||||
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 ()
|
||||
{
|
||||
highp vec4 texcoordTop;
|
||||
highp vec4 texcoordBottom;
|
||||
mediump vec2 tmpvar_1;
|
||||
mediump vec2 tmpvar_2;
|
||||
mediump vec2 tmpvar_3;
|
||||
texcoordBottom = _glesMultiTexCoord0;
|
||||
texcoordBottom.y = (_glesMultiTexCoord0.y / 2.0);
|
||||
texcoordTop = _glesMultiTexCoord0;
|
||||
texcoordTop.y = (texcoordBottom.y + 0.5);
|
||||
highp vec2 tmpvar_4;
|
||||
tmpvar_4 = ((texcoordTop.xy * _YTex_ST.xy) + _YTex_ST.zw);
|
||||
tmpvar_1 = tmpvar_4;
|
||||
highp vec2 tmpvar_5;
|
||||
tmpvar_5 = ((texcoordBottom.xy * _YTex_ST.xy) + _YTex_ST.zw);
|
||||
tmpvar_2 = tmpvar_5;
|
||||
highp vec2 tmpvar_6;
|
||||
tmpvar_6 = ((texcoordTop.xy * _CbTex_ST.xy) + _CbTex_ST.zw);
|
||||
tmpvar_3 = tmpvar_6;
|
||||
gl_Position = (gl_ModelViewProjectionMatrix * _glesVertex);
|
||||
xlv_TEXCOORD0 = tmpvar_1;
|
||||
xlv_TEXCOORD1 = tmpvar_2;
|
||||
xlv_TEXCOORD2 = tmpvar_3;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
#ifdef FRAGMENT
|
||||
|
||||
varying mediump vec2 xlv_TEXCOORD2;
|
||||
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_TEXCOORD2).y;
|
||||
tmpvar_1.z = texture2D (_CbTex, xlv_TEXCOORD2).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 = ((texture2D (_YTex, xlv_TEXCOORD1).y - 0.0627451) * 1.16438);
|
||||
gl_FragData[0] = rgbVec;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif"
|
||||
}
|
||||
}
|
||||
Program "fp" {
|
||||
SubProgram "gles " {
|
||||
"!!GLES"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
Shader "Color Space/YCrCbtoRGB Trans" {
|
||||
Properties {
|
||||
_YTex ("Y (RGB)", 2D) = "white" {}
|
||||
_CrTex ("Cr (RGB)", 2D) = "white" {}
|
||||
_CbTex ("Cb (RGB)", 2D) = "white" {}
|
||||
_TintColor ("Color", Color) = (1,1,1,1)
|
||||
}
|
||||
SubShader {
|
||||
Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="True" "RenderType"="Transparent" }
|
||||
Pass {
|
||||
Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="True" "RenderType"="Transparent" }
|
||||
ZWrite Off
|
||||
Fog {
|
||||
Color (0,0,0,0)
|
||||
}
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
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 lowp vec4 _TintColor;
|
||||
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;
|
||||
lowp vec4 tmpvar_2;
|
||||
tmpvar_2 = (rgbVec * _TintColor);
|
||||
rgbVec = tmpvar_2;
|
||||
gl_FragData[0] = tmpvar_2;
|
||||
}
|
||||
|
||||
#endif"
|
||||
}
|
||||
}
|
||||
Program "fp" {
|
||||
SubProgram "gles " {
|
||||
"!!GLES"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user