SW Occlusion Culling

아직 완전하지는 않지만 엔진에 SW Occlusion Culling기능을 넣었다. 물론 HW Occlusion Culling이 가능하다. Compute Shader를 이용한 HW Occlusion Culling과 D3DQuery를 이용한 HW Occlusion Culling기능도 이미 오래 전에 만들어놨다. 그런데 왜 SW Occlusion Culling기능을 따로 만들었는가..하면 렌더링을 위해 KD-Tree를 탐색하며 뷰프러스텀에 들어가는 복셀 오브젝트들을 탐색한다. 뷰프러스텀에 들어가는 오브젝트만 골라내도 사실 그 수가 적지 않다. 트리 순회 … More SW Occlusion Culling

Object Culling #1

네트워크 플레이의 기본 구조는 제대로 구현했다. 이제 플레이 가능한 속도를 보장할수 있도록 오브젝트 컬링을 위한 작업에 들어갔다. 우선 월드를 KD-Tree로 분할해서 복셀 오브젝트들을 집어넣었다. 뷰프러스텀에 들어가는 오브젝트를 찾을때 상위노드부터 제거하므로 탐색 효율은 확실히 좋아졌다. 하지만 이것만으론 많이 부족하다. 역시 가려진 오브젝트를 그리지 않도록 하는것이 가장 중요하다. 예전에 사용했던 Room/Portal/BSP방식도 이번엔 사용할 수 없다. 지형이 실시간으로 … More Object Culling #1

도장 찍다 망해버려라.

이젠 하드웨어 제조사도 자신들의 제품을 만들때 CPU를 직접 만들지 않는다. 일반적으로 생산되는 CPU를 사용한다. 왜냐하면 직접 CPU를 만들기는 너무나 어렵고 직접 만들어봐야 가격대 성능비가 형편없을게 분명하기 때문이다. 아마 게임엔진을 사 쓰는것도 비슷한 이유겠지. 그렇지만 나는 이 부분에 대해서 완전 동의할 수가 없다. 나 혼자서 언리얼 엔진 정도를 만들순 없겠지만…나 혼자서도 게임을 개발할 수 있는 정도의 … More 도장 찍다 망해버려라.

한국어 블로그 포스팅에 회의를 느낀다.

난 한국이 싫다. 아니 노무현 대통령 시절까지도 한국이 그래도 살만한 나라라고 믿었고 내가 열심히 하면 더 좋아진다고 생각했다. 지금은 그렇게 생각지 않는다. 그렇다고 해외에 나가면 나를 위한 아름다운 세상이 펼쳐져 있을거라고 생각하는것은 더더욱 아니다. 설령 내가 영어를 제법 했다고 해도 말이다. 난 가족과 자주 얼굴을 보고 싶다. 오랜 친구들과 24시간 패스트푸드에서 콜라 마시며 잡담하는게 좋다. … More 한국어 블로그 포스팅에 회의를 느낀다.

Game Dev – XBOX ONE(UWP버전)과 PC의 네트워크 플레이

이전에도 계속 포스팅했다시피 난 이 게임(데모)를 Windows Store를 통해 공개할 생각이다. 따라서 엔진을 개발할때부터 UWP버전을 같이 작업해왔다. 그리고 가능하면 XBOX ONE과 Windows 10 Phone에서도 동일한 게임을 플레이하게 하려고 나름 노력하고 있다. 몇 개월전 MS는 하나의 Store를 강조하며 XBOX ONE에서 UWP App을 돌릴 수 있게 하겠다고 발표했다. 얼마 지나지 않아서 프리뷰지만 XBOX ONE에서 UWP App을 돌릴 … More Game Dev – XBOX ONE(UWP버전)과 PC의 네트워크 플레이

모바일 GPU 관련 오늘의 교훈.

모바일 GPU(Adreno 430)에서 Compute Shader를 호출할때 Group 개수를 0으로 세팅하면 GPU 익셉션 발생. 그 여파로 DirectX Device를 더 이상 사용할 수 없게 된다.(Error:D3DDevice removed). 이건 퀄컴 GPU만의 문제일것도 아닐것이고 DirectX만의 문제도 아닐것이다. 비슷한 케이스의 문제라면 모든 모바일 GPU가 해당되리라 예상한다. Group 개수를 0으로 해서 호출하는건 바보짓이지만 그렇다고 GPU에서 익셉션을 발생시킬 정도의 치명적인 에러는 아니라고 생각하는데. … More 모바일 GPU 관련 오늘의 교훈.

Game Dev – 온라인으로 Voxel 편집 가능

서버에 복셀 편집 기능과 복셀 오브젝트 관리 기능을 넣었다. [클라이언트 A] -> (복셀편집 요청) -> [서버] -> 서버에서 처리 -> 복셀 변경사항 broadcast -> [클라이언트 A,클라이언트 B…] 이런식이다. 로그인 후 맵 전체의 복셀데이터를 한번에 받아올 수는 없다. 너무 양이 많다. 지금 테스트 데이터로는 얼마 안되지만. 그래서 네트워크 브로드캐스팅 단위인 Sector-Grid를 이용한다. 맵 전체는 2차원 그리드로 … More Game Dev – 온라인으로 Voxel 편집 가능