diff options
Diffstat (limited to 'Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/LinearPreviews.shader')
-rw-r--r-- | Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/LinearPreviews.shader | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/LinearPreviews.shader b/Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/LinearPreviews.shader new file mode 100644 index 00000000..077ef3a9 --- /dev/null +++ b/Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/LinearPreviews.shader @@ -0,0 +1,232 @@ +Shader "Hidden/LinearMaterial" +{ + Properties + { + _MainTex( "Texture", any ) = "" {} + _BackGround( "Back", 2D) = "white" {} + } + + SubShader + { + Lighting Off + Blend SrcAlpha OneMinusSrcAlpha + Cull Off + ZWrite Off + ZTest Always + + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + + #include "UnityCG.cginc" + + sampler2D _MainTex; + uniform float4 _MainTex_ST; + float4 _Mask; + + uniform float4x4 unity_GUIClipTextureMatrix; + sampler2D _GUIClipTexture; + + 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; + } + + fixed4 frag( v2f i ) : SV_Target + { + float4 c = tex2D( _MainTex, i.texcoord ); + 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" + + sampler2D _MainTex; + uniform float4 _MainTex_ST; + float _InvertedZoom; + float4 _Mask; + + uniform float4x4 unity_GUIClipTextureMatrix; + sampler2D _GUIClipTexture; + + 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; + } + + fixed4 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 = tex2D( _MainTex, i.texcoord ); + 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 _MainTex; + sampler2D _BackGround; + uniform float4 _MainTex_ST; + uniform float4 _BackGround_ST; + float _InvertedZoom; + float4 _Mask; + + uniform float4x4 unity_GUIClipTextureMatrix; + sampler2D _GUIClipTexture; + + 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; + } + + fixed4 frag( v2f i ) : SV_Target + { + float3 back = tex2D( _BackGround, ( i.texcoord * 2 - 1 ) * _InvertedZoom).b; + + float4 c = tex2D( _MainTex, i.texcoord ); + 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 _MainTex; + sampler2D _BackGround; + uniform float4 _MainTex_ST; + uniform float4 _BackGround_ST; + float _InvertedZoom; + float4 _Mask; + + uniform float4x4 unity_GUIClipTextureMatrix; + sampler2D _GUIClipTexture; + + 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; + } + + fixed4 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 = tex2D( _MainTex, i.texcoord ); + 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 +} |