📒다양한 라이팅 연산 방법
[다양한 라이팅 연산 방법]

- Gouraud shading: 정점에서 라이팅 연산하는 방법
- Pong shading: 픽셀단위로 라이팅 연산하는 방법
📌Gouraud shading
: Vtx에서 광원 연산 후 PS에서 보간값 사용
- 장: 연산량 적음
- 초창기 그래픽스에서 사용하던 방식
- 그러나 현재 컴퓨터에선 이정도 연산량 큰 차이 없음
- 단: 어색함
- 버텍스의 연산 결과를 보간한 값이므로,
- 이를 평면에 발라 구체를 만들면 어색함
📌Pong shading
: 각 픽셀의 Normal을 보간해 픽셀마다 광원 연산
- 보간된 Normal로 각 픽셀마다 적절한 Lighting 연산 가능
📒Light Reflection
: 반사된 빛이 카메라를 향하면 더 밝아 보임
📌반사벡터 유도

R = P + 2N(-P·N)
반사벡터 = 입사벡터 + 2표면벡터(-입사벡터·표면벡터)
📌좌표계
: View space 사용
- 반사광 연산은 카메라 정보를 얻어 사용해야 함
- 카메라 정보 :
- view matrix에서 얻어 사용 가능
- 좌표계를 view space로 둔다면 카메라와 관련한 연산 용이
📌반사광 연산
-
반사된 빛의 크기
- Reflection Vector와 Camera의 Eye vector 간 각도 연산
- 내적:
- 두 벡터가 반대방향으로 교차할 때 반사된 값이 최대
- (라이팅 연산처럼) cos 사용하기 위해 내적
- 반대방향 교차이므로 한 벡터는 뒤집어줘야 함
-
그래프 보정
- cos의 문제: 그래프가 완만함 (로그그래프처럼 급격히 꺾여야 함)
- 내적 결과값을 pow해서 그래프 곡선 조절
- cos 그래프

- 로그그래프

-
연산 결과 빛처리
- 결과값 * reflection scale(설정한 반사값)
- 오브젝트 값이 아닌 라이트값만 영향을 받아야 함
References.
[1] Reflection Vector derivation: https://novemberfirst.tistory.com/112