Sunday, May 22, 2011

Google Chrome - 2

Обнаружил пару интересный настроек: about:flags и включил пару интересных флагов:

  • GPU Accelerated Compositing
  • GPU Accelerated Canvas 2D


Маленькое изменение результатов с этими флагами:

  • chrome - CPU1 - 60% , CPU2 - 80%, GPU - 11%, FPS - 32-36
  • chrome, linux, WebGL on - CPU1 - 30% , CPU2 - 90%, GPU - ?, FPS - 17-19
  • chrome, linux, WebGL off - CPU1 - 50% , CPU2 - 80%, GPU - ?, FPS - 1

Saturday, May 14, 2011

Google Chrome

Обнаружилось что WebGL в chrome под linux отключен, про отключение ff слышал, про хром както пропустил. Причем отключен он только для radeon и intel.

Проверить это очень легко вводим about:gpu и если видим что-то подобное: ATI cards in Linux are crash-prone. То усилием воли закрываем все вкладки и перезапускаем с 'google-chrome --ignore-gpu-blacklist' и радуемся новым впечатлениям :-)

И немного тестов рыбками из демок под ie:
  • ie9 - CPU1 - 8% , CPU2 - 10%, GPU - 40%, FPS - 60
  • chrome - CPU1 - 40% , CPU2 - 90%, GPU - 10%, FPS - 35
  • chrome, linux, WebGL on - CPU1 - 30% , CPU2 - 90%, GPU - ?, FPS - 15
  • chrome, linux, WebGL off - CPU1 - 50% , CPU2 - 80%, GPU - ?, FPS - 16
  • ff 4.0, linux, WebGL off - CPU1 - 75% , CPU2 - 75%, GPU - ?, FPS - 60
В тестах использовал 20 рыбок. Нагрузку на GPU измерял в AMD System Monitor, которая есть только под Windows. Тест представляет собой движение спрайта по канвасу(в ресурсах есть картинка c полной анимацией движения рыбки).

Sunday, May 8, 2011

Еще пара мелких оптимизаций

Использование более удобный для кеширование url(пример для Apache):
  • создаем папочку с файлом .htaccess:
    RewriteEngine On
    RewriteRule ^/?(.*)/(.*)$ /$1?$2 [L]
  • И запрашиваем все файлы из нее по url вида имя папки/нужный ресурс/старый путь относительно корня/параметры вызова - в результате получим, что то подобное /img/avatar.sh?user=1 => /stat/img/avatar.sh/user=1.
И возможность заставить всех ходить через https без перенаправления - стоит пользователю один раз зайти через https - и в течении указаного в заголовке Strict-Transport-Security времени браузер обязан сам заменять все запросы к http на https без запроса к серверу. То есть человек один раз делает запрос на http - мы его перенаправляем на https, и уже на запрос по https мы ему указываем что в течении определенного времени делать запросы только на https.

Wednesday, January 12, 2011

Кувалда и душа

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

Saturday, December 25, 2010

Обрадовать PageSpeed

Ну очень короткий пост или улучшить результаты в PageSpeed ну хоть немного.

  • Включить кеширование. Если ваш случай Apache, добавляем подобную комбинацию для медиаконтента:
    Header set Cache-Control "max-age=3153600, public"
    Сжимать выдаваемый контент:
    SetOutputFilter DEFLATE
    Эти строчки желательно использовать только внутри FilesMatch, IfModule - так как сжимать картинки бесполезно, а кешировать до бесконечности html нельзя - на корень вход с параметрами в url не поставишь.
  • Объединить несколько css/js файлов в один через вызов скрипта с параметром список объединяемых скриптов/стилей. Желательно при объединении оставлять метки что откуда взято - чтобы не искать иголку в стоге сена.
  • Упаковать результаты вывода этого скрипта (желательно не полностью, а каждый файл с пометкой минимизированная версия чего представлена). Для css - мне понравилось использовать cssmin, для js - google closure compiler. Оба инструмента позволяют минимизировать на лету. Первый локально, второй можно через API удаленно. Во втором случае лучше давать исходный код, а не каким-то образом минимизированную версию.

Tuesday, December 21, 2010

Магия глубины

На прошлых выходных мне случайно попалась ссылка на интересный сайтик, который долго искал - на нем предлагаются драйвера для Windows для поддержки стереоскопичного 3d. Когда то лет 5 назад у уже видел ссылку на подобную функциональность, она включалась редактором реестра для Nvidia карт, но они ее почему-то удалили. Теперь опять в дровах она появилась, но опять для Nvidia и для топовых карт, это не является достаточным основанием, как по мне менять свои компьютер с ATI видеокартой. Вот теперь эту функциональность можно посмотреть на любой видео карте. Правда некоторые игры имеют возможность самостоятельно создавать картинку с искажениями цветов нужные для анаглифных очков, но хотелось везде и сейчас.

И вот на какие мысли это меня натолкуно:

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

Это в принципе равнозначно тому, что у обоих кадров подобны буферы глубины кроме близко расположенных объектов. И если генерировать сначала буфер глубины для далеких объектов, там где разница в отображении для разных глаз меньше пикселя, то загружая эти данные в буфер глубины мы резко сокращаем количество расчетов цвета и для точек, так как все дальние точки уже учтены на этом буфере. Или можно брать кадр с расстоянием до точек для одного глаза и убирая все точки ближе определенного минимума- мы получим исходные данные для второго глаза. Правда можно еще учитывая данные о расстоянии немного сдвигать изображения для каждого глаза - но это получается какая-то косоглазая глубина.

Если идти далее можно предположить что герои в играх не умеют моментально резко передвигаться на большие расстояния и можно немного схитрить и ускорить графику не удаляя полностью весь буфер, а только близ лежащие точки. Но тут могут быть проблемы, если изображение начнет удаляться или поворачиваться - у нас то в буфере не будет ошибок, если пользователь идет только вперед и объекты только приближаются - в общем без сложного анализа не обойтись - например делать грубый слепок для маленького разрешения и сравнивать их перед использованием старой матрицы - если точки только приблизились без изменения цвета, то все нормально, но вот если нет начнем пересчет.

На уровне игрового движка можно сделать карты глубины для больших расстояний для всех круговых углов обзора и использовать ее как тестуру по границам доступного в течении ближайшего пространства, тогда можно подправляя при приближении к этим границам, добиться возможности место расчета далеких объектов просто поставлять большую текстуру - думаю это снимает проблемы больших пространств, где нужно пересчитать все что может попасть в область видимости. Подобные текстуры, как я знаю, используются в Quake2 для неба, но они статичны. Я думаю это резко сокращает количество полигонов.

Может так и делают и я что-то упустил?

Saturday, December 4, 2010

Применение смартфонов с точскрином

Так как они не могут пока конкурировать с обычными мобильными телефонами по времени жизни без зарядки. Обычные мобильные телефоны живут где-то ближе к неделе(или это у меня они так долго выдерживали) с точскрином с нормальными характеристиками и внешним видом живут где-то 2 дня максимум.

Я подумал их же можно использовать вместо мышки - такой высоко технологичной и дорогой. Они все имеют какое-то подобие usb порта и теоретически можно создать приложение которое будет эмулировать протокол мышки для компьютера и экран можно использовать как подобие точпада с возможностью отображение области под указателем мышки и дополнительной информации - например управление через поворот относительно сторон света и 3d управление через акселерометры и gps.