Unity/복습

Unity 복습 21.05.10. Shader - AlphaBlending

HappyFrog 2021. 5. 10. 21:32

이해가 안된 내용이기에 하나하나 뜯어보며 천천히 복습하려한다.

처음 텍스쳐

 

 

하지만 뒤에 콜론(:)을 붙이자 텍스쳐를 인식하지 못하기 시작했다. 저기에 값을 넣는것이리라.

 

범위값을 주고 조절하니 오른쪽 영상과 같이 풀이 들쭉날쭉해지며, 값이 0일때는 배경도 나타났다.아마 배경은 Alpha값이 0이라 그런게 아닐까 추측한다.

 

그리고 궁금해서 _Cutoff가 내장함수인지 아닌지를 실험해보기로 했다.

ㄴ_Cutoff자체는 그저 값을 조절하기위한 프로퍼티였다. 이름을 바꿔도 별 문제 없었다.

그리고 범위값은 0이하는 0과 같이 표현되며 1을 넘으면 사진과같이 보이지 않게된다.

alphatest는 콜론뒤의 값으로 alphafade의 효과를 조절할 수 있는 기능으로 보인다.

 

 

그리고 FallBack"Diffuse" 이렇게 항상 텍스쳐의 그림자가 전부 생긴다.

 

이걸 Legacy Shaders/Transparent/Cutout/VertexLit로 바꾼다면 아래사진과 같이

 

풀일때는 그림자가 없지만 Alpha Cutoff값이 0이라면 Diffuse와 같은모양의 그림자가 생긴다.

풀모양의 그림자를 만들고 싶어서 Color값을 추가하니 풀모양의 그림자가 잘 구현됐다.

Shader "Custom/AlphaBlending"
{
    Properties
    {       
        _Color("Main Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
    }
    SubShader
    {
        Tags {  "RenderType" = "TransparentCutout" "Queue" = "AlphaTest"}
        LOD 200

        Cull Off

        CGPROGRAM
       
        #pragma surface surf Standard alphatest:_Cutoff
        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        void surf (Input IN, inout SurfaceOutputStandard o)
        {            
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;            
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Legacy Shaders/Transparent/Cutout/VertexLit"
}

FallBack부분과 Color는 아직도 이해가 안된다....

 

참고자료

FallBack부분

 

 

TwoTailsGames/Unity-Built-in-Shaders

Unity Built in Shaders. Contribute to TwoTailsGames/Unity-Built-in-Shaders development by creating an account on GitHub.

github.com

렌더타입부분

 

유니티 - 매뉴얼: 투명 컷아웃 정점 라이팅 (Transparent Cutout Vertex-Lit)

Transparent Cutout Shader Family 투명 컷아웃 디퓨즈 (Transparent Cutout Diffuse) 투명 컷아웃 정점 라이팅 (Transparent Cutout Vertex-Lit) 주의: Unity 5에서 이 쉐이더는 Standard Shader로 대체되었습니다. Transparent Cutout

docs.unity3d.com

 

 

유니티 - 매뉴얼: ShaderLab: SubShader 태그

ShaderLab: SubShader 태그 Subshader는 태그를 사용하여 언제 어떻게 렌더링 엔진에서 렌더링할지 나타냅니다. 구문 Tags { "TagName1" = "Value1" "TagName2" = "Value2" } 태그 TagName1 의 값으로 Value1, 태그 TagName2 의

docs.unity3d.com