Notice
Recent Posts
Recent Comments
Link
스토리지
[5.6] Rim Light - 역광 본문
Unity의 역광은 프레넬 방정식을 이용하였다.
ko.wikipedia.org/wiki/%ED%94%84%EB%A0%88%EB%84%AC_%EB%B0%A9%EC%A0%95%EC%8B%9D
프레넬 방정식 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 프레넬 방정식(Fresnel equations) 또는 프레넬 공식(Fresnel's formulas)은 반사계수와 투과계수에 관한것으로 한 매질과 광학적 특성 즉, 굴절률이 다른 매질의 계면에
ko.wikipedia.org
프레넬 방정식(Fresnel equations) 또는 프레넬 공식(Fresnel's formulas)은 반사계수와 투과계수에 관한것으로 한 매질과 광학적 특성 즉, 굴절률이 다른 매질의 계면에서 반사 또는 투과 진폭을 입사진폭으로 나눈 값을 말한다.
Shader "Custom/Test"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Lambert noambient
sampler2D _MainTex;
struct Input
{
float2 uv_MainTex;
float3 viewDir; //바라보는 방향, View Vector, Camera Vector
};
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = 0;
float rim = dot(IN.viewDir, o.Normal);
o.Emission = pow(1 - rim, 2);
}
ENDCG
}
FallBack "Diffuse"
}
- rim이라는 변수를 선언하고 카메라가 보는 방향과 표면 벡터의 내적값을 구한다.
- 내적값을 Emission 속성에 넣는다.
- 1배일때 연하기 때문에 제곱을 해준다.
역광의 색상 추가 및 강도 조절
Shader "Custom/Test"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_RimColor ("Color", Color) = (1,1,1,1)
_RimPower ("Rim Power", Range(1,10)) = 1
_BumpTex ("Albedo (RGB)", 2D) = "bump" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Lambert noambient
sampler2D _MainTex;
sampler2D _BumpTex;
float4 _RimColor;
float _RimPower;
struct Input
{
float2 uv_MainTex;
float2 uv_BumpTex;
float3 viewDir; //바라보는 방향, View Vector, Camera Vector
};
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
fixed4 n = tex2D (_BumpTex, IN.uv_BumpTex);
o.Albedo = c.rgb;
o.Normal = UnpackNormal(n);
float rim = saturate(dot(o.Normal, IN.viewDir));
o.Emission = pow(1 - rim, _RimPower) * _RimColor.rgb;
}
ENDCG
}
FallBack "Diffuse"
}
'Unity > Shader' 카테고리의 다른 글
[5.6] 홀로그램 2 (0) | 2021.05.06 |
---|---|
[5.6] 홀로그램 만들기 (0) | 2021.05.06 |
[5.6] Light 연산 연습 (0) | 2021.05.06 |
[5.6] Light 연산 정리 (0) | 2021.05.06 |
[5.6] Light 연산 (Lambert, Half-Lambert) (0) | 2021.05.06 |
Comments