2022. 3. 5. 16:30ㆍUnityShader/수업 과제
스페큘라는 반사광이다.
반사광을 표현하는 공식은 한 가지만 있는게 아니다.
이 포스팅에서 다룰 공식은 Phong, Blinn-Phong 두 가지이다.
그리고 스페큘라의 강도를 인터페이스를 통해 조절하는 것까지 다뤄보겠다.
Phong 구현하기
퐁부터 구현해보자.
퐁 공식은 빛의 입사각과 반사각이 법선과 이루는 각도가 서로 같다는 점을 이용해
빛 방향과 노말값을 이용하여 반사 방향 값을 구한 후,
반사 방향과 카메라 방향의 내적 값으로 정반사률을 구하는 것이다.
반사광이 잘 구현되었다.
퐁 공식의 특징은 반사벡터와 시선벡터를 내적한다는 것이다.
Blinn-Phong 구현하기
이 공식의 특징은 반사벡터를 구하지 않는다는 것이다.
블린 퐁의 원리는 빛 방향과 시선 방향의 중간 벡터를 구하고,
그 중간 벡터와 노말 벡터를 내적해서 스페큘라값을 구한다.
퐁 공식에 비해 가볍고 코드도 단순하다.
퐁과 블린퐁을 적용한 오브젝트.
외적으로 큰 차이는 없는 듯 하다.
인터페이스에서 스페큘라 강도 조절하기
이제는 인터페이스를 통해 값을 입력 받고,
그 값으로 스페큘라의 강도를 조절해보자.
여기에 더해서 스페큘라의 넓이도 조절해보자.
위와 같은 방식으로 값을 입력받고,
그 값을 제곱하는 구문에 넣어주면 된다.
'UnityShader > 수업 과제' 카테고리의 다른 글
림라이트 응용하여 홀로그램 만들기 (0) | 2022.03.06 |
---|