From ff3b3adbd0b30b80134ce7f9d275f564f77275ac Mon Sep 17 00:00:00 2001 From: ThePurpleAnon <100617766+ThePurpleAnon@users.noreply.github.com> Date: Thu, 7 Mar 2024 23:11:54 -0600 Subject: [PATCH] added gradient mapping shader (#763) put in a grayscale texture and a gradient, get out a cool picture --- Assets/Shaders/GradientMap.shader | 94 ++++++++++++++++++++++++++ Assets/Shaders/GradientMap.shader.meta | 10 +++ 2 files changed, 104 insertions(+) create mode 100644 Assets/Shaders/GradientMap.shader create mode 100644 Assets/Shaders/GradientMap.shader.meta diff --git a/Assets/Shaders/GradientMap.shader b/Assets/Shaders/GradientMap.shader new file mode 100644 index 00000000..9bb408e4 --- /dev/null +++ b/Assets/Shaders/GradientMap.shader @@ -0,0 +1,94 @@ +Shader "Sprites/GradientMap" +{ + Properties + { + [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} + _GradientMap ("Color Map", 2D) = "white" {} + _Color ("Tint", Color) = (1,1,1,1) + [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0 + } + + SubShader + { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + "PreviewType"="Plane" + "CanUseSpriteAtlas"="True" + } + + Cull Off + Lighting Off + ZWrite Off + Blend SrcAlpha OneMinusSrcAlpha + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile _ PIXELSNAP_ON + #include "UnityCG.cginc" + + struct appdata_t + { + float4 vertex : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + struct v2f + { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + fixed4 _Color; + + v2f vert(appdata_t IN) + { + v2f OUT; + OUT.vertex = UnityObjectToClipPos(IN.vertex); + OUT.texcoord = IN.texcoord; + OUT.color = IN.color * _Color; + #ifdef PIXELSNAP_ON + OUT.vertex = UnityPixelSnap (OUT.vertex); + #endif + + return OUT; + } + + sampler2D _MainTex; + sampler2D _AlphaTex; + sampler2D _GradientMap; + float _AlphaSplitEnabled; + + fixed4 SampleSpriteTexture (float2 uv) + { + fixed4 color = tex2D (_MainTex, uv); + + #if UNITY_TEXTURE_ALPHASPLIT_ALLOWED + if (_AlphaSplitEnabled) + color.a = tex2D (_AlphaTex, uv).r; + #endif //UNITY_TEXTURE_ALPHASPLIT_ALLOWED + + return color; + } + + fixed4 frag(v2f IN) : SV_Target + { + fixed4 input = SampleSpriteTexture (IN.texcoord); + float grayscale = (input.r + input.g + input.b) / 3; + fixed4 c = tex2D (_GradientMap, grayscale); + c *= _Color; + c.a *= input.a; + + return c; + } + ENDCG + } + } +} diff --git a/Assets/Shaders/GradientMap.shader.meta b/Assets/Shaders/GradientMap.shader.meta new file mode 100644 index 00000000..1a5dbec3 --- /dev/null +++ b/Assets/Shaders/GradientMap.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8024c6ce5677cd84e8efbea718c0cb71 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: