【Unity】Shader:リムライト
目次
リムライトって何?
逆光時に輪郭部分が光るアレ。
動作確認環境
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に割り当てるとそれっぽく光ります。