Unity/Graphics

쉐이더 Lerp, Metallic, Smoothness 적용

s0002 2023. 3. 15. 13:07

비에 젖은 느낌 내보기

Shader "Custom/vertexColor"
{
    Properties
    {
        _MainTex("Texture",2D) = "white"{}
        _MainTex1("Texture1",2D) = "white"{}
        _MainTex2("Texture2",2D) = "white"{}
        _MainTex3("Texture3",2D) = "white"{}
        _BumpMap("Normal",2D) = "white"{}

        _Metallic("Metalic",Range(0,1)) = 0
        _Smoothness("Smoothness",Range(0,1)) = 0
    }
        SubShader
    {
        Tags { "RenderType" = "Opaque" }
        CGPROGRAM
        #pragma surface surf Standard noambient
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _MainTex1;
        sampler2D _MainTex2;
        sampler2D _MainTex3;
        sampler2D _BumpMap;

        float _Metallic;
        float _Smoothness;

        struct Input
        {
            float4 color: COLOR;
            float2 uv_MainTex;
            float2 uv_MainTex1;
            float2 uv_MainTex2;
            float2 uv_MainTex3;

            float2 uv_BumpMap;
        };


        void surf (Input IN, inout SurfaceOutputStandard o)
        {
            float4 c=tex2D(_MainTex, IN.uv_MainTex);
            float4 e = tex2D(_MainTex2, IN.uv_MainTex2);
            float4 d = tex2D(_MainTex1, IN.uv_MainTex1);
            float4 f = tex2D(_MainTex3, IN.uv_MainTex3);

            float4 bump = tex2D(_BumpMap, IN.uv_BumpMap);
            float3 n = UnpackNormal(bump);
            o.Normal = float3(n.x*1.5, n.y*1.5, n.z);

            //o.Emission = lerp(c.rgb, d.rgb, IN.color.r);
            ////o.Emission = lerp(o.Emission, e.rgb, IN.color.g);
            //o.Emission = lerp(o.Emission, (f.r+f.g+f.b)/3, IN.color.b);
            o.Albedo = lerp(c.rgb,d.rgb,1-IN.color.b);
            //o.Albedo = lerp(o.Albedo, 0, IN.color.r);

            o.Alpha = c.a;

            o.Metallic = IN.color.b*_Metallic;
            o.Smoothness = IN.color.b*_Smoothness;
        }
        ENDCG
    }
    FallBack "Diffuse"
}