I need to combine two different shaders guys and I'm failing everytime because I dont know a lot about shaders. Shader 1: Code (CSharp): Unlit/Texture HSBC" { Properties { _MainTex("Base (RGB), Alpha (A)", 2D) = "black" {} _Hue("Hue", Range(0, 1.0)) = 0 _Saturation("Saturation", Range(0, 1.0)) = 0.5 _Brightness("Brightness", Range(0, 1.0)) = 0.5 _Contrast("Contrast", Range(0, 1.0)) = 0.5 } SubShader { LOD 100 Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } Cull Off Lighting Off ZWrite On Fog{ Mode Off } Offset -1, -1 Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" // Function inline float3 applyHue(float3 aColor, float aHue) { float angle = radians(aHue); float3 k = float3(0.57735, 0.57735, 0.57735); float cosAngle = cos(angle); //Rodrigues' rotation formula return aColor * cosAngle + cross(k, aColor) * sin(angle) + k * dot(k, aColor) * (1 - cosAngle); } inline float4 applyHSBEffect(float4 startColor, fixed4 hsbc) { float hue = 360 * hsbc.r; float saturation = hsbc.g * 2; float brightness = hsbc.b * 2 - 1; float contrast = hsbc.a * 2; float4 outputColor = startColor; outputColor.rgb = applyHue(outputColor.rgb, hue); outputColor.rgb = (outputColor.rgb - 0.5f) * contrast + 0.5f + brightness; outputColor.rgb = lerp(Luminance(outputColor.rgb), outputColor.rgb, saturation); return outputColor; } struct appdata_t { float4 vertex : POSITION; float2 texcoord : TEXCOORD0; fixed4 color : COLOR; }; struct v2f { float4 vertex : SV_POSITION; half2 texcoord : TEXCOORD0; fixed4 hsbc : COLOR; }; sampler2D _MainTex; fixed _Hue, _Saturation, _Brightness, _Contrast; v2f vert(appdata_t v) { v2f o; o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); o.texcoord = v.texcoord; o.hsbc = fixed4(_Hue, _Saturation, _Brightness, _Contrast); return o; } fixed4 frag(v2f i) : COLOR { float4 startColor = tex2D(_MainTex, i.texcoord); float4 hsbColor = applyHSBEffect(startColor, i.hsbc); return hsbColor; } ENDCG } // Pass } // SubShader SubShader { LOD 100 Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } Pass { Cull Off Lighting Off ZWrite Off Fog{ Mode Off } Offset -1, -1 ColorMask RGB //AlphaTest Greater .01 Blend SrcAlpha OneMinusSrcAlpha ColorMaterial AmbientAndDiffuse SetTexture[_MainTex] { Combine Texture * Primary } } // Pass } // SubShader } Shader 2: Code (CSharp): Shader "Custom/curved" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _thresh ("Threshold", Range (0, 16)) = 0.8 _slope ("Slope", Range (0, 1)) = 0.2 _keyingColor ("Key Colour", Color) = (1,1,1,1) } SubShader { Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} LOD 100 Lighting Off ZWrite Off //AlphaTest Off Blend SrcAlpha OneMinusSrcAlpha Cull Off Pass { CGPROGRAM #pragma vertex vert_img #pragma fragment frag #pragma fragmentoption ARB_precision_hint_fastest sampler2D _MainTex; float3 _keyingColor; float _thresh; // 0.8 float _slope; // 0.2 #include "UnityCG.cginc" float4 frag(v2f_img i) : COLOR { float3 input_color = tex2D(_MainTex, i.uv).rgb; float d = abs(length(abs(_keyingColor.rgb - input_color.rgb))); float edge0 = _thresh * (1.0 - _slope); float alpha = smoothstep(edge0, _thresh, d); return float4(input_color, alpha); } ENDCG } } FallBack "Unlit" } It should be easy I think but I'm so newbie in shaders, I even couldnt understand what these codes means and does...