본문 바로가기
게임 개발/[D3D_Portfolio] DirectX3D 팀 포트폴리오 작업일지

2. Deferred Rendering 구현 및 Blinn Phong 적용

by 헛둘이 2023. 7. 16.

Deferred Rendering 구현

- 이전 2D 포트폴리오에서 Deferred Rendering을 구현한 적이 있어서 그런지 어렵지 않게 구현했다.

- 밑바닥부터 다시 구현하다보니 추가해야 하는 클래스들도 많고 값을 누락하는 경우들도 있었는데 디버깅을 통해 어느 부분이 잘못된 부분인지 구별하는 것은 크게 어렵지 않았다.

- 문제는 Directional Light는 정상 작동하는데 Point Light와 Spot Light는 제대로 작동하지 않는 것이었다...

- Point Light와 Spot Light는 물체의 위치를 기반으로 그리는데 위치 값을 G-Buffer의 Position 텍스쳐로부터 읽어와야 했다.

- 결과적으로 빛의 Position이 잘못 전달되고 있었다는 것을 캐치했고 실제로 해당 부분의 구현이 문제가 있었다.

- 이 부분을 수정하니 말끔히 해결되었다.

 

Blinn Phong 적용

- Blinn Phong 기법은 Phong 기법에 비해 성능적으로 이점이 있는 기법이다.

- Blinn Phong 모델과 Phong 모델의 차이점은 정반사광 (Specular)을 구하는 연산에서 차이가 있다.

출처: https://blog.kakaocdn.net/dn/PBdk9/btqLble82yW/ae8JKWxCo5QMfXiYI8dFy1/img.png

- Blinn Phong 모델은 기존 Reflection 벡터를 사용하는 Phong 모델과 달리 Halfway 벡터를 사용한다.

- Halfway 벡터는 L + V/|L + V|로 쉽게 구할 수 있기 때문이다.

- 기존 Phong 모델의 반사 벡터를 구하는 것보다 비용이 저렴하기 때문에 성능 상 이점이 있다.

 

내일 할 일

- 프로젝트 리소스 정리

- 파티클 시스템, 컴퓨트 셰이더를 이용한 라이팅 구현

 

댓글