summaryrefslogtreecommitdiff
path: root/Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/LinearPreviews.shader
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/LinearPreviews.shader')
-rw-r--r--Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/LinearPreviews.shader232
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
+}