HoloLens 개발메모 #7

“이미지 떨림을 줄이기 위해 60프레임을 유지하라.” 이게 문서에서 계속 강조하는 내용이다. 그런데 아무리 봐도 불가능해보인다. DirectX런타임이 데스크탑 OS와 다른것인가? 에뮬레이터에서의 렌더링 속도도 느리다. 실제 HoloLens 디바이스는 에뮬레이터보다 더 느리다. 현재 디버그 빌드 기준으로 캐릭터 선택 화면에서 9프레임 정도 나온다. 같은 상황 PC버전은 1500프레임 정도 나온다. GPU성능이 나쁘다고는 예상하고 있었지만 너무 차이가 많이 난다. 뭐가 문제인지 … More HoloLens 개발메모 #7

HoloLens 개발메모 #6

HoloLens의 카메라를 다루는 방법에 대해서 약간 감을 잡았다고 생각했다. 이제 뭘 어떻게 해야할지 알겠다…라고 생각하고 앞으로 어떻게 진행할지 계획을 잡았다. 그런데 현재 프레임 레이트가 너무 안나온다. 이상할 정도로 안나온다. 문서에 보면 60FPS를 유지하라고 나와있지만 현재 이미지만 띄우는 타이틀 화면에서조차 30프레임이 안나온다. 에뮬레이터쪽이 성능이 더 나오긴 한다. 하지만 에뮬레이터에서도 60프레임은 안나온다. 같은 상황 데스크탑에선 400프레임을 넘기고 … More HoloLens 개발메모 #6

HoloLens 개발메모#5

1. 프로젝트 구성에 대한 조언 UWP나 기타 모바일 플랫폼도 마찬가지인데 VR이나 AR개발을 할때 정말정말 중요한 것. ‘반드시 데스크탑에서 돌아가는 베이스 프로젝트를 유지할것.’ 실제 개발은 데스크탑 버전으로 하고 모바일이나 VR버전은 문제가 없는지 검증하기 위해 존재하는 정도여야 한다; 소프트웨어의 품질에 있어 가장 큰 영향을 주는 것은 [코드수정->테스트->디버깅] 의 이터레이션의 빈도에 달려있다. 디버깅하기 어려운 환경에선 소프트웨어 품질이 떨어질수밖에 … More HoloLens 개발메모#5

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

I created a library that controls the Surface Dial in C ++.

I created a library that controls the Surface Dial in C ++. It supports both Desktop App and UWP App. https://github.com/megayuchi/RadialController Of course, I know that few people develop UWP apps in C ++. I would like to help people who develop both UWP and Desktop apps in C ++ like me. The library for … More I created a library that controls the Surface Dial in C ++.