2016-08-20 9 views
1

У меня возникли проблемы с производительностью на моем GearVR приложения (разработан на Unity 5.4), так что я решил сделать небольшой эксперимент и создать простейшую сцену для изучения производительности:вопрос об исполнении GearVR/Unity

  • Один статического самолет
  • Один статического куб
  • И с тем же материалом: мобильный неосвещенной шейдер с 8X8 UNICOLOR текстурой
  • Один запеченные направленным свет
  • по умолчанию быстрых настроек качества
  • настройки по умолчанию проигрывателя сохранить для VR включена и многопоточный-рендеринг позволил

На моем компьютере, когда я смотрю на профилировщике я получаю следующий профиль:

PC profile profile

О чем ты Ожидайте: около 4000 FPS.

Однако, когда я строю свою точно такую ​​же сцену, и запустить его на моем Galaxy S6 (с ETC2 Глес сжатия 3,0 текстуры), я получаю эту анкету:

enter image description here

Это теперь пошли вниз до около 60 FPS. WTF? Когда я смотрю немного больше в детали, я вижу, что подавляющее большинство времени использования процессора тратится на ожидание ГПУ:

enter image description here

А потом, когда я смотрю на использование GPU я вижу, что он тратит 99% своего времени применения GUITexture.draw:

enter image description here

проблема заключается в том ... нет долбанные GUI текстуры в моей очень простой сцене! Я ничего не понимаю. Может ли кто-нибудь объяснить мне, что происходит, и как уменьшить чрезвычайную разницу в производительности между ПК и мобильным телефоном?

ответ

2

Я не знаю, нашли ли вы ответ (надеюсь, вы это сделали), но у меня была такая же проблема недавно, и другие могут столкнуться с той же проблемой.

1) GUITexture.Draw

The GUITexture.Draw из-за режима "развитие строить". Он добавляет текстуру водяного знака dev после рендеринга всей сцены. Мы можем видеть это в отладке фрейма Unity. Unity frame debug

Свойства шейдера говорят, что в качестве _MainTex используется текстура с именем UnityWatermark-dev. Вы можете подтвердить использование графического отладчика, я использовал отладчик Mali Graphics Debugger.

Вот что текстура будет, как: UnityWatermark-dev

Я не знаю, почему он создает такую ​​нагрузку в режиме VR, но это совсем недорого, если отключить VR.

2) Профилирование

Не используйте компьютер при профилировании, если ваше планирование не запустить разлом или Vive версию. Существует большая разница в мощности процесса между вашим Galaxy S6 и вашим ПК (или даже между ПК, если ваш GPU и процессоры отличаются).

Всегда используйте целевое устройство в профиле. Это единственный способ получить представление о том, что происходит в вашем проекте. Если вы хотите запустить профиль проекта Rift/Vive, это ваш компьютер, если вы хотите, чтобы профиль версии GearVR отображался на ваших мобильных устройствах.