DirectX12/DirectX12 프로젝트

DirectX12 - 터레인, 빌보드 인스턴싱, 동적 큐브 매핑, 스트림 출력 파티클, 그리드 메쉬 등 Sample Project

강목근 2024. 6. 18. 20:11

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