Подтвердить что ты не робот

Проблемы с производительностью WebGL с сетчаткой Macbook Pro

У меня есть приложение WebGL, которое я разрабатываю, и я столкнулся с довольно серьезными проблемами производительности с Retina Display Macbook Pros. Я тестирую 15-дюймовый Macbook с графическим процессором Intel Iris Pro, рендеринг с полным разрешением, который дает мне разрешение холста 3810x2030 с полноэкранным окном Chrome. Мое приложение отображает около 100 тыс. Вершин на фрейм.

Теперь, когда я установил приложение для работы с соотношением пикселей устройства 1 (что означает отсутствие масштабирования сетчатки), производительность приложения прочная, никогда не опускается ниже 60 кадров в секунду, но качество изображения неприемлемо. Когда я переключаюсь на соотношение пикселей устройства сетчатки, которое равно 2, качество изображения значительно улучшается, но частота кадров падает до 20-30 кадров в секунду.

Теперь я не чуждо программированию на GPU, поэтому причины, по которым это происходит, очевидны для меня. Что мне интересно, кто-нибудь там нашел какие-либо обходные пути или способы оптимизации рисунка WebGL для дисплеев с ультравысоким разрешением с плохими графическими процессорами, такими как Retina Macbook Pro? Существуют ли какие-либо неочевидные подсказки или трюки, найденные людьми через пробную версию и ошибку, чтобы решить эту проблему или, по крайней мере, сделать ее немного лучше?

Любая помощь будет оценена по достоинству. Спасибо.

Изменить: небольшое обновление с интересным открытием. Я поместил окно своего браузера на внешний дисплей, подключенный к Macbook, а при рендеринге в DPR 1, производительность еще выше на внешнем дисплее, чем на macbook, даже с точно таким же разрешением, и изображение качество намного лучше.

Таким образом, даже если вы визуализируете масштабируемую фреймбуфер на Macbook Pro, он все еще масштабирует его, что, вероятно, является причиной низкого качества изображения (он масштабирует его с помощью билинейной фильтрации, делая его более размытым, чем это было бы если исходное изображение было отображено незатронутым).

4b9b3361

Ответ 1

Просто хочу сообщить всем, кто следил за этим сообщением, обновление. Я смог запустить мое приложение выше 45 FPS, просто установив опцию canvas "antialias: false". Это дало огромный прирост производительности на дисплеях с высокой плотностью и не является необходимым, поскольку дисплеи с высокой плотностью обеспечивают большое количество встроенного сглаживания. Надеюсь, это поможет кому-то еще в будущем.

Ответ 2

Некоторые вещи не ускоряются в Chrome в Mac OSx.

Взгляните на этот URL:

chrome://gpu/

Если вы обнаружите что-то, что отключено, вы можете настроить его, используя:

chrome://flags/

Недостатком является то, что если вы найдете что-то, что работает, оно не совсем развертывается. Это может дать вам представление о том, где ваше узкое место.

(вот полный список URL-адресов, которые попадают в скрытые и специальные места в хроме: chrome://chrome-urls/)

Ответ 3

У меня была та же проблема. Опция рендеринга, которая помогла, была renderer.setPixelRatio (1); Fps от 40 до 60 на Macbook Pro. Три js R86