모바일 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 편집 가능

Game Dev – Voxel 편집 기능 추가

최근까진 자잘한 UI기능을 추가하느라 시간을 보냈다.서버 연결을 위한 UI가 필요했는데 콘솔만으로는 내가 너무 불편해서 버틸수가 없었다. 그래서 그쪽 작업을 하느라 편집기능 추가가 계속 늦어졌다. 이 프로젝트에선 개별 복셀들을 바로 트리구조에 넣는 대신, 최대 16x16x16개의 복셀을 가지는 오브젝트들로 구성한다. 오브젝트 안에서는 복셀들을 Octree구조로 가지고 있다.그리고 이 오브젝트들은 월드상에서 KD-Tree로 관리된다. 이렇게 한 이유는…마인크래프트 같은걸 만들려던게 아니고 … More Game Dev – Voxel 편집 기능 추가

Win 10 Insider Preview에서 DirectX Debug layer를 사용할 수 없을때

Windows 10 Insider Preview사용시 OS빌드버전과 설치된 SDK버전이 일치하지 않으면 DirectX Debug Layer를 사용할 수 없다. 이때 다음의 feature를 추가하면 Debug Layer를 사용할 수 있다. Settings ->System->App&Feature->Manage optional features->Add feature에서 Graphics Tools를 설치 리부팅이 필요한진 모르겠는데(난 리부팅했음) 이후로는 D3D12GetDebugInterface()함수가 정상적으로 리턴. debug layer사용이 가능함.  

UWP Development For XBOX ONE

으..드뎌 개발중인 게임데모를 XBOX ONE에도 올렸다. 이전에 포스팅했다시피 현재 XBOX ONE의 UWP 환경에선 DirectX Feature Level이 10.0까지만 지원된다. 칩 사양이 원래 그렇게밖에 안되는건지 아직 개발 환경이 미완성이라 그런지 모르겠다. 어쨌든 내가 만든 엔진은 DX11/12엔진이고 최소한 Feature Level 11을 요구한다. 일단 현재 Feature Level 11을 사용하는 기능은 Compute Shader를 이용한 Hi-Z Occlusion Culling과 일부 쉐이더 코드들이다. … More UWP Development For XBOX ONE

Game Dev – 다양한 사이즈의 복셀 지원 및 컬러 팔레트 구현

날이 더워지니 작업이 점점 더뎌진다. 그래도 꾸역꾸역 작업을 진행시켜나가고 있다. 처음엔 10cm길이의 정방형 복셀만을 사용해서 파괴 가능한 조밀한 지형지물에만 사용하려 했다. 그렇지만..음 역시 이 데모-혹은 게임을 완성했을때 2명 이상이 동시에 접속해서 pvp를 즐길거라고는 전혀 생각이 들지 않는다. 그래서 마인크래프트처럼 뭔가 만들 수 있는 기능을 우선 넣기로 했다. 그러자면 10cm짜리 복셀은 뭔가를 만들어내기 위한 블럭으로 사용하기엔 … More Game Dev – 다양한 사이즈의 복셀 지원 및 컬러 팔레트 구현

XBOX에서의 UWP앱 개발 관련 정보 몇 가지.

1.DirectX Feature Level 10.0까지만 지원됨. 이건 하드웨어 쿼리니까 소프트웨어의 문제가 아니다. GPU사양의 문제다. 그렇다면 XDK게임들도 Feature Level 10.0으로 개발했단 얘긴데…실제 칩사양 아시는 분? 그러니까 UWP on XBOX에서 DirectX 12 디바이스를 생성하려고 하면 항상 실패하는데 왜 실패하는지 이유를 알게 된 것이다. 처음엔 XBOX용 Windows 10에서 DX12가 미구현이라고 생각했는데 그게 아니다. DirectX12를 돌리기 위한 최소 Feature Level이 … More XBOX에서의 UWP앱 개발 관련 정보 몇 가지.

DX11과 DX12의 성능차에 대한 잡설

DX12에서 CPU에서 처리하는 시간을 줄인건 명백한 사실이다. 그런데 DX12로 짜면 GPU큐를 꽉 채우기가 진짜 힘들다. DX12로 포팅한 게임이 성능이 안나오는건 GPU와 게임이 DX12를 제대로 지원을 안해서가 아니고 GPU가 놀게 되는게 문제다. 궁금한 사람들은 GPU-Z라도 띄워서 DX12용 게임을 플레이할때 GPU점유율이 몇%나 나오는지 확인해보라. DX11과 비슷하거나 성능이 조금 더 안나오는 게임이라면 GPU점유율이 11에 비해서 12일때 더 떨어진다. … More DX11과 DX12의 성능차에 대한 잡설

GameDev – win32버전과 UWP버전의 네트워크 플레이

기존 win32 Crypto API로 작성했던 계정이랑 패스워드 암호화 코드땜에 UWP버전의 네트워크 처리가 계속 지연되고 있었다. UWP아니 WinRT의 AsymmetricKeyAlgorithmProvider 를 이용해서 Desktop과 UWP공용 암호/복호화 코드를 짰다. 일부 WInRT(UWP) API들은 데스크탑 어플리케이션에서도 사용할 수 있는데 다행히도 AsymmetricKeyAlgorithmProvider는 Windows 8데스크탑부터 사용할 수 있다. 각각 win32 DLL과 UWP DLL로 만들어서 DLL로 만들어서 서버(Windows Server 2012R2) , win32 클라이언트(Windows 10) … More GameDev – win32버전과 UWP버전의 네트워크 플레이

GameDev-UWP와 Desktop버전 동시 지원

예전에도 포스팅한적이 있는데 나는 지금껏 작업해온 엔진을 UWP용으로도 유지하고 있었다. 아니 정확히는 유지는 잘 못했다. 작년 12월 이후로는 유지보수를 못하고 있었다. 데스크탑 버전의 경우 12월부터 지금까지 DX12를 지원하는데 대부분의 시간을 보냈다. 그런데 DX12를 지원하면서 DX11버전도 사실 많이 바뀌었다. DX12와 인터페이스를 맞춰야하다보니 그리 된것도 있고 이번 게임데모 프로젝트를 위해서 렌더러 외의 모듈에도 기능추가가 있었기 때문에 많은 … More GameDev-UWP와 Desktop버전 동시 지원