250x250
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 |
Tags
- 유니티
- 파이널 IK
- c#
- 오류
- 속성
- 애니메이션
- 튜토리얼
- 메모리
- 유니티 그래픽 최적화
- tutorial
- error
- 2판
- 최적화
- unity
- 쓰는 법
- 에러
- 쉐이더
- 리팩토링
- 사용법
- 리깅
- 애님
- NavMesh
- 익명 타입
- 깃허브
- Effective C#
- 프로퍼티
- shader
- 유니티 그래픽스 최적화 스타트업
- github
- Final IK
Archives
- Today
- Total
참치김밥은 최고의 한식이다
[유니티] 쉐이더 기초 : 램버트 라이팅 (Lambert Lighting) 본문
(유니티 외에 쉐이더가 필요한 곳에서 범용적으로 쓰이는 기법임)
Lambert Lighting?
- 월드 노말과 메인 라이트 방향의 반대를 내적(dot)하여 빛을 연산한 것 = ndotl
Half Lambert Lighting
- 내적 연산은 cos으로, 빛을 받는 부분과 못 받는 부분의 차이가 너무 극심해서 어색함
- 따라서, 위에서 구한 램버트 라이팅 값에 *0.5 + 0.5(Magic Number) 를 해주어 차이를 부드럽게 만듬
- 물리적으로 올바른 표현 방법은 아니지만, 보기에 좋아서 많이 씀
- 그런데 하프 램버트만 해주면, 원래 빛을 못 받았을 부분이 실제보다 많이 밝아짐
- → 따라서 보통은 하프 램버트 값을 제곱(pow)하여 사용함. 2-3번하면 자연스러워짐
Magic Number는 *2 - 1 도 있음
이렇게 만든 램버트 라이팅에
- 텍스처 (곱셈)
- 노말맵 (ndotl의 월드 노말을 노말맵(탄젠트공간→월드공간 변환 노드 필요)으로 대체해주면 됨)
- 앰비언트(환경광) (덧셈)
- 앰비언트 오클루젼(AO) (앰비언트에 곱셈)
- 스페큘러
- Shadow casting / attenuation (그림자 드리우기/받기)
를 추가해주면 됨
728x90
'Unity' 카테고리의 다른 글
[유니티] Force Field 쉐이더 만들면서 이해 안갔던 부분 정리 (0) | 2024.02.20 |
---|---|
쉐이더 첫 공부할 때 쓴 문서.. (0) | 2024.02.20 |
[유니티] URP HLSL 행렬 명칭 (0) | 2024.02.20 |
[유니티] 원형 굴절 쉐이더 (0) | 2024.02.20 |
[유니티] 애니메이터 오버라이드 컨트롤러(Animator Override Controller) 란?! (0) | 2024.02.20 |