Voxel Horizon 최근까지 진행상황.

Voxel Horizon 최근까지 진행상황.   pure UWP버전 / Desktop Bridge 버전을 똑같은 기능 수준으로 동시 진행중. 게임 컨트롤러만으로 로그인,캐릭터 생성, 기본 플레이 가능. XBOX ONE에서 플레이 가능. 아직은 Windows Phone에서도 플레이 가능. MS Live Account로 로그인 가능. 최소한의 꼭 필요한 UI는 일단 다 맞춰넣었다. 두가지 버전 모두 AppX로 패키징 후 Windows App Certification Kit 테스트 … More Voxel Horizon 최근까지 진행상황.

SW Occlusion Culling 정리

요 근래 계속 붙잡고 있던 SW Occlusion Culling을 거의 마무리 지었다. 물론 오래전에 HW Hierarchical Occlusion Culling을 구현해서 지금까지도 잘 사용하고 있다. SW Occlusion Culling을 만든 이유는 HW Occlusion Culling을 대체하기 위함이 아니다. 전혀 아니다. 이것은 완전히 용도가 다르다. 현재 복셀 월드는 KD-Tree로 공간이 분할되어있다. 그리고 보여지는 오브젝트를 찾아내기 위해 트리를 탐색한다. 이 탐색 과정에서 … More SW Occlusion Culling 정리

Voxel Horizon 게임서버에 NPC를 넣었다.

NPC를 넣었다. Voxel Horizon에서는 기본적인 충돌처리를 ‘타원체 vs 삼각형’ , ‘타원체 vs 타원체’로 충돌처리를 해서 미끄러짐 벡터를 구하는 방식으로 처리하고 있다. 이런 방식에선 NPC가 복셀 사이에 걸려서 제대로 움직이지 못할 가능성이 높다. 그래서 처음부터 NPC는 넣지 않을 생각이었다. 그러나 나 혼자 이 게임을 서비스한다면 분명 서버에 동시접속자 수가 10명도 안될것이다. 혹은 로컬서버로 플레이하고 있다면 틀림 … More Voxel Horizon 게임서버에 NPC를 넣었다.

MS 모바일의 삽질의 역사

2001년인가 2002년인가 Windows XP랑 DirectX 8이 나왔을때 한국에서 MS의 뭔 세미나가 있었다. 아마 장소가 건대였을거다. MS 본사 직원 몇명이 발표를 했고 동시통역이 있었다. 별로 의미있는 얘긴 없었던걸로 기억한다. XP의 fast user switching 짱짱 좋으니 꼭 쓰세요~ 라는 얘기만 줄창 했던거 같다. 그리고 난 먼저 귀가했고 나중에 동료한테 재밌는 얘기 없었냐고 물어봤다. 누군가가 Windows CE에서 DirectX지원 … More MS 모바일의 삽질의 역사

DX12에서 Shader에 사용할 resource 하나 세팅하려면..

DX12에서 shader에서 쓸 resource(texture, Constant Buffer, RW Buffer등) 하나 만들려면 다음과 같은 작업이 필요하다. 1. Descriptor heap 생성 (Depth Buffer와 Render Target으로 사용하는 경우 각각에 대해 또 따로 만들어야함) 2. D3DResource생성 3. Descriptor Heap으로 부터 descriptor할당 4. D3DResource로부터 descriptor의 내용 업데이트.(gpu측 억세스 정보를 descriptor에 write) 5. Shader Reosurce View, Constant Buffer View , Unordered Access … More DX12에서 Shader에 사용할 resource 하나 세팅하려면..

SSAO적용.

SSAO적용. 아직 손볼곳이 많지만 대충 구현은 완료. 현재 directional라이트만 적용했더니 복셀이 너무 밋밋해 보여서 SSAO를 넣었다. 확실히 복셀 오브젝트에선 SSAO가 있는 편이 나은것 같다. 캐릭터에선 빼는게 좋겠고. Compute Shader로 구현했는데 덕택에 UWP on XBOX버전엔 당장은 적용 못한다. UWP on XBOX에선 DX Feature Level 10까지만 지원하니까 Compute Shader를 쓸 수 없다. Pixel Shader버전으로 다시 짜줘야하는데 귀찮네. … More SSAO적용.

CUDA / Compute Shader / HW대응관계

게임엔진에서 사용할 DirectX Compute Shader 코드 짜다가 생각나서 간단하게 정리 해봤다. DirectX 기반 게임에서 그래픽스 처리 등을 위해서 사용할거면 당연히 Compute Shader를 사용하는게 맞다. 단 GPGPU자체만으로 놓고 볼때는 CUDA가 성능면에서나 사용범위 면에서나 압도적으로 우월하다. 초심자들이 thread,block,shared memory에서 헷갈려 하는데 다행히 CUDA나 Compute Shader는 (하드웨어에 대응되는 개념이다보니) 이 부분은 사실살 똑같다. CUDA Compute Shader 대응 H/W … More CUDA / Compute Shader / HW대응관계

Hi-Z Occlusion Culling vs D3DQuery Occlusion Culling

HW Occlusion Culling을 써야할 상황이라면…명백하게 D3DQuery보다 Hi-Z Occlusion Culling이 빠르다. 다만 Hi-Z Occlusion Culling보다는 D3DQuery쪽이 더 정밀하게 culling할 수 있다. 일반적으로 카메라가 변경되거나 오브젝트의 배치가 변경될때만 Occlusion Culling을 한다. 당연히 카메라가 고정된 상태에선 Hi-Z는 D3DQuery든 쓸 수 있는 culling은 다 쓰는게 프레임 레이트가 잘 나온다. 문제는 주인공 캐릭터가 움직이거나 해서 카메라가 변경될때인데 이 경우 Hi-Z … More Hi-Z Occlusion Culling vs D3DQuery Occlusion Culling

가려진 오브젝트 culling 아이디어

예전에 BSP Tree + ROOM/PORTAL방식으로 만들었던 게임에 전용 맵툴 없이 자동화된 방법으로 culling을 적용할 방법을 생각해봤다. Occlusion Culling은 GPU로 하는게 무조건 빠르지만 무조건 HW Occlusion Culling에 의존하면 occluder와 occludee를 그릴때 오브젝트 개수를 컨트롤할수가 없다.일단 GPU로 넘어가면야 빠르겠지만 그 과정도 상당히 길다. 그래서 CPU단에서 어느 정도는 컬링이 된 상태로 HW Occlusion culling을 시도해야한다. 그런 차원에서 트리를 … More 가려진 오브젝트 culling 아이디어

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 Voxel Horizon 현재까지 진행상황