HoloLens 개발메모 #4

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

2013년의 어느날 디버깅 메모(windbg)

2013년 12월 27일 , Project D Online 출시 준비할때였다. 첫번째 보스(벽에서 미사일 쏘는 보스-혼두라 모티브)랑 싸우고 나오면 나와서 맵체인지 할때 게임이 멈추는 증상이 있었다. 멈춘다고 하는것은 플레이어 입장이고 정확하게 얘기하자면 데드락 아니면 무한루프인데 이 경우는 데드락이었다. 데드락은 데드락인데 그게 어플리케이션이 사실상 크래시한거고 크래시에 의한 데드락이었다. 버그 재현도 잘 되지 않아서 엄청나게 절망했었다. 최초 같은 사무실에 … More 2013년의 어느날 디버깅 메모(windbg)

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 개발 메모 #2

Holographic API는 RenderTexture Array를 이용해서 해서 양쪽 눈 각각에 대해 렌더링을 수행한다. 이게 분명히 성능상 이득이 있다. 문제는 이렇게 만들려니 기존 코드를 와장창 갈아엎어야한다. 일단 Holograhic 디바이스에서 사용하는지 아닌지 여부에 따라 shader코드와 렌더링 코드가 달라져야 한다. 기본적으로 HoloLens디바이스는 DX11.3을 준수하므로 Shader의 모든 스테이지에서 SV_RenderTargetArrayIndex를 지정할 수 있다. 하지만 에뮬레이터의 경우 에뮬레이터를 실행하는 PC의 GPU가 스펙을 … More HoloLens 개발 메모 #2

최근3년간 만든것들. 생각나는대로 정리해봄.

최근3년간 만든것들. 생각나는대로 정리해봄. 내가 하는 짓이 얼마나 마이너한 짓인지 확인하고 싶어서 적어봄. CUDA 응용 (Processing collision in Game, Baking Light-map, etc…) – nvidia CUDA SDK + C++ https://doc.co/xKcRcB OneDrivePlayerW81 (OneDrive의 음악파일들의 재생목록 생성/저장/플레이, 백그라운드로 재생목록의 곡들을 다운로드해서 곡 넘어갈때 끊김없이 플레이해줌.) – for Windows 8.1 WinRT: WinRT API + CPP RESET SDK + C++/CX … More 최근3년간 만든것들. 생각나는대로 정리해봄.

HoloLens 개발 메모 #1

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