본문 바로가기

Unity/Shader

4. lerp (선형보간) 사용해서 텍스처 2장 섞기

풀 이미지와 땅 이미지 샘플입니다.

GrassFrond02AlbedoAlpha.psd
0.18MB
SandAlbedo.psd
0.77MB

 

텍스처 2장을 인자로 받아온 후 lerp함수를 이용해서 첫번째 알파채널이 포함된 텍스처를 이용하면 텍스처 2장을 자연스럽게 섞을 수 있습니다.

Shader "Custom/LerpEx"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
		_MainTex2 ("Albedo (RGB)", 2D) = "white" {}
		_lerpTest("lerp Value", Range(0,1)) = 0
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }

        CGPROGRAM
        #pragma surface surf Standard 

        sampler2D _MainTex;
		sampler2D _MainTex2;
		float _lerpTest;
		
        struct Input
        {
            float2 uv_MainTex;
			float2 uv_MainTex2;
        };

        void surf (Input IN, inout SurfaceOutputStandard o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
			fixed4 d = tex2D (_MainTex2, IN.uv_MainTex2);
            o.Albedo = lerp(c.rgb, d.rgb, 1-c.a);
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}