【Unity】Shader:リムライト

DEVELOP, Unity

リムライトって何?

逆光時に輪郭部分が光るアレ。

動作確認環境

Unityバージョン 5.3.1f1

サンプルコード

Shader "Custom/Rim" {
    Properties{
        _DiffuseColor("Diffuse Color", Color) = (1.0, 1.0, 1.0)
        _RimColor("Rim Color", Color) = (0.26,0.19,0.16,0.0)
        _RimWidth("Rim Width", Range(0.5, 8.0)) = 3
    }
    SubShader {
        Tags { "RenderType"="Opaque" }
        CGPROGRAM
        #pragma surface surf Lambert
        // シェーダモデルを指定
        #pragma target 3.0
        struct Input {
            float3 viewDir;
        };
        float4 _DiffuseColor;
        float4 _RimColor;
        float _RimWidth;
        void surf (Input IN, inout SurfaceOutput o) {
            o.Albedo = _DiffuseColor;
            half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
            o.Emission = _RimColor.rgb * pow(rim, _RimWidth);
        }
        ENDCG
    }
    FallBack "Diffuse"
}

このシェーダーマテリアルを、Sphereに割り当てるとそれっぽく光ります。

Posted by kazupon