114 lines
3.3 KiB
Plaintext
114 lines
3.3 KiB
Plaintext
|
|
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
||
|
|
|
||
|
|
Shader "Hidden/VideoDecodeAndroid"
|
||
|
|
{
|
||
|
|
GLSLINCLUDE
|
||
|
|
#include "UnityCG.glslinc"
|
||
|
|
ENDGLSL
|
||
|
|
|
||
|
|
SubShader
|
||
|
|
{
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "RGBAExternal_To_RGBA"
|
||
|
|
ZTest Always Cull Off ZWrite Off Blend Off
|
||
|
|
|
||
|
|
GLSLPROGRAM
|
||
|
|
|
||
|
|
#extension GL_OES_EGL_image_external : require
|
||
|
|
#pragma glsl_es2
|
||
|
|
#pragma multi_compile_local _ ADJUST_TO_LINEARSPACE
|
||
|
|
|
||
|
|
uniform vec4 _MainTex_ST;
|
||
|
|
|
||
|
|
#ifdef VERTEX
|
||
|
|
|
||
|
|
varying vec2 textureCoord;
|
||
|
|
void main()
|
||
|
|
{
|
||
|
|
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
|
||
|
|
textureCoord = TRANSFORM_TEX_ST(gl_MultiTexCoord0, _MainTex_ST);
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifdef FRAGMENT
|
||
|
|
|
||
|
|
vec4 AdjustForColorSpace(vec4 color)
|
||
|
|
{
|
||
|
|
#if defined(UNITY_COLORSPACE_GAMMA) || !defined(ADJUST_TO_LINEARSPACE)
|
||
|
|
return color;
|
||
|
|
#else
|
||
|
|
// Approximate version from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1
|
||
|
|
vec3 sRGB = color.rgb;
|
||
|
|
return vec4(sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878), color.a);
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
varying vec2 textureCoord;
|
||
|
|
uniform samplerExternalOES _MainTex;
|
||
|
|
void main()
|
||
|
|
{
|
||
|
|
gl_FragColor = AdjustForColorSpace(textureExternal(_MainTex, textureCoord));
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|
||
|
|
|
||
|
|
ENDGLSL
|
||
|
|
}
|
||
|
|
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
Name "RGBASplitExternal_To_RGBA"
|
||
|
|
ZTest Always Cull Off ZWrite Off Blend Off
|
||
|
|
|
||
|
|
GLSLPROGRAM
|
||
|
|
|
||
|
|
#extension GL_OES_EGL_image_external : require
|
||
|
|
#pragma glsl_es2
|
||
|
|
#pragma multi_compile_local _ ADJUST_TO_LINEARSPACE
|
||
|
|
|
||
|
|
uniform vec4 _MainTex_ST;
|
||
|
|
|
||
|
|
#ifdef VERTEX
|
||
|
|
|
||
|
|
varying vec3 textureCoordSplit;
|
||
|
|
void main()
|
||
|
|
{
|
||
|
|
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
|
||
|
|
textureCoordSplit.xz = vec2(0.5 * gl_MultiTexCoord0.x * _MainTex_ST.x, gl_MultiTexCoord0.y * _MainTex_ST.y) + _MainTex_ST.zw;
|
||
|
|
textureCoordSplit.y = textureCoordSplit.x + 0.5 * _MainTex_ST.x;
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifdef FRAGMENT
|
||
|
|
|
||
|
|
vec4 AdjustForColorSpace(vec4 color)
|
||
|
|
{
|
||
|
|
#if defined(UNITY_COLORSPACE_GAMMA) || !defined(ADJUST_TO_LINEARSPACE)
|
||
|
|
return color;
|
||
|
|
#else
|
||
|
|
// Approximate version from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1
|
||
|
|
vec3 sRGB = color.rgb;
|
||
|
|
return vec4(sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878), color.a);
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
varying vec3 textureCoordSplit;
|
||
|
|
uniform samplerExternalOES _MainTex;
|
||
|
|
void main()
|
||
|
|
{
|
||
|
|
gl_FragColor.rgb = AdjustForColorSpace(textureExternal(_MainTex, textureCoordSplit.xz)).rgb;
|
||
|
|
gl_FragColor.a = textureExternal(_MainTex, textureCoordSplit.yz).g;
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|
||
|
|
|
||
|
|
ENDGLSL
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
FallBack Off
|
||
|
|
}
|