“이미지 떨림을 줄이기 위해 60프레임을 유지하라.” 이게 문서에서 계속 강조하는 내용이다. 그런데 아무리 봐도 불가능해보인다.
DirectX런타임이 데스크탑 OS와 다른것인가? 에뮬레이터에서의 렌더링 속도도 느리다.
실제 HoloLens 디바이스는 에뮬레이터보다 더 느리다.
현재 디버그 빌드 기준으로 캐릭터 선택 화면에서 9프레임 정도 나온다.
같은 상황 PC버전은 1500프레임 정도 나온다.
GPU성능이 나쁘다고는 예상하고 있었지만 너무 차이가 많이 난다.
뭐가 문제인지 반나절 정도 조사를 해봤다.
일단 내 코드엔 문제가 없다고 결론 지었다.
타이틀 화면에서 이미지 한장과 텍스트만을 출력하는데도 30FPS를 겨우 넘긴다.
텍스트 렌더링을 빼니 에뮬레이터에선 60FPS에 도달했다.
Outline검출과 Glow효과를 주기 위한 Post-Effect처리를 빼니 캐릭터를 출력할때 거의 60FPS에 도달했다. 물론 에뮬레이터에서의 얘기다.
실제 HoloLens디바이스에 돌려보니 30FPS이다. VSync때문에 30FPS가 되었을것이고 실제로는 30-59 사이일것이다.
현재 이 하드웨어 스펙이라면 HoloLens에서 복잡한 렌더링을 해서는 안된다.
성능 문제에 대해선 하루 정도만 더 고민해봐야겠다. 어차피 현재 프로토타입이기 때문에 현재 성능에 맞춘 것을 개발할 생각은 없다.
데모영상을 찍었다. 일단 30FPS만 되어도 떨림이 확연히 줄어든다.
데모에서는 키보드/마우스 입력은 너무 불편하기 때문에 XBOX 컨트롤러를 사용한다.