HoloLens 개발메모 #4

오늘 적을 내용은 많지 않다. 하지만 디버깅(코드작성이 아닌)에는 정말 많은 시간이 들어갔다. 영상도 찍은 김에 짤막한 내용이라도 적는다. 1. Holographic API는 기본적으로 왼쪽/오른쪽 눈에 대한 view-projection matrix를 넘겨준다. 내 엔진은 왼손 좌표 기준인데, 이 매트릭스들은 빌어먹을 오른손 좌표계 기준이다. 일단 화면을 보는게 급했기 때문에 view matrix로부터 eye position, eye direction, up벡터를 추출해서 왼손좌표계 기준으로 view … More HoloLens 개발메모 #4

HoloLens 개발메모 #3

1. HoloLens는 Render Target Array를 사용한다. 그래서 Deferred 쉐이딩을 비롯 모든 종류의 오브젝트를 렌더링할때 Render Target Array를 사용하도록 엄청나게 뜯어고쳤다. 싸그리 다 고치고 예전에 만들었던 게임까지 무사히 작동하는지 확인했다. 시간 꽤 걸렸다. 그리고 양쪽 눈에 해당하는 view-proj matrix L-R에 대해서 matrix를 던져줄 수 있도록 함수를 하나 열어놨다. 2. Ok. 이제 HoloLens에서 view-proj 매트릭스만 받아오면 된다. … More HoloLens 개발메모 #3

HoloLens 개발 메모 #1

Voxel-Horizon을 HoloLens로 돌리기 위해 엔진을 포팅중이다. 작업하면서 기록으로 남겨두고 싶은 내용들을 정리해둔다. 1. 기존 VR환경과 비슷한점. 왼쪽 오른쪽 눈에 대해서 각각의 view/projection matrix와 파라미터를 제공한다. Oculus나 HoloLens나 양안에 대한 View/Projection Matrix를 얻어서 왼쪽 오른쪽 각각의 버퍼에 대해서 렌더링 해주면 일단 입체영상을 사용자에게 보여줄 수 있다. 그 점은 기본적으로 같다. 2. 기존 VR환경과 다른점. – Draw … More HoloLens 개발 메모 #1

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 관련 오늘의 교훈.

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

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

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

GameDev-UWP와 Desktop버전 동시 지원

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

DX12 비동기 쉐이더 논쟁

게임, 하드웨어 관련 모사이트들에서 비동기쉐이더 어쩌고 N사 GPU를 가루가 되도록 까고 있길래 뭔 소린가 찾아봤다. 일단 용어와 구현을 전혀 이해하지자기들이 뭔말하는지 모르고 떠들고 있다. 비동기 쉐이더란 용어는 AMD가 사용하는 용어이다. NVIDIA GPU의 비동기처리는 CUDA에서 이미 하고 있다. DX12에서도 그 용어를 사용하지 않는다. 그리고 그들이 말하는 소위 비동기 쉐이더란걸 DX12에서 적극 활용하려면 CommandQueue를 여러개 써야한다. CommandQueue안의 … More DX12 비동기 쉐이더 논쟁