123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- Shader "Hidden/LinearMaterial"
- {
- Properties
- {
- _MainTex( "Texture", any ) = "" {}
- _BackGround( "Back", 2D) = "white" {}
- }
- SubShader
- {
- Lighting Off
- Blend SrcAlpha OneMinusSrcAlpha
- Cull Off
- ZWrite Off
- ZTest Always
- CGINCLUDE
- uniform float4x4 unity_GUIClipTextureMatrix;
- sampler2D _GUIClipTexture;
- Texture2D _MainTex;
- SamplerState sampler_MainTex;
- uniform float4 _MainTex_ST;
- SamplerState my_linear_clamp_sampler;
- uniform bool _ManualTex2SRGB;
- ENDCG
- Pass {
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #pragma target 2.0
- #include "UnityCG.cginc"
- float4 _Mask;
- struct appdata_t {
- float4 vertex : POSITION;
- float2 texcoord : TEXCOORD0;
- };
- struct v2f {
- float4 vertex : SV_POSITION;
- float2 texcoord : TEXCOORD0;
- float2 clipUV : TEXCOORD1;
- };
- v2f vert( appdata_t v )
- {
- v2f o;
- o.vertex = UnityObjectToClipPos( v.vertex );
- o.texcoord = TRANSFORM_TEX( v.texcoord.xy, _MainTex );
- float3 eyePos = UnityObjectToViewPos( v.vertex );
- o.clipUV = mul( unity_GUIClipTextureMatrix, float4( eyePos.xy, 0, 1.0 ) );
- return o;
- }
- float4 frag( v2f i ) : SV_Target
- {
- float4 c = _MainTex.Sample( my_linear_clamp_sampler, i.texcoord );
- if (_ManualTex2SRGB) c.rgb = LinearToGammaSpace(c.rgb);
- c.rgb *= _Mask.rgb;
- c.a = tex2D( _GUIClipTexture, i.clipUV ).a;
- return c;
- }
- ENDCG
- }
- Pass { // sphere preview = true, alpha mask = false
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #pragma target 2.0
- #include "UnityCG.cginc"
- float _InvertedZoom;
- float4 _Mask;
- struct appdata_t {
- float4 vertex : POSITION;
- float2 texcoord : TEXCOORD0;
- };
- struct v2f {
- float4 vertex : SV_POSITION;
- float2 texcoord : TEXCOORD0;
- float2 clipUV : TEXCOORD1;
- };
- v2f vert( appdata_t v )
- {
- v2f o;
- o.vertex = UnityObjectToClipPos( v.vertex );
- o.texcoord = TRANSFORM_TEX( v.texcoord.xy, _MainTex );
- float3 eyePos = UnityObjectToViewPos( v.vertex );
- o.clipUV = mul( unity_GUIClipTextureMatrix, float4( eyePos.xy, 0, 1.0 ) );
- return o;
- }
- float4 frag( v2f i ) : SV_Target
- {
- float2 p = 2 * i.texcoord - 1;
- float r = sqrt( dot( p,p ) );
- float alpha = saturate( ( 1 - r )*( 45 * _InvertedZoom + 5 ) );
- float4 c = _MainTex.Sample( sampler_MainTex, i.texcoord );
- if (_ManualTex2SRGB) c.rgb = LinearToGammaSpace(c.rgb);
- c.rgb *= _Mask.rgb;
- c.rgb *= alpha;
- c.a = tex2D( _GUIClipTexture, i.clipUV ).a;
- return c;
- }
- ENDCG
- }
- Pass {
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #pragma target 2.0
- #include "UnityCG.cginc"
- sampler2D _BackGround;
- uniform float4 _BackGround_ST;
- float _InvertedZoom;
- float4 _Mask;
- struct appdata_t {
- float4 vertex : POSITION;
- float2 texcoord : TEXCOORD0;
- };
- struct v2f {
- float4 vertex : SV_POSITION;
- float2 texcoord : TEXCOORD0;
- float2 clipUV : TEXCOORD1;
- };
- v2f vert( appdata_t v )
- {
- v2f o;
- o.vertex = UnityObjectToClipPos( v.vertex );
- o.texcoord = TRANSFORM_TEX( v.texcoord.xy, _MainTex );
- float3 eyePos = UnityObjectToViewPos( v.vertex );
- o.clipUV = mul( unity_GUIClipTextureMatrix, float4( eyePos.xy, 0, 1.0 ) );
- return o;
- }
- float4 frag( v2f i ) : SV_Target
- {
- float3 back = tex2D( _BackGround, ( i.texcoord * 2 - 1 ) * _InvertedZoom).b;
- float4 c = _MainTex.Sample( sampler_MainTex, i.texcoord );
- if (_ManualTex2SRGB) c.rgb = LinearToGammaSpace(c.rgb);
- c.rgb *= _Mask.rgb;
- c.rgb = lerp( back, c.rgb, c.a );
- c.a = tex2D( _GUIClipTexture, i.clipUV ).a;
- return c;
- }
- ENDCG
- }
- Pass {
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #pragma target 2.0
- #include "UnityCG.cginc"
- sampler2D _BackGround;
- uniform float4 _BackGround_ST;
- float _InvertedZoom;
- float4 _Mask;
- struct appdata_t {
- float4 vertex : POSITION;
- float2 texcoord : TEXCOORD0;
- };
- struct v2f {
- float4 vertex : SV_POSITION;
- float2 texcoord : TEXCOORD0;
- float2 clipUV : TEXCOORD1;
- };
- v2f vert( appdata_t v )
- {
- v2f o;
- o.vertex = UnityObjectToClipPos( v.vertex );
- o.texcoord = TRANSFORM_TEX( v.texcoord.xy, _MainTex );
- float3 eyePos = UnityObjectToViewPos( v.vertex );
- o.clipUV = mul( unity_GUIClipTextureMatrix, float4( eyePos.xy, 0, 1.0 ) );
- return o;
- }
- float4 frag( v2f i ) : SV_Target
- {
- float2 p = 2 * i.texcoord - 1;
- float3 back = tex2D( _BackGround, p * _InvertedZoom).b;
- float r = sqrt( dot( p,p ) );
- float alpha = saturate( ( 1 - r )*( 45 * _InvertedZoom + 5 ) );
- float4 c = 0;
- c = _MainTex.Sample( sampler_MainTex, i.texcoord );
- if (_ManualTex2SRGB) c.rgb = LinearToGammaSpace(c.rgb);
- c.rgb *= _Mask.rgb;
- c.rgb = lerp( back, c.rgb, c.a * alpha);
- c.a = tex2D( _GUIClipTexture, i.clipUV ).a;
- return c;
- }
- ENDCG
- }
- }
- Fallback Off
- }
|