Для начала, пару слов о том, почему стабильный FPS (количество кадров в секунду) так важны именно для VR и почему 30 FPS недостаточно для погружения в виртуальную реальность.
Стандарты кино и телевидения в 24/30 FPS, а также игры на консолях, где 30 FPS долгое время был "золотым стандартом" убедили многих, что такого количества кадров в секунду вполне достаточно для комфортной игры. Однако даже 60FPS для VR игр будет недостаточно.
Почему? Всё дело в работе нашего мозга. Не вдаваясь в подробности, есть две большие разницы между игрой на плоском экране и в VR. Если при обычной игре случится просадка FPS, то это лишь вызовет раздражение, но в VR любые фризы разрушают эффект "погружения", могут привести к головным болям и тошноте (так называемый motion sickness).
В VR в первую очередь важна задержка между действием пользователя (поворот головы/рук) и отображенным изменением на экране. Она должна составлять не более 11-22 миллисекунд, что и дает итоговые 45-90 FPS. Причём при снижении FPS ниже 90 у Oculus, его ПО начинает вставлять промежуточные синтезированные кадры (технологии ATW и ASW) для сохранения видимой плавности. У шлемов других производителей также существуют похожие технологии.
Казалось бы, для измерения FPS можно было бы использовать уже известные и часто используемые программы, такие как FRAPS, MSI Afterburner(с Riva Tuner) и подобные, однако специфика VR вносит свои коррективы и такие программы часто могут показывать некорректные значения, либо игра/программа вообще не выводит окно на рабочий стол, где можно было бы увидеть результаты, да и не очень удобно их так смотреть, постоянно переключаясь между шлемом и монитором.
Использование инструментов Oculus Debug Tool
Для шлемов Oculus одним из основных средств измерения производительности является поставляемые в комплекте с ПО инструмент Oculus Debug Tool, которые расположен по адресу C:\Program Files\Oculus\Support\oculus-diagnostics.
После запуска утилиты, необходимо раскрыть категорию HUDs, нажав на плюсик и выбрать в выпадающем меню Visible HUD пункт "Performance".
Теперь достаточно надеть шлем и основная статистика производительности будет перед глазами. Для того, чтобы скрыть статистику, нужно там же выбрать None. Стоит отметить, что приведенные значения в 90FPS или 11 мс справедливы только для шлема Rift CV1, для шлема Rift S они равны 80FPS, для шлемов других производителей значения могут отличаться.
Здесь сверху вниз мы видим:
- App Motion-to-Photon Latency — задержку в мс между движением и отображением этого на экране (меньше-лучше)
- Performance headroom — свободная производительность CPU и GPU (процессора и видеокарты), в других программах же часто наоборот показывается именно используемый процент. Больше — лучше (так же это говорит о том, что возможно увеличить Supersamling)
- Application Frames Dropped — количество кадров, которые не уложились в 11 мс. Если цифры здесь постоянно растут, это значит, что процессор или видеокарта не успевают подготовить кадр за отведенное время
- Compositor Frames Dropped — количество пропущенных искусственных кадров (синтезированных помощью технологии ASW)
- Непосредственно сам график FPS, от 0 до 90
- График "свободной" производительности
Для большинства пользователей данной информации будет достаточно, однако, чтобы определить, что является узким местом в системе (bottleneck), в Debug Tool следует выбрать в выпадающем меню Mode "App Render Timing".