123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- // Shader created with Shader Forge v1.38
- // Shader Forge (c) Neat Corporation / Joachim Holmer - http://www.acegikmo.com/shaderforge/
- // Note: Manually altering this data may prevent you from opening it in Shader Forge
- /*SF_DATA;ver:1.38;sub:START;pass:START;ps:flbk:Sprites/Default,iptp:1,cusa:True,bamd:0,cgin:,lico:1,lgpr:1,limd:0,spmd:1,trmd:0,grmd:0,uamb:True,mssp:True,bkdf:False,hqlp:False,rprd:False,enco:False,rmgx:True,imps:True,rpth:0,vtps:0,hqsc:False,nrmq:1,nrsp:0,vomd:0,spxs:False,tesm:0,olmd:1,culm:2,bsrc:3,bdst:7,dpts:2,wrdp:False,dith:0,atcv:False,rfrpo:True,rfrpn:Refraction,coma:15,ufog:False,aust:True,igpj:True,qofs:0,qpre:3,rntp:2,fgom:False,fgoc:False,fgod:False,fgor:False,fgmd:0,fgcr:0.5,fgcg:0.5,fgcb:0.5,fgca:1,fgde:0.01,fgrn:0,fgrf:300,stcl:True,atwp:False,stva:128,stmr:255,stmw:255,stcp:6,stps:0,stfa:0,stfz:0,ofsf:0,ofsu:0,f2p0:False,fnsp:False,fnfb:False,fsmp:False;n:type:ShaderForge.SFN_Final,id:1873,x:33730,y:32927,cmnt:Created By Mike Jakubowski,varname:node_1873,prsc:2|emission-9613-OUT,alpha-4805-A;n:type:ShaderForge.SFN_Tex2d,id:4805,x:32620,y:32963,ptovrint:False,ptlb:MainTex,ptin:_MainTex,cmnt:Input Texture,varname:_MainTex_copy,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:True,tagnsco:False,tagnrm:False,ntxv:0,isnm:False;n:type:ShaderForge.SFN_VertexColor,id:8041,x:32620,y:33140,cmnt:Color from Sprite Renderer,varname:node_8041,prsc:2;n:type:ShaderForge.SFN_RgbToHsv,id:3046,x:32782,y:32963,varname:node_3046,prsc:2|IN-4805-RGB;n:type:ShaderForge.SFN_Slider,id:1860,x:32620,y:33310,ptovrint:False,ptlb:Saturation Bound,ptin:_SaturationBound,cmnt:Saturation bound to skip gray pixels,varname:node_1860,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:0.1,max:1;n:type:ShaderForge.SFN_Code,id:9613,x:33200,y:33027,varname:node_9613,prsc:2,code:aQBmACAAKABzAGEAdAB1AHIAYQB0AGkAbwBuACAAPgAgAHMAYQB0AHUAcgBhAHQAaQBvAG4AQgBvAHUAbgBkACAAJgAmACAAIQBpAG4AdgBlAHIAcwBlACkAIAByAGUAdAB1AHIAbgAgAHAAaQB4AGUAbAA7AA0ACgBpAGYAIAAoAHMAYQB0AHUAcgBhAHQAaQBvAG4AIAA8ACAAcwBhAHQAdQByAGEAdABpAG8AbgBCAG8AdQBuAGQAIAAmACYAIABpAG4AdgBlAHIAcwBlACkAIAByAGUAdAB1AHIAbgAgAHAAaQB4AGUAbAA7AA0ACgBmAGwAbwBhAHQAIABnAHIAYQB5ACAAPQAgADAALgAzACAAKgAgAHAAaQB4AGUAbAAuAHIAIAArACAAMAAuADUAOQAgACoAIABwAGkAeABlAGwALgBnACAAKwAgADAALgAxADEAIAAqACAAcABpAHgAZQBsAC4AYgA7AA0ACgByAGUAdAB1AHIAbgAgAGMAbwBsAG8AcgBNAHUAbAB0AGkAcABsAGkAZQByACAAKgAgAGMAbwBsAG8AcgAgACoAIABnAHIAYQB5ADsA,output:2,fname:ToGrayscale,width:461,height:168,input:2,input:2,input:0,input:0,input:0,input:4,input_1_label:pixel,input_2_label:color,input_3_label:saturation,input_4_label:saturationBound,input_5_label:colorMultiplier,input_6_label:inverse|A-4805-RGB,B-8041-RGB,C-3046-SOUT,D-1860-OUT,E-7569-OUT,F-6479-OUT;n:type:ShaderForge.SFN_Slider,id:7569,x:32620,y:33400,ptovrint:False,ptlb:Color Multiplier,ptin:_ColorMultiplier,varname:node_7569,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:1,cur:1,max:2;n:type:ShaderForge.SFN_ToggleProperty,id:6479,x:32777,y:33490,ptovrint:False,ptlb:Inverse,ptin:_Inverse,varname:node_6479,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,on:False;proporder:4805-1860-7569-6479;pass:END;sub:END;*/
- Shader "Hero Editor/Gray Paint" {
- Properties {
- [PerRendererData]_MainTex ("MainTex", 2D) = "white" {}
- _SaturationBound ("Saturation Bound", Range(0, 1)) = 0.1
- _ColorMultiplier ("Color Multiplier", Range(1, 2)) = 1
- [MaterialToggle] _Inverse ("Inverse", Float ) = 0
- [HideInInspector]_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
- // these six unused properties are required when a shader is used in the UI system, or you get a warning.
- _StencilComp("Stencil Comparison", Float) = 8
- _Stencil("Stencil ID", Float) = 0
- _StencilOp("Stencil Operation", Float) = 0
- _StencilWriteMask("Stencil Write Mask", Float) = 255
- _StencilReadMask("Stencil Read Mask", Float) = 255
- _ColorMask("Color Mask", Float) = 15
- }
- SubShader {
- Tags {
- "IgnoreProjector"="True"
- "Queue"="Transparent"
- "RenderType"="Transparent"
- "CanUseSpriteAtlas"="True"
- "PreviewType"="Plane"
- }
- Pass {
- Name "FORWARD"
- Blend SrcAlpha OneMinusSrcAlpha
- Cull Off
- ZWrite Off
- ZTest [unity_GUIZTestMode]
- Blend SrcAlpha OneMinusSrcAlpha
-
- Stencil {
- Ref [_Stencil]
- Comp [_StencilComp]
- Pass [_StencilOp]
- ReadMask [_StencilReadMask]
- WriteMask [_StencilWriteMask]
- }
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- //#define UNITY_PASS_FORWARDBASE
- #include "UnityCG.cginc"
- #include "UnityUI.cginc"
- #pragma multi_compile_fwdbase
- //#pragma only_renderers d3d9 d3d11 glcore gles gles3 metal d3d11_9x xboxone ps4 psp2 n3ds wiiu
- #pragma target 3.0
- uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
- uniform float _SaturationBound;
- float3 ToGrayscale( float3 pixel , float3 color , float saturation , float saturationBound , float colorMultiplier , half inverse ){
- if (saturation > saturationBound && !inverse) return pixel;
- if (saturation < saturationBound && inverse) return pixel;
- float gray = 0.3 * pixel.r + 0.59 * pixel.g + 0.11 * pixel.b;
- return colorMultiplier * color * gray;
- }
-
- uniform float _ColorMultiplier;
- uniform fixed _Inverse;
- float4 _ClipRect;
- struct VertexInput {
- float4 vertex : POSITION;
- float2 texcoord0 : TEXCOORD0;
- float4 vertexColor : COLOR;
- };
- struct VertexOutput {
- float4 pos : SV_POSITION;
- float2 uv0 : TEXCOORD0;
- float4 vertexColor : COLOR;
- float4 worldPosition : TEXCOORD1;
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o = (VertexOutput)0;
- o.uv0 = v.texcoord0;
- o.vertexColor = v.vertexColor;
- o.worldPosition = v.vertex;
- o.pos = UnityObjectToClipPos( o.worldPosition );
- return o;
- }
- float4 frag(VertexOutput i, float facing : VFACE) : COLOR {
- float isFrontFace = ( facing >= 0 ? 1 : 0 );
- float faceSign = ( facing >= 0 ? 1 : -1 );
- ////// Lighting:
- ////// Emissive:
- float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex)); // Input Texture
- float4 node_3046_k = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
- float4 node_3046_p = lerp(float4(float4(_MainTex_var.rgb,0.0).zy, node_3046_k.wz), float4(float4(_MainTex_var.rgb,0.0).yz, node_3046_k.xy), step(float4(_MainTex_var.rgb,0.0).z, float4(_MainTex_var.rgb,0.0).y));
- float4 node_3046_q = lerp(float4(node_3046_p.xyw, float4(_MainTex_var.rgb,0.0).x), float4(float4(_MainTex_var.rgb,0.0).x, node_3046_p.yzx), step(node_3046_p.x, float4(_MainTex_var.rgb,0.0).x));
- float node_3046_d = node_3046_q.x - min(node_3046_q.w, node_3046_q.y);
- float node_3046_e = 1.0e-10;
- float3 node_3046 = float3(abs(node_3046_q.z + (node_3046_q.w - node_3046_q.y) / (6.0 * node_3046_d + node_3046_e)), node_3046_d / (node_3046_q.x + node_3046_e), node_3046_q.x);;
- float3 node_9613 = ToGrayscale( _MainTex_var.rgb , i.vertexColor.rgb , node_3046.g , _SaturationBound , _ColorMultiplier , _Inverse );
- float3 emissive = node_9613;
- float3 finalColor = emissive;
- _MainTex_var.a -= 1 - i.vertexColor.a;
- #ifdef UNITY_UI_CLIP_RECT
- finalColor.a *= UnityGet2DClipping(i.worldPosition.xy, _ClipRect);
- #endif
- #ifdef UNITY_UI_ALPHACLIP
- clip (finalColor.a - 0.001);
- #endif
- return fixed4(finalColor,_MainTex_var.a);
- }
- ENDCG
- }
- Pass {
- Name "ShadowCaster"
- Tags {
- "LightMode"="ShadowCaster"
- }
- Offset 1, 1
- Cull Off
- Stencil {
- Ref [_Stencil]
- Comp [_StencilComp]
- Pass [_StencilOp]
- ReadMask [_StencilReadMask]
- WriteMask [_StencilWriteMask]
- }
-
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- //#define UNITY_PASS_SHADOWCASTER
- #include "UnityCG.cginc"
- #include "Lighting.cginc"
- #pragma fragmentoption ARB_precision_hint_fastest
- #pragma multi_compile_shadowcaster
- //#pragma only_renderers d3d9 d3d11 glcore gles gles3 metal d3d11_9x xboxone ps4 psp2 n3ds wiiu
- #pragma target 2.0
- struct VertexInput {
- float4 vertex : POSITION;
- };
- struct VertexOutput {
- V2F_SHADOW_CASTER;
- float4 worldPosition : TEXCOORD1;
- };
- VertexOutput vert (VertexInput v) {
- VertexOutput o = (VertexOutput)0;
- o.worldPosition = v.vertex;
- o.pos = UnityObjectToClipPos( o.worldPosition );
- TRANSFER_SHADOW_CASTER(o)
- return o;
- }
- float4 frag(VertexOutput i, float facing : VFACE) : COLOR {
- float isFrontFace = ( facing >= 0 ? 1 : 0 );
- float faceSign = ( facing >= 0 ? 1 : -1 );
- SHADOW_CASTER_FRAGMENT(i)
- }
- ENDCG
- }
- }
- FallBack "Sprites/Default"
- //CustomEditor "ShaderForgeMaterialInspector"
- }
|