게임 개발/[D2D_Portfolio] DirectX2D 포트폴리오 작업일지
21. Deferred Rendering 구현
헛둘이
2023. 4. 5. 21:59
Deferred Rendering 구현
- Deferred Rendering은 Position, Normal, Diffuse 등의 값들을 텍스쳐에 한번 저장하고 나중에 그걸 취합해서 화면에 그려내는 방법인데, 이 기법은 Forward 기법에 비해 빛 연산에 대해 강점을 보인다.
- Forward 방식의 빛 연산의 경우 빛 오브젝트의 위치와 범위, 종류 등을 한데 모아서 GPU로 보내주면 GPU에서 각각의 물체를 그릴때 빛 개수만큼의 for문을 돌면서 적용된 부분에 대해 밝기를 더해주는 등의 작업을 해주게 되는데 이렇게 되면 연산량이 물체의 갯수(N번) * 빛의 갯수(M번)가 되어서 연산량이 많아진다.
- Deferred 방식은 위에 언급했던 것처럼 Position, Normal, Diffuse 값을 미리 저장해두기 때문에, Position 값을 이용해서 빛 오브젝트를 화면에 그려줄 때 for문을 돌면서 Position을 참조해서 해당 포지션이 범위에 들어와서 적용이 된다면 빛을 적용시켜준다.
- 결국 물체는 빛에 상관없이 1번씩 그려지고(N번), 나중에 빛 오브젝트의 갯수(M번)만큼 돌면서 연산량은 N+M번으로 줄어들게 된다.
- 내 프로젝트에 이 Deferred Rendering을 적용시킨 이유는 앞으로 있을 빛 연산을 효율적으로 처리하기 위함도 있지만,
가장 큰 이유는 빛을 가진 이펙트들을 자연스럽게 그려내기 위해서 미리 적용하게 되었다.
내일 할 일
- 빛을 가진 이펙트들 적용