コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】リムエフェクトシェーダを導入する

はじめに

http://www.shaderslab.com/demo-07---rim-effect.html

この記事では上記のサイト様が公開されている
リムエフェクトシェーダを導入する方法を紹介していきます

使用例

f:id:baba_s:20180805233502p:plain

使い方

Shader "Custom/Rim effect" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_RimValue ("Rim value", Range(0, 1)) = 0.5
}
SubShader {
Tags { "RenderType"="Transparent" "Queue"="Transparent" }
CGPROGRAM
#pragma surface surf Lambert alpha
sampler2D _MainTex;
fixed _RimValue;
struct Input {
float2 uv_MainTex;
float3 viewDir;
float3 worldNormal;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
float3 normal = normalize(IN.worldNormal);
float3 dir = normalize(IN.viewDir);
float val = 1 - (abs(dot(dir, normal)));
float rim = val * val * _RimValue;
o.Alpha = c.a * rim;
}
ENDCG
}
FallBack "Diffuse"
}

上記のシェーダファイルを Unity プロジェクトに追加します

f:id:baba_s:20180805233617p:plain

リムエフェクトを使用したいオブジェクトのマテリアルの Shader を
「Custom/Rim effect」に変更します

f:id:baba_s:20180805233713p:plain

マテリアルのパラメータを自由に変更します

f:id:baba_s:20180805233502p:plain

これで、シェーダを使用できます

関連記事