Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- String
- github
- 재귀
- UE5
- Material
- 파이썬
- 백준
- 기초
- DP
- Class
- Algorithm
- Unity
- loop
- guide
- Unreal Engine 5
- Programming
- W3Schools
- c++
- python
- 오류
- Tutorial
- parameter
- Basic
- 시작해요 언리얼 2022
- 프로그래밍
- 문제풀이
- dynamic
- w3school
- dfs
- C#
Archives
- Today
- Total
행복한 개구리
Unity Shader 21.05.07. 수업내용 - 빛효과 단계별 적용 본문



빛 효과를 그라데이션이 아닌 데셍처럼 적용을 시켜 뚜렷하게 만드는 코드이다.

if문을 사용하여 나누어도 되지만 그러면 코드양이 너무 많아지기때문에 ceil을 사용하는 것을 권장한다.
ndotl에 곱해지는 수나 ceil(ndotl)을 나누는 값이 커질수록 그라데이션에 가깝게 출력된다.
위에서 오른쪽 사진은 외곽선이 존재하는데, 이 전에 했던 내용 그대로 적용했다.

1pack은 이렇게 vertex를 사용하여 외곽선을 표현하고 색깔은 지정값을 부여했다.

ceil은 소숫점처리를 해주는 CG의 기능이다.
============================================================================

1pack을 쓰고도 외곽선을 잡는게 가능하다.

rim의 반전을 이용하듯이 rim이 일정수치 이하로 내려갈 시 외곽선을 지정하여 외곽선을 만들 수 있다.
게다가 rim은 표면벡터와 시선벡터의 내각이기때문에 가능하다. 하지만 2pack으로 만든 것보다는 조금 허술한 느낌은 확실히 든다.

외곽선이 조금 각져있는 모양을 띈다.
Shader "Custom/Toon3"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Toon noambient
sampler2D _MainTex;
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
float4 LightingToon(SurfaceOutput s, float3 lightDir, float3 viewDir, float atten)
{
float ndotl = dot(s.Normal, lightDir) * 0.5 + 0.5;
//half-Lambert
ndotl *= 10;
ndotl = ceil(ndotl)/10;
//rim
float rim = abs(dot(s.Normal, viewDir));
if(rim > 0.2)
{
rim = 1;
}
else
{
rim = -1;
}
//half-Vector
float3 hVec = normalize(lightDir + viewDir);
float spec = dot(hVec, s.Normal);
float4 final;
final.rgb = s.Albedo * rim;
final.a = s.Alpha;
return final;
}
ENDCG
}
FallBack "Diffuse"
}
============================================================================




============================================================================
'Unity > 수업내용' 카테고리의 다른 글
Unity Shader 21.05.07. 수업내용 - Cube Map (0) | 2021.05.07 |
---|---|
Unity Shader 21.05.07. 수업내용 - Wraped Diffuse (0) | 2021.05.07 |
Unity Shader 21.05.07. 수업내용 - 외곽선 적용 (0) | 2021.05.07 |
Unity Shader 21.05.06. - BlinnPhong HalfVector (0) | 2021.05.06 |
Unity Shader 21.05.06. - Hologram (0) | 2021.05.06 |