| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | 
							- Shader "AVProVideo/Internal/Transition"
 
- {
 
- 	Properties
 
- 	{
 
- 		_MainTex ("Texture To", 2D) = "white" {}
 
- 		_FromTex ("Texture From", 2D) = "white" {}
 
- 	}
 
- 	SubShader
 
- 	{
 
- 		Tags { "RenderType"="Opaque" }
 
- 		LOD 100
 
- 		Pass
 
- 		{
 
- 			CGPROGRAM
 
- 			#pragma vertex vert
 
- 			#pragma fragment frag
 
- 			// TODO: replace use multi_compile_local instead (Unity 2019.1 feature)
 
- 			#pragma multi_compile LERP_NONE LERP_FADE LERP_BLACK LERP_WHITE LERP_TRANSP LERP_HORIZ LERP_HORIZ_MIRROR LERP_VERT LERP_VERT_MIRROR LERP_DIAG LERP_DIAG_MIRROR LERP_CIRCLE LERP_SCROLL_VERT LERP_SCROLL_HORIZ LERP_DIAMOND LERP_BLINDS LERP_RECTS_VERT LERP_ARROW LERP_SLIDE_HORIZ LERP_SLIDE_VERT LERP_ZOOM_FADE
 
- 			#include "UnityCG.cginc"
 
- 			#include "../AVProVideo.cginc"
 
- 			struct appdata
 
- 			{
 
- 				float4 vertex : POSITION;
 
- 				float2 uv : TEXCOORD0;
 
- 			};
 
- 			struct v2f
 
- 			{
 
- 				float2 uv : TEXCOORD0;
 
- 				float4 vertex : SV_POSITION;
 
- 			};
 
- 			sampler2D _MainTex;
 
- 			sampler2D _FromTex;
 
- 			float4 _MainTex_ST;
 
- 			float4 _FromTex_ST;
 
- 			float _Fade;
 
- 			
 
- 			v2f vert (appdata v)
 
- 			{
 
- 				v2f o;
 
- 				o.vertex = XFormObjectToClip(v.vertex);
 
- 				o.uv = TRANSFORM_TEX(v.uv, _MainTex);
 
- 				return o;
 
- 			}
 
- 			
 
- 			fixed4 frag (v2f i) : SV_Target
 
- 			{
 
- 				float2 uv1 = i.uv;
 
- 				float2 uv2 = i.uv;
 
- #if LERP_FADE
 
- 				float t = _Fade;
 
- #elif LERP_BLACK
 
- 				float t = _Fade;
 
- 				if (t < 0.5)
 
- 				{
 
- 					return lerp(tex2D(_FromTex, uv1), float4(0.0, 0.0, 0.0, 1.0), t * 2.0);
 
- 				}
 
- 				else
 
- 				{
 
- 					return lerp(float4(0.0, 0.0, 0.0, 1.0), tex2D(_MainTex, uv2), 2.0 * (t - 0.5));
 
- 				}
 
- #elif LERP_WHITE
 
- 				float t = _Fade;
 
- 				if (t < 0.5)
 
- 				{
 
- 					return lerp(tex2D(_FromTex, uv1), float4(1.0, 1.0, 1.0, 1.0), t * 2.0);
 
- 				}
 
- 				else
 
- 				{
 
- 					return lerp(float4(1.0, 1.0, 1.0, 1.0), tex2D(_MainTex, uv2), 2.0 * (t - 0.5));
 
- 				}
 
- #elif LERP_TRANSP
 
- 				float t = _Fade;
 
- 				if (t < 0.5)
 
- 				{
 
- 					return lerp(tex2D(_FromTex, uv1), float4(0.0, 0.0, 0.0, 0.0), t * 2.0);
 
- 				}
 
- 				else
 
- 				{
 
- 					return lerp(float4(0.0, 0.0, 0.0, 0.0), tex2D(_MainTex, uv2), 2.0 * (t - 0.5));
 
- 				}
 
- #elif LERP_HORIZ
 
- 				float t = step(i.uv.x, _Fade);
 
- #elif LERP_HORIZ_MIRROR
 
- 				float t = step(abs(i.uv.x - 0.5), _Fade);
 
- #elif LERP_VERT
 
- 				float t = step(i.uv.y, _Fade);
 
- #elif LERP_VERT_MIRROR
 
- 				float t = step(abs(i.uv.y - 0.5), _Fade);
 
- #elif LERP_DIAG
 
- 				float t = step((i.uv.y+i.uv.x)*0.5, _Fade);
 
- #elif LERP_DIAG_MIRROR
 
- 				float t = step(abs(i.uv.y - i.uv.x), _Fade);
 
- #elif LERP_CIRCLE
 
- 				float t = distance(float2(i.uv.x*1.777, i.uv.y), float2(0.5*1.7777, 0.5));
 
- 				t = step(t, _Fade*2.1);
 
- #elif LERP_SCROLL_VERT
 
- 				float t = _Fade;
 
- 				uv1.y += _Fade;
 
- 				t = step(1 - uv1.y, 0);
 
- #elif LERP_SCROLL_HORIZ
 
- 				float t = _Fade;
 
- 				uv1.x += _Fade;
 
- 				t = step(1 - uv1.x, 0);
 
- #elif LERP_DIAMOND	
 
- 				float2 origin = float2(0.5 * 1.7777, 0.5);
 
- 				float t = abs(uv1.x*1.7777 - origin.x);
 
- 				t += abs(uv1.y - origin.y);
 
- 				
 
- 				t = step(t, _Fade*1.4);
 
- #elif LERP_BLINDS
 
- 				float x = frac(uv1.x*4.0);
 
- 				float t = step(x, _Fade);
 
- 			
 
- #elif LERP_ARROW
 
- 				// Arrow
 
- 				float y = abs(i.uv.y - 0.5) * 0.5;
 
- 				float x = lerp(0.5, 1.0, i.uv.x);
 
- 				float t = step(x, y + _Fade);
 
- #elif LERP_SLIDE_HORIZ
 
- 				// Slide horiz
 
- 				float t = _Fade;
 
- 				uv1.x += _Fade;
 
- 				uv2.x -= 1.0 - _Fade;
 
- 				t = step(1 - uv1.x, 0);
 
- #elif LERP_SLIDE_VERT
 
- 				// slide vert
 
- 				float t = _Fade;
 
- 				uv1.y += _Fade;
 
- 				uv2.y -= 1.0 - _Fade;
 
- 				t = step(1 - uv1.y, 0);
 
- #elif LERP_ZOOM_FADE
 
- 				// zoom-fade
 
- 				float scale = lerp(1.0, 0.15, _Fade);
 
- 				float scale2 = lerp(1.0, 0.15, 1.0-_Fade);
 
- 				uv1 -= 0.5;
 
- 				uv2 -= 0.5;
 
- 				uv1 *= scale;
 
- 				uv2 *= scale2;
 
- 				uv1 += 0.5;
 
- 				uv2 += 0.5;
 
- 				float t = smoothstep(0.5, 1.0, _Fade);
 
- #elif LERP_RECTS_VERT
 
- 				float x = uv1.x;
 
- 				float bf = _Fade / 1.5;
 
- 				bf = frac(uv1.y * 8.0);
 
- 				bf = (int)fmod(uv1.y * 8.0, 8.0);
 
- 				bf += 1.0;
 
- 				bf *= _Fade / 2.0;
 
- 				float t = step(abs(x - 0.5), bf);
 
- #endif
 
- #if LERP_NONE
 
- 				return tex2D(_MainTex, uv1);
 
- #else
 
- 				float4 cola = tex2D(_FromTex, uv1);
 
- 				float4 colb = tex2D(_MainTex, uv2);
 
- 				float4 col = lerp(cola, colb, t);
 
- 				return col;
 
- #endif
 
- 			}
 
- 			ENDCG
 
- 		}
 
- 	}
 
- }
 
 
  |