// 림라이트 만들기
// 노말 범프 생성, 림 칼라, 림 굵기
// UV 반사각 생성
// 범프 노말 언팩
// 림 = 닷(노말(U), UV반사(V))
// 색 적용
Shader "Custom/Neckless"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_BumpMap("Normalmap", 2D) = "bump" {}
_NomalPower("NomalPower", Float) = 5
_RimColor ("Rim Color", Color) = (0,,0,0) // 림 컬러 조정
_RimPow ("Rim Power", Range(1, 10)) = 2.5 // 림 굵기 조정
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Lambert noamnient
sampler2D _MainTex;
sampler2D _BumpMap;
float _NomalPower;
float4 _RimColor;
float _RimPow;
struct Input
{
float2 uv_MainTex;
float2 uv_BumpMap;
float3 viewDir;
};
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 main = tex2D (_MainTex, IN.uv_MainTex);
// 노말: 디테일 눈속임
float4 nomal = tex2D (_BumpMap, IN.uv_BumpMap);
float3 normal = UnpackNormal(nomal);
o.Normal = normal; // float3(normal.x * _NomalPower, normal.y * _NomalPower , normal.z);
// 림 라이트 계산
float rim =dot(o.Normal, IN.viewDir);
o.Albedo = main.rgb;
o.Emission = pow(1 - rim, _RimPow) * _RimColor.rgb;
o.Alpha = main.a;
}
ENDCG
}
FallBack "Diffuse"
}
'게임 그래픽 프로그래밍' 카테고리의 다른 글
해골 (0) | 2024.09.07 |
---|---|
바디 (0) | 2024.09.07 |
도끼 (0) | 2024.09.06 |
셰이더: 외곽선에 색, 텍스쳐 넣기 (0) | 2024.09.05 |
셰이더: 2pass 두께, 색 변경 (0) | 2024.09.05 |