Game Dev – Voxel Horizon 현재까지 진행상황

Voxel Horizon 프로젝트 현재까지 구현된 기능들. 구성요소 Game Server (C++, win32) Certification Server (C++ , win32) MSSQL Client (C/C++ , win32/UWP , DirectX11/12) 구현된 기능목록  기본적인 지형편집 가능. 복셀 오브젝트 생성 복셀 오브젝트 디테일 조정 1×1 – 8×8까지 복셀 추가 복셀 삭제 복셀 컬러 변경 실시간 라이트 갱신 CPU를 이용한 실시간 라이트맵 생성 복셀의 삭제/추가에 … More Game Dev – Voxel Horizon 현재까지 진행상황

DX11 vs DX12 리소스 사용량

어쩐지 무겁더라… Voxel Horizon의 DX12버전을 작업하던중 너무 무겁다고 생각했다. Project D Online의 dx12버전은 dx11버전에 비해 50%만(?) 메모리(GPU/GPU Mapped System Memory)를 더 먹었지만 Voxel Horizon프로젝트에선 8배를 더 처먹는다! Voxel Horizon은 정해진 맵데이터가 없는 대신 최대 8x8x8개의 복셀로 이루어진 수만개의 복셀 오브젝트가 존재한다. 복셀 오브젝트 한개당 Vertex Buffer 1개, Index Buffer 2개, Texture 1개를 만드는데 얘네들이 64KB얼라인이 … More DX11 vs DX12 리소스 사용량

Game Dev – Voxel Horizon 개발 근황

이전에는 GPU에서 라이트 계산과 그림자처리를 했었는데 CPU에서 하는걸로 바꿨다. 복셀 오브젝트가 2만개가 넘어가니 컬링을 해도 복셀 데이터를 Shadow Map에 그리는 시간을 무시할 수 없다. 쉐도우맵 스타일의 그림자가 크게 어울리는것도 아니고 해서 CPU기반으로 바꿨다. KD-Tree traversal로 복셀 최소단위 50x50cm 한 면씩 라이트/그림자 처리를 수행한다. 멀티스레드로 처리하고 한방에 맵 전체를 처리하거나 중간중간 복셀 데이터의 변동분에 대해서 최대 … More Game Dev – Voxel Horizon 개발 근황

간만에 DX11 vs DX12 관련 잡설

DX12엔진 작업하느라 DX11엔진은 한동안 방치상태였는데 요 근래 Hololens 작업하면서 DX11엔진을 집중적으로 뜯어고쳤다. 그 와중에 약간의 최적화도 이루어졌고 기능도 추가됐다. DX11엔진의 변경분을 DX12엔진에 반영하면서 HLSL Shader코드를 똑같이 맞췄다. DX12에서 특별한 기능 추가된게 거의 없기 때문에 일반적으로 쉐이더코드는 그냥 공유한다. MS샘플도 그렇게 되어있다. 나도 최대한 공유하고 싶었다. 하지만 DX12엔진 작업할때 Constant Buffer 메모리 관리가 워낙 빡세서 이걸 좀 … More 간만에 DX11 vs DX12 관련 잡설

HoloLens 개발메모 #7

“이미지 떨림을 줄이기 위해 60프레임을 유지하라.” 이게 문서에서 계속 강조하는 내용이다. 그런데 아무리 봐도 불가능해보인다. DirectX런타임이 데스크탑 OS와 다른것인가? 에뮬레이터에서의 렌더링 속도도 느리다. 실제 HoloLens 디바이스는 에뮬레이터보다 더 느리다. 현재 디버그 빌드 기준으로 캐릭터 선택 화면에서 9프레임 정도 나온다. 같은 상황 PC버전은 1500프레임 정도 나온다. GPU성능이 나쁘다고는 예상하고 있었지만 너무 차이가 많이 난다. 뭐가 문제인지 … More HoloLens 개발메모 #7

HoloLens 개발메모 #6

HoloLens의 카메라를 다루는 방법에 대해서 약간 감을 잡았다고 생각했다. 이제 뭘 어떻게 해야할지 알겠다…라고 생각하고 앞으로 어떻게 진행할지 계획을 잡았다. 그런데 현재 프레임 레이트가 너무 안나온다. 이상할 정도로 안나온다. 문서에 보면 60FPS를 유지하라고 나와있지만 현재 이미지만 띄우는 타이틀 화면에서조차 30프레임이 안나온다. 에뮬레이터쪽이 성능이 더 나오긴 한다. 하지만 에뮬레이터에서도 60프레임은 안나온다. 같은 상황 데스크탑에선 400프레임을 넘기고 … More HoloLens 개발메모 #6