Unity/문제해결

Unity Built-in Shader 마스킹을 이용하여 두 가지 색 표현하기

minquu 2021. 9. 24. 11:35
반응형

문제 

이러한 큐브처럼 안쪽 색과 겉에 테두리 색을 다르게 표현하고 싶음

 

마스크 맵을 사용하여, 흰색 부분에는 다른 색이 나오도록 할것이다.

 

생각보단 단순한건데 오랜만에 해서 기억이 나지 않아서 해맸음

 

 

문제해결 

 

컬러 2개를 받고, 텍스트 맵 하나를 받아준다.

 

 

Lerp 를 이용해서 컬러와 컬러1를 받고 / C.r 값을 마스크로 해준다.

 

https://developer.download.nvidia.com/cg/lerp.html

 

lerp

Name lerp - returns linear interpolation of two scalars or vectors based on a weight Synopsis float lerp(float a, float b, float w); float1 lerp(float1 a, float1 b, float1 w); float2 lerp(float2 a, float2 b, float2 w); float3 lerp(float3 a, float3 b, float

developer.download.nvidia.com

 

 

 

Shader "Custom/Cude01"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _Color1 ("Color1", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Emission ("Emission Value", Range(0,10)) = 0
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        #pragma surface surf Standard fullforwardshadows
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        fixed4 _Color;
        fixed4 _Color1;
        float _Emission;

        void surf (Input IN, inout SurfaceOutputStandard o)
        {

            fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
            o.Albedo = lerp(_Color, _Color1, c.r);
        }
        ENDCG
    }
    FallBack "Diffuse"
}
반응형