Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Весь веб на 60+ FPS: как новый рендерер в Firefox избавился от рывков и подтормаживаний

FirefoxOpen sourceCSSAPIБраузеры
Перевод
До релиза Firefox Quantum остаётся всё меньше времени. Он принесёт множество улучшений в производительности, в том числе сверхбыстрый движок CSS, который мы позаимствовали у Servo.

Но есть ещё одна большая часть технологии Servo, которая пока не вошла в состав Firefox Quantum, но скоро войдёт. Это WebRender, часть проекта Quantum Render.



WebRender известен своей исключительной скоростью. Но главная задача — не ускорить рендеринг, а сделать его более плавным.

При разработке WebRender мы поставили задачу, чтобы все приложения работали на 60 кадрах в секунду (FPS) или лучше, независимо от размера дисплея или от размера анимации. И это сработало. Страницы, которые пыхтят на 15 FPS в Chrome или нынешнем Firefox, летают на 60 FPS при запуске WebRender.

Как WebRender делает это? Он фундаментальным образом меняет принцип работы движка рендеринга, делая его более похожим на движок 3D-игры.
Читать дальше →
Всего голосов 123: ↑121 и ↓2 +119
Просмотры60.8K
Комментарии 95

Редактирование видео в MPC с помощью шейдеров

Работа с видеоЛайфхаки для гиков
Из песочницы
Есть задача: Изменить видео “на лету” при воспроизведении — поменять местами правую и левую часть. Не отразить, а именно поменять, т.е. разрезать картинку на две части и поменять их местами. Можно, конечно, сделать с помощью фреймсервера типа AviSynth'a, но это уже не совсем “на лету” — надо писать скрипт для каждого видео файла. Хочется сделать это быстро и без напрягов.

На фига? Чтобы сделать курс лекций по машинному обучению от Яндекса более удобным для просмотра. Лектор указывает на пункты презентации вживую, и приходится постоянно перескакивать через весь экран взглядом, чтобы понять, о чём речь:

image
Читать дальше →
Всего голосов 33: ↑32 и ↓1 +31
Просмотры10.3K
Комментарии 5

Как реализован рендеринг «Ведьмака 3»: молнии, ведьмачье чутьё и другие эффекты

Работа с 3D-графикойРазработка игрРеверс-инжинирингДизайн игр
Перевод
image

Часть 1. Молнии


В этой части мы рассмотрим процесс рендеринга молний в Witcher 3: Wild Hunt.

Рендеринг молний выполняется немного позже эффекта занавес дождя, но всё равно происходит в проходе прямого рендеринга. Молнии можно увидеть на этом видео:


Они очень быстро исчезают, поэтому лучше просматривать видео на скорости 0.25.

Можно увидеть, что это не статичные изображения; со временем их яркость слегка меняется.

С точки зрения нюансов рендеринга здесь есть очень много сходств с отрисовкой занавес дождя в отдалении, например, такие же состояния смешивания (аддитивное смешивание) и глубины (проверка включена, запись глубин не выполняется).
Читать дальше →
Всего голосов 48: ↑48 и ↓0 +48
Просмотры27.5K
Комментарии 2

Свёрточные текстуры

Работа с 3D-графикойРазработка игр
Перевод

Самостоятельно обновляемые текстуры


Когда существует возможность распараллеливания симуляций или задач рендеринга, то обычно лучше всего выполнять их в GPU. В этой статье я объясню технику, использующую этот факт для создания впечатляющих визуальных трюков с низкими затратами производительности. Все эффекты, которые я продемонстрирую, реализованы при помощи текстур, которые при обновлении "рендерятся сами в себя"; текстура обновляется при рендеринге нового кадра, а следующее состояние текстуры полностью зависит от предыдущего состояния. На этих текстурах можно рисовать, вызывающая определённые изменения, а сама текстура прямо или косвенно может применяться для рендеринга интересных анимаций. Я называю их свёрточными текстурами.


Рисунок 1: двойная буферизация свёрточной текстуры

Прежде чем двигаться дальше, нам нужно решить одну проблему: текстуру нельзя считывать и записывать одновременно, такие графические API, как OpenGL и DirectX, не позволяют этого делать. Так как следующее состояние текстуры зависит от предыдущего, нам нужно как-то обойти это ограничение. Мне нужно выполнять чтение из другой текстуры, а не из той, в которой выполняется запись.

Решением является двойная буферизация. На рисунке 1 показано, как она работает: на самом деле вместо одной текстуры есть две, но в одну из них выполняется запись, а из другой производится чтение. Текстура, в которую выполняется запись, называется back buffer (вторичный буфер), а рендерящаяся текстура — front buffer (первичный буфер). Поскольку свёрточная тестура «записывается в саму себя», вторичный буфер в каждом кадре выполняет запись в первичный буфер, а затем первичный рендерится или используется для рендеринга. В следующем кадре роли меняются и предыдущий первичный буфер используется как источник для следующего первичного буфера.
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Просмотры6.6K
Комментарии 3