1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| Shader "Hidden/Color_Code" { Properties { _MainTex ("Texture", 2D) = "white" {} _Brightness("Brightness", Float) = 1 _Saturation("Saturation",Float) = 1 _Contrast("Contrast",Float) = 1 _VignetteIntensity("VignetteIntensity",Range(0.05,3.0)) = 1.5 _VignetteRoundness("VignetteRoundness",Range(1,6)) = 5 _VignetteSmoothness("VignetteSmoothness",Range(0.05,5)) = 5 _HueShift("HueShift",Range(0,1)) = 0 } SubShader { Cull Off ZWrite Off ZTest Always
Pass { CGPROGRAM #pragma vertex vert_img #pragma fragment frag
#include "UnityCG.cginc" float3 HSVToRGB(float3 c) { float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y); } float3 RGBToHSV(float3 c) { float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); float4 p = lerp(float4(c.bg, K.wz), float4(c.gb, K.xy), step(c.b, c.g)); float4 q = lerp(float4(p.xyw, c.r), float4(c.r, p.yzx), step(p.x, c.r)); float d = q.x - min(q.w, q.y); float e = 1.0e-10; return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); } sampler2D _MainTex; float _Brightness; float _Saturation; float _Contrast; float _VignetteIntensity; float _VignetteRoundness; float _VignetteSmoothness; float _HueShift;
fixed4 frag (v2f_img i) : SV_Target { fixed4 sourse = tex2D(_MainTex, i.uv); fixed4 col=sourse; fixed3 hsv = RGBToHSV(sourse.rgb); hsv.r= hsv.r +_HueShift; col.rgb=HSVToRGB(hsv); col.rgb=col.rgb*_Brightness; float lumin=dot(col.rgb,float3(0.22,0.707,0.071)); col.rgb=lerp(lumin,col.rgb,_Saturation); col.rgb=lerp(float3(0.5,0.5,0.5),col.rgb,_Contrast); float2 d=abs(i.uv-0.5)*_VignetteIntensity;
d=pow(saturate(d),_VignetteRoundness); float dist=length(d); col.rgb=pow(saturate(1.0-dist*dist),_VignetteSmoothness)*col.rgb; return col; } ENDCG } } }
|