셰이더를 사용하여 Unity에서 그림자 색상을 변경합니다.

5547 단어 ShaderUnity

소개



Unity에서 색채의 그림자가 필요하게 되었고, 셰이더를 사용하여 그림자의 색을 바꾸어 보았다.

※셰이더 방금 시작했기 때문에 실수 등은 용서해 주세요.

환경


  • Unity 2017.4.3f1

  • 준비



    Unity Project에서 새로운 셰이더를 추가합니다.
    [Create]→[Shader]→[Standard Surface Shader]

    이름은 "ColoredShadow"로 둡니다. 이것을 마우스 오른쪽 버튼으로 클릭하고 같은 이름으로 머티리얼을 만들어 봅시다.
    [Create]→[Material]

    이제 작성한 셰이더 파일을 편집기에서 열고 씁니다.

    코딩



    ColoredShadow.shader
    Shader "Example/ColoredShadow" {
    
        Properties{
            _MainTex("Texture", 2D) = "white" {}
            _ShadowColor("ShadowColor", Color) = (0,0,1,1)
    
        }
    
        SubShader{
            Tags { "RenderType" = "Opaque" }
    
            CGPROGRAM
            #pragma surface surf SimpleLambert
            sampler2D _MainTex;
            half4 _ShadowColor;
    
            struct Input {
                float2 uv_MainTex; // uv座標
            };
    
            void surf(Input IN, inout SurfaceOutput o) {
                o.Albedo = tex2D(_MainTex, IN.uv_MainTex); //テクスチャ貼り付け
    
            }
    
            // SimpleLambertの設定 lightDir:光方向 atten:影のパラメータ
            half4 LightingSimpleLambert(SurfaceOutput s, half3 lightDir, half atten) {
    
                half NdotL = dot(s.Normal, lightDir); //ライティング計算(表面法線と光方向の内積)
                half4 c;
    
                c.rgb = s.Albedo * _LightColor0.rgb * (NdotL * min((atten + _ShadowColor.rgb), 1) * 1.5); //影に色を付ける
                c.a = s.Alpha;
    
                return c;
            }
            ENDCG
        }
        Fallback "Diffuse"
    }
    

    절차



    그런 다음 Unity에서 처음 만든 머티리얼에 위의 코드를 작성한 셰이더를 적용합니다.
    그런 다음 그림자가있는 물체 (바닥, 벽 등)에 재질을 적용합니다.

    그러면 그림자에 색이 붙습니다. 그림자의 색상도 셰이더 속성에서 설정할 수 있습니다.

    좋은 웹페이지 즐겨찾기