일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ASW(Application SpaceWarp)
- 작업 집합
- Specular
- Cartoon Rendering
- 가상 바이트
- Cell Look
- Cell Shader
- 게임 수학
- 개인 바이트
- URP로 변경
- working set
- C언어
- ColorGradingLutPass
- Virtual Byte
- Rim Light
- 3d
- 메모리 누수
- 프로그래밍 기초
- AppSW
- URP
- Three(Two) Tone Shading
- Windows Build
- VR
- OculusMotionVectorPass
- Toon Shader
- 벡터
- Private Bytes
- Today
- Total
WinCNT
URP로 Toon Shader 만들기 -Three(Two) Tone Shading 1- 본문
URP로 Toon Shader 만들기 -Three(Two) Tone Shading 1-
WinCNT_SSS 2023. 2. 2. 11:07이번에는 카툰 렌더링의 필수 요소라고 할 수 있는
Three Tone Shading(혹은 Two Tone Shading)에 대해서 정리해보고자 한다
Three(Two) Tone Shading에 대해서
Three(Two) Tone Shading이란 위의 그림에서 보이듯이 음영을 2~3단계로 나누는 것을 뜻한다
(개인적으로 2D 셀 애니메이션 풍을 쉐이딩에서 가장 필수적인 요소라고 생각함)
레거시 라이팅 모델과 비교하자면 Diffuse에 해당하지만,
음영이 단계적으로 나뉜다는 게 차이점이다
음영을 몇 단계로 나눌지는 정하기 나름이지만 여기서는 3단계를 기준으로 하고자 한다
Three(Two) Tone Shading의 개념
사실 Three(Two) Tone Shading을 구현하기 위한 개념은 단순하다
왼쪽(Diffuse)의 값을 오른쪽으로 바꾸기만 하면 된다
문제는…그 방법이 매우 다양하다는 것이다
Three(Two) Tone Shading 구현 방법들
실제로 이번에 과제하면서 구현한 방법은 아니지만
예전에 배웠거나 조사하다가 알게 된 방법을 간략하게 정리하려고 한다
1. LUT(LookUpTable) 텍스처 사용
룩 업 테이블 텍스처를 이용해서 N dot L의 값을 대응시키는 방법이다
N dot L의 값은 0~1이고, 텍스처의 uv값도 0~1이므로 텍스처로 컨트롤할 수 있다
반대로 LUT이 필수라는 게 단점이기도 하다
2. ceil() 혹은 floor() 함수 사용
float y(float x) {
float ret = ceil(cos(x) * 4.0) / 4.0;
return ret;
}
올림과 내림 함수인 ceil() 혹은 floor() 함수를 이용한 방법
위와 같이 사용하면 단계를 나눌 수 있다
3. step() 혹은 smoothstep() 함수 사용
step() 혹은 smoothstep() 함수를 이용하는 방법
step(x,y)은 x≤y 이면 1을 리턴하고, 그렇지 않으면 0을 리턴하는 함수로
음영의 경계를 컨트롤 할 수 있다
smoothstep() 함수는 step()와 비슷하지만 Hermite보간법으로 경계를 흐리게 해준다
4. (Half)Lambert를 Power와 Feather로 컨트롤하는 방법
이 방법은 Power와 Feather란 프로퍼티 이용해서
(Half)Lambert의 영역과 경계를 컨트롤하는 방법이다
(참고한 우마무스메나 UTS에 사용된 방법도 이쪽으로 추측됨)
💡 참고로 Feather란 포토샵 등에서 선택 영역의 경계를 흐릿하게 만드는 옵션이다
이번에 구현한 것도 이 방법이다
자세한 내용은……분량 문제로 다음 글에 정리하고자 한다;;
참고 사이트
'Unity > URP or Shader 관련' 카테고리의 다른 글
URP로 Toon Shader 만들기 -Specular 1- (0) | 2023.02.09 |
---|---|
URP로 Toon Shader 만들기 -Three(Two) Tone Shading 2- (0) | 2023.02.06 |
URP로 Toon Shader 만들기 -카툰 렌더링에 대해서- (0) | 2023.01.30 |
URP 쉐이더 파일 작성 (0) | 2023.01.23 |
URP의 쉐이더 그래프 에디터의 구성 (0) | 2023.01.19 |