https://www.youtube.com/watch?v=6Vu0QU5z9oA
DirectX12 기반으로 C++을 사용해 제작된 프로젝트이다.
구현 내용은 다음과 같다.
| 지형 | Height Map을 불러와 지형을 생성하고 해당 텍스처에 저장된 높이 값에 따라 다른 텍스처가 매핑되도록 총 3장의 디테일 텍스처를 사용하였다. |
| 빌보드 | Height Map을 기반으로 생성된 Object Map 파일을 통해 어느 위치에 어떤 오브젝트가 있어야 하는지 판단하여 빌보드 텍스처로 나무, 꽃 등을 그렸다. 약 17000개의 빌보드를 그렸기 때문에 프레임이 3FPS까지 떨어져 빌보드 인스턴싱을 구현하여(빌보드는 모두 같은 사각형 메쉬여서 가능하다.) 프레임을 144FPS가 평균적으로 나오도록 개선하였다. |
| 물 | 블렌딩으로 물을 구현하고, Grid Mesh로 물을 표현하여 정점 셰이더에서 y값을 변하게 하여 출렁이는 물을 구현하였다. |
| 동적 큐브 매핑 | 중점에서 6방향(상하좌우전후)으로 카메라를 바라보게해 해당 장면을 렌더링하고, 그렇게 렌더링된 6개의 텍스처를 구에다가 매핑하였다. |
| 스트림 출력 파티클 (Stream Output) |
스트림 출력 단계를 통해 각 파티클의 위치, 생명 주기 등을 연산하여 화면에 파티클을 렌더링했다. |
| 미니맵 | 뷰포트를 통해 카메라가 현재 플레이어 위치 수직 위에서 렌더링한 결과를 좌측 상단에 렌더링하였다. |
| D2D | D3D11On12를 사용하여 Direct 2D의 함수와 텍스트 렌더러 등의 기능을 이용해 간단한 UI를 제작했다. |
| 외곽선 | 객체를 두번 렌더링(하나는 크게)하여 외곽선을 생성하였는데, 프레임이 전보다 떨어져 라플라시안 엣지 등을 이용하는 것이 좋을 것 같다. |
https://github.com/khsfashi/DirectX12HelicopterGame
GitHub - khsfashi/DirectX12HelicopterGame
Contribute to khsfashi/DirectX12HelicopterGame development by creating an account on GitHub.
github.com