Google скоро откажется от динамического рендеринга


Содержание материала:

Google опубликовал руководство по динамическому рендерингу

Подпишись
на наши новости!

Заголовки новых статей для вас

  • Yandex28,06
  • Mail.ru Group27,15
  • Facebook150,33
  • Google932,22
  • Twitter18,61

Лучшие статьи

Спасибо, что следите за рынком Интернет-маркетинга с AdCrunch.ru

Мы очень ценим Ваше доверие

Нажмите «Нравится», чтобы читать нас в Facebook.

Спасибо, что следите за рынком Интернет-маркетинга с AdCrunch.ru

Мы очень ценим Ваше доверие

Нажмите «Подписаться», чтобы читать нас в Вконтакте.

Переезжаем на ГПУ рендеринг, Часть 2

Приветсвутю тебя, мой юный Шахтер! Да, да! теперь все визуализаторы где то внутри себя немного копают:) Ведь наступил золотой век рендеринга. Наконец то ваш компьютер почти ничем не ограничен в росте мощности, теперь не нужно держать на балконе целую рендер ферму чтобы считать картинки, достаточно и одного хорошего компьютера. В этой статье я расскажу о реальном опыте переезда на ГПУ рендеринг со всеми возможными проблемами и подводными камнями. Добро пожаловать под кат…

Исходными данными было наличие около 10 видеокарт 1070 различных форм и моделей и 15 рендер нод на процессорах Xeon, поддержка которых в рабочем состоянии превратилась в ад, поэтому было решено срочно избавиться от этого мусора и состряпать рендер ферму на ГПУ.

Недолго думая была куплена майнерская Asrock H110 PRO BTC+ материнская плата с поддержкой 13 PCI-e слотов для видеокарт

и собран живописный монстр на 10 видеокарт и 3 блока питания, которые синхронно запитывают их:

На данном лоте представлены 10 видеокарт в одной Windows системе, которые работают! При этом только 2 из них одинаковые, все остальные разные как по производителю, так и по модели, это сделано специально чтобы проверить стабильность работы такой системы. (Asus, Palit, Gigabyte, Nvidia, KFA )

На момент сборки вышла версия windows 10 которая обеспечивала поддержку 10 видеокарт в системе, windows 7 технически поддерживает не больше 6 штук(и судя по всему мелкомягкие не собираются ничего с этим делать), после этого драйверы “лишних” видеокарт пишут ошибку и работать отказываются, как их не проси.

Запуск любой системы сводится к запуску со всей этой горой железа и установке 1 видеодрайвера, а потом несколько перезагрузок вплоть до того момента, пока винда не поймет как над ней издеваются и не примет всё как есть (обеспечит драйверами все видеокарты) 🙂

Если вам подобное удастся то, рано радоваться, с этим всем ещё надо как то взлететь 🙂 то есть начать суть процесса — ̶М̶А̶Й̶Н̶И̶Н̶Г̶!̶ Рендеринг!

Мы давно и сильно зависимы от Vray по многим причинам, поэтому будем рассматривать его и Redshift.

Итак, как вы видели на картинке в шапке, Вирей может рендерить 10 видеокартами одновременно(VrayRT CUDA 3.6 ) Но делает он это абсолютно бесполезно, рендеринг на 5х1080 видеокартах тестовый сцены с чайниками (HDR+2 VrayLight+motionBlur+DOF) занимает 6 минут, а 10х1080 — 9 минут. При рендере большим количеством видеокарт Врей сталкивается с большой проблемой распределения ресурсов процессора и памяти, что приводит к тотальному провалу рендертаймов, к тому же Windows 10 дополнительно жрет 20% процессора относительно рендеринга в 7ке. При этом Вирей грузит видео карты на 100% весь период времени, ощущение такое что вы на грузовике Прогресс пытаетесь стартовать к МКС. Куда девается вся мощность скорее всего знает только Дружко

По ощущениям эффективность рендеринга вирея линейна до 3х видеокарт в системе, после чего производительность резко падает… (тесты делались на разных материнских платах, количестве оперативной памяти и процессорах).

Все ксеоны уже давно переехали к новому хозяину и я уже было думал броситься с балкона 26го этажа прямо в сугроб, но на выручку пришел священный REDSHIFT

При этом он ограничен 8ю картами прямо на программном уровне.

Но как обычно нельзя просто так взять и решить все проблемы, в виндовс 10 по необъяснимым причинам больше 4х видеокарт редшифт запустить на рендеринг не мог и крашился с вероятностью 146% (Windows 10 официальный с сайта майкрософт, билд обеспечивающий поддержку 10 гпу).

Конечно же прошло немало часов и попыток переустановки драйверов, версий 3д макса, редшифта, танцев с бубнами, но помогло только одно — установка Windows 7.

Пришлось отказаться от 4х видеокарт и оставить в системе 6 штук, которые успешно запустились и начали считать всеми любимые чайники

К моему ужасу редшифт посчитал их за 2 минуты и похоронил Vray окончательно. Казалось бы вот оно — Счастье! Но и это оказалось не всё, Редшифт в продакшен режиме показывал стабильную загрузку ГПУ на 45 процентов мощности какие бы настройки рендера ему не запихивали:

“Это какой то заговор!” — скажите вы, я лишь отвечу:

Нагрузить Redshift на 80-90 процентов можно включив Progressive режим рендеринга, который при этом не позволяет считать Render Elements нивкаком виде.

Разные видеокарты в одной системе работают абсолютно стабильно!

Вирей сильно зависит от Процессора во время рендера на ГПУ. На слабом CPU потери мощности рендеринга могут быть даже с 1 Видеокартой, Редшифт такой проблемы не имеет.

Майнерские материнки в целом подходят для рендеринга, но важно понимать что они ограничены моделями процессоров и количеством Оперативной памяти.

Операционка крайне важна и рассчитывать сейчас на стабильные решения не стоит, вероятно пройдет какое то время, прежде чем RS и остальные дотянуться до тестирования на новейших системах и залатают дыры в поддержке мульти ГПУ.

Специальные майнерские видеокарты не умеют рендерить (было куплено 3 штуки для проверки). Их драйвера сильно отличаются от тех на которых пишется CUDA рендереров и вероятность того что они будут рендерить правильно крайне мала(прецеденты были, но это ничтожно малый процент)

Нельзя покупать видеокарты с одним кулером, они улетят с вами на луну

Блоки питания от 1000 ВТ и обязательно с огромным количеством 6+2pin или 8pin PCI, иначе вам придется питать все несколькими, а это не супер надежно. (Идеальный вариант — серверный БП на 2400WT)

Старые материнские платы с 6-7 PCI слотами с большой вероятность не будут работать, потому что не рассчитаны именно на видеокарты в этих слотах и число линий не соовтествует требованиям, о чем вам с удовольствием скажет винда

8 гб достаточно для текущих задач, истратить видео память представляется крайне сложной задачей, которая ещё и решается редшифтом с помощью использования Оперативной памяти

Октан, центилеос, Фсторм и прочие не были представлены потому что их материаловедение не вписывается в наш пайплайн уж точно и предыдущие их тесты не выявили существенных преимуществ по скорости относительно RS и уж точно не стало удобнее чем Vray в плане работы с материалами и сценой.

Немного рендера с дофчиком и моушен блюром для расслабления глаз.

На текущий момент идеального решения для работы с ГПУ не найдено, оптимальной рендер нодой является система из 6 видеокарт на Winows 7, вероятно очень скоро станет возможно работа редшифта с 8 видеокартами на Win10, но для этого нужно ждать новых релизов как одного, так и другого. Vray стабильно проигрывает в производительности, стабильности да и всём остальном. Забыть его не позволяет лишь широкая распространенность в той сфере в которой мы работаем (стоки и продажа 3д моделей).

PS: 35 видеокарт майнят около 100$ в сутки пока не рендерят :)) Майнить ВЫГОДНО!

Не забываем лайкать и подписываться на мой ВК )

Google выпустил руководство по динамическому рендерингу

Google опубликовал руководство по динамическому рендерингу

Google опубликовал справочное руководство по динамическому рендерингу – новой технологии, которая призвана облегчить сканирование, индексирование и ранжирование JavaScript-страниц.

Динамический рендеринг состоит в том, что происходит попеременное переключение между тем контентом, обработка которого идет целиком на стороне пользователя, и тем контентом, который уже предварительно обработан для определенных его агентов.

Зачем это нужно?

Google подчеркивает, что несмотря на то, что поисковикам сложно обрабатывать данные javascript, вводить динамический рендеринг или нет — целиком зависит от задач бизнеса и самого сайта. Это решение рекомендовано к внедрению только тем сайтам, кардинально меняющим свой содержимое, или тем, чем код не читается важными для владельца краулерами.

Как работает?

Сервер, проверяя агента пользователя, определяет соответствующий краулер. Тот, в свою очередь, передает данные рендереру и он в динамике выдает пользователю подходящую версию контента.

Больше об этом нововведении можно прочитать в официальном справочном разделе.

Динамический ремаркетинг Google: инструкция по настройке

Динамический ремаркетинг Google позволяет показывать вашей аудитории рекламу с учетом истории покупок, посещений сайта, демографических данных. Как его настраивать – читайте в этой статье.

Как включить динамический ремаркетинг в Google Analytics

Динамический ремаркетинг в Google Analytics работает при соблюдении условий:

  • Активные ремаркетинг и функции отчетов по рекламе;
  • Привязка аккаунтов Google Ads и Google Analytics;
  • Привязка аккаунтов Google Merchant Center и Google Ads (только для розничной торговли).

Условие 1: активный ремаркетинг и функции отчетов по рекламе

В Google Analytics вы можете создавать отчеты по демографии, категориям интересов и многоканальным последовательностям, изучать данные о показах в КМС, собирать информацию с помощью файлов cookie рекламных предпочтений Google (если они есть).

Чтобы параметры и показатели для этих отчетов появились в Google Analytics, задайте разрешения на внесение изменений – «Управление пользователями» (Администратор / Управление доступом):

Примите условия Google Analytics:

Теперь добавьте аудиторию в параметры таргетинга группы объявлений Google Ads. Как это делать – в статье про ремаркетинг Google.

  • Не более 2 000 аудиторий в одном аккаунте Google Analytics.
  • Нельзя использовать параметр «Сегменты заинтересованных покупателей».
  • Нельзя использовать показатель «Дней с последнего посещения».

Теперь включите ремаркетинг и функции отчетов по рекламе. Как это сделать – 3 способа на выбор:

  • Изменить настройки ресурса;
  • Изменить код отслеживания;
  • Использовать существующий код отслеживания при создании кампании ремаркетинга в Google Ads.

Способ 1: изменить настройки ресурса

  • Войдите в аккаунт Google Analytics.
  • Нажмите «Администратор» и выберите ресурс.
  • Отслеживание / Сбор данных.
  • Активируйте ремаркетинг и отчеты:

Внимание: этот метод подходит только для ресурсов и страниц с analytics.js или тегами AMP.

Способ 2: изменить код отслеживания

В Universal Analytics вставьте выделенную красным цветом строку в код отслеживания между командами create и send .

Чтобы отключить функции отчетов по рекламе (даже если они активные в настройках), добавьте строку

ga(‘set’, ‘displayFeaturesTask’, null);

после create , но до команды, которая отправляет данные обращения.

Чтобы сведения о трафике поступали только для определенных разделов сайта, достаточно изменить код на нужных страницах.

Если вы используете Диспетчер тегов Google, следуйте инструкциям по изменению тега Google Analytics.

Способ 3: использовать существующий код отслеживания для новой кампании ремаркетинга в Google Ads

Если аккаунт Google Ads связан с Google Analytics, при создании кампании можно использовать код, который уже есть на сайте. Не нужно создавать тег Google Ads, поскольку ремаркетинг в Analytics включается автоматически.

Условие 2: привязка аккаунтов Google Ads и Google Analytics

Во вкладке «Администратор» Google Analytics в настройках ресурса нажмите на ссылку «Связь с Google Рекламой».

Отметьте галочкой нужный аккаунт и нажмите «Продолжить».

Введите название для связки аккаунтов и нажмите «Связать аккаунты»:

В расширенных настройках включите автоматическую пометку тегами (Google Analytics начнет автоматически связывать данные Google Ads с кликами пользователей), либо выберите «Оставить настройки автоматической пометки без изменений», чтобы помечать ссылки вручную:

Нажмите «Связать аккаунты». Данные в аккаунтах появляются автоматически через сутки после настройки.

Теперь вы можете создавать аудитории ремаркетинга в Google Analytics и использовать их в связанном аккаунте Google Ads. Импортированные данные видят все пользователи с правами доступа и в Google Analytics, и в Google Ads.

Чтобы связать с Google Ads несколько ресурсов Analytics, выполните эту операцию для каждого из них.

Топ-пост этого месяца:  Рассылка писем на сервисе SmartResponder

Условие 3: Привязка аккаунтов Google Merchant Center и Google Ads (только для интернет-магазинов)

Для начала определите вид деятельности вашей компании. От этого зависит тип фида, пользовательские параметры и форматы объявлений.

Теперь свяжите аккаунты Google Ads и Google Merchant Center – и используйте данные о товарах из Merchant Center в кампаниях динамического ремаркетинга.

2) Найдите в меню опцию «Связанные аккаунты»:

3) Найдите в списке аккаунт Google Рекламы, с которым хотите связать Merchant Center, и нажмите «Связать» (1). Если его нет, нажмите «Связать аккаунты» (2) и добавьте идентификатор клиента Google Ads:

4) Одобрите запрос в Google Ads (Связанные аккаунты / Google Merchant Center / Подробнее):

С одним аккаунтом Google Merchant Center можно связать несколько профилей Google Ads.

Пошаговая настройка динамического ремаркетинга

Далее – действия по настройке.


Этап 1: измените код отслеживания Google Analytics для настройки динамического ремаркетинга

Чтобы информация о тематике сайтов стала доступна в Google Analytics:

Создайте пользовательский параметр для каждого атрибута

Они помогают собирать данные, которые не отслеживаются в Google Analytics автоматически.

1) Войдите в Google Analytics.

2) Администратор / Ресурс.

3) Пользовательские определения / Специальные параметры.

4) Нажмите кнопку «+ Специальный параметр».

5) Укажите понятное название.

6) Выберите область действия: «Обращение», «Сеанс», «Пользователь», «Товар».

7) Установите флажок «Активная», чтобы начать сбор данных и добавить параметр в отчеты.

8) Нажмите «Создать».

Также создайте пользовательские показатели:

Задайте тип форматирования (Целое число, Валюта или Время), а также минимальное и максимальное значения.

Пользовательские параметры и показатели нельзя удалить, но можно изменить и деактивировать.

Измените код так, чтобы он собирал данные по каждому атрибуту

Когда пользователь просматривает контент с тематическим атрибутом (допустим, рекламу бытовой техники), эта информация поступает в Google Analytics как специальные параметры. Затем система отправляет данные в кампанию динамического ремаркетинга Google Ads.

Например, если добавить в теги атрибут розничной торговли ecomm_prodid, в Google Ads поступают идентификаторы товаров, которые просматривают пользователи. Когда они посещают другие сайты КМС Google, система показывает им рекламу этих товаров из кампании ремаркетинга.

Как добавить атрибуты для вашей отрасли? Конкретно по каждой – здесь.

Коды для атрибутов размещайте перед закрывающим тегом .

Этап 2: создайте списки динамического ремаркетинга

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

Следуйте инструкциям по созданию списков ремаркетинга Google. Можно задействовать новые параметры pagetype, которые отражают разные категории пользователей:

  • Посещали сайт;
  • Искали продукты;
  • Смотрели информацию о продуктах;
  • Прервали конверсионный путь;
  • Покупали ранее.

Импортируйте в аккаунт Google Analytics готовую конфигурацию аудитории с учетом тематики сайта. Для этого:

1) Нажмите ссылку, чтобы импортировать конфигурацию для нужной тематики:

2) Выберите представление Google Analytics, куда импортировать данные.

3) Выберите аккаунт рекламодателя для этих аудиторий.

Этап 3: Создайте динамические атрибуты

После того как вы добавили тематические атрибуты в теги и создали списки ремаркетинга, нужно реализовать соответствующие динамические атрибуты и привязать их к Google Ads.

Это возможность получать дополнительную информацию (идентификаторы просмотренных товаров в интернет-магазинах, город вылета и прилета для турагентств и т.д.) и точнее определять аудиторию.

1) Нажмите «Администратор» и выберите нужный ресурс.

2) Настройки аудитории / Динамические атрибуты.

3) Задайте настройки для динамических атрибутов:

4) Заполните поля «Вид деятельности», «Представление» (то, для которого доступны атрибуты), «Общий доступ» (аккаунт Google Ads для привязки атрибутов).

5) В разделе «Динамические атрибуты» выберите тематические атрибуты, которые добавили к тегам страницы. Например, если вид деятельности – «Розничная торговля», используйте ecomm_prodid и ecomm_pagetype . Если «Авиаперелеты» – подойдет flight_destid и flight_originid .

В одном ресурсе Google Analytics можно создать динамические атрибуты нескольких тематик.

Только один набор атрибутов определенной тематики в ресурсе можно связать с идентификатором клиента Google Ads. При попытке добавить ещё набор Google Analytics изменяет существующий, а не создает новый.

Если нужно несколько наборов атрибутов одинаковой тематики для одного идентификатора клиента Google Ads, создайте ресурс для каждого набора.

Этап 4: Создайте кампанию с динамическим ремаркетингом в Google Ads

Создайте рекламную кампанию на поиске с динамическим ремаркетингом. Для этого:

1) Укажите цель «Продажи»:

2) Выберите тип кампании – «Поисковая сеть»:

3) Заполните поля, как для обычной поисковой кампании Google. Подробный алгоритм описан здесь.

По ставкам рекомендуем выбрать стратегию «Целевая цена за конверсию» или «Оптимизированная цена за клик», чтобы система автоматически выполняла оптимизацию.

4) Под блоком «Общие настройки» найдите ссылку «Другие настройки» и перейдите по ней:

5) Раскройте поле «Настройка динамических поисковых объявлений»:

Здесь укажите домен и язык сайта, на который будут вести динамические объявления.

6) Далее – настройка группы объявлений. Тип оставляем по умолчанию и даем название:

7) Из блока «Категории, рекомендованные для вашего сайта» выберите цели динамической рекламы, например:

8) Сохраните и переходите к созданию объявлений. В них заголовок и URL-ы будут подставляться автоматически, в зависимости от контента сайта. Придумать и вручную задать нужно только текст описания:

Если у вас интернет-магазин

Важный этап – настройка фида. Фид – небольшая база данных ассортимента, который нужно транслировать в динамических объявлениях. Строки – единицы товара, столбцы – атрибуты товаров из списка.

Тип фида соответствует виду деятельности, который вы выбрали. Смотрите шаблоны на сайте поддержки Google

Используйте специальный только тогда, если прочие типы не подходят.

Как загрузить фид

  • Общая библиотека / Коммерческие данные;
  • + Данные / Фид динамических медийных объявлений;
  • Укажите вид деятельности;
  • Загрузите файл фида.

Внимание!

  • Проверяйте, как работают фиды: ошибки в изображениях или адресах иногда появляются после 3–4 часов.
  • Не используйте в фидах контактные данные и информацию о местонахождении пользователей.
  • Все обновления фидов проходят проверку – это занимает до 3 рабочих дней. Поэтому просто запустите показ объявления с фидами.

Для интернет-магазина загрузите фид в аккаунт Merchant Center:

Укажите название фида и способ, как собираетесь его загружать:

Когда фид загружен, создайте и настройте в Google Рекламе торговую рекламную кампанию.

Контрольная проверка

Итак, вы настроили динамический ремаркетинг. Убедитесь, что всё работает как надо, а именно:

  • Вы назначили бюджет и стратегию назначения ставок;
  • Фиды прошли модерацию (статус «Одобрено»);
  • Тег и специальные параметры активные;
  • В группах есть списки ремаркетинга;
  • Динамические медийные объявления прошли модерацию Google.

Серверный или клиентский рендеринг на вебе: что лучше использовать у себя в проекте и почему

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

При выборе подхода для рендеринга нужно понимать разницу между возможными вариантами, чтобы не прогадать с производительностью. Сегодня мы разберёмся, в чём заключается эта разница.

Терминология

Отображение:

  • SSR (Server-Side Rendering, серверный рендеринг) — рендеринг на сервере клиентской части или универсального приложения в HTML;
  • CSR (Client-Side Rendering, рендеринг на клиенте) — рендеринг приложения на стороне клиента (в браузере), обычно с помощью DOM;
  • Регидратация — «загрузка» JavaScript компонентов на клиенте таким образом, чтобы они повторно использовали DOM-дерево и данные HTML, сформированные на стороне сервера;
  • Пререндеринг — запуск клиентского приложения во время сборки для сохранения его начального состояния в виде статического HTML.

Производительность:

  • TTFB (Time to First Byte, время до первого байта) — время между кликом по ссылке и поступлением первого фрагмента содержимого;
  • FP (First Paint, первая отрисовка) — первый случай, когда пользователю становится виден любой пиксель;
  • FCP (First Contentful Paint, первая содержательная отрисовка) — время первого отображения запрашиваемого содержимого (например, статьи);
  • TTI (Time To Interactive, время до интерактивности) — момент времени, в который страница становится интерактивной (закрепляются все события и т. д.).

Серверный рендеринг

При серверном рендеринге в ответ на запрос на сервере генерируется весь HTML страницы. Это исключает необходимость дополнительных запросов данных со стороны клиента, так как сервер берёт всю работу на себя, прежде чем отправить ответ.

Такой подход позволяет добиться быстрой первой отрисовки и первой содержательной отрисовки. Выполнение логики страницы и рендеринг на сервере позволяют избежать отправки клиенту большого количества JavaScript, что приводит к меньшему времени до интерактивности. И это логично, ведь при серверном рендеринге пользователю отсылаются только текст и ссылки. Этот подход хорошо сработает на широком диапазоне устройств и сетевых условий, а также откроет возможности для интересных браузерных оптимизаций вроде потокового парсинга документа.

При использовании серверного рендеринга пользователям не нужно ждать завершения работы JavaScript, отнимающего ресурсы процессора, прежде чем они смогут начать работать с сайтом. Даже если нельзя избежать использования стороннего JavaScript, серверный рендеринг позволяет уменьшить количество вашего собственного JavaScript и даёт больше «бюджета» для всего остального. Однако у этого подхода есть один существенный недостаток: формирование страницы на сервере занимает определённое время, что может привести к большему времени до первого байта.

Ответ на вопрос «достаточно ли серверного рендеринга для моего приложения?» зависит от того, что вы создаёте. Сообщество давно дискутирует на тему правильного применения серверного рендеринга против клиентского, но важно помнить, что для одних страниц использовать серверный рендеринг можно, а для других — нет. Некоторые сайты успешно используют смешанный рендеринг. Netflix генерирует на сервере относительно статические лендинги и в то же время предварительно загружает JavaScript для страниц с высоким уровнем интерактивности, давая возможность быстрее загрузиться страницам, которые больше используют клиентский рендеринг.

«Бастион», Москва, от 80 000 до 200 000 ₽

Многие современные фреймворки, библиотеки и архитектуры позволяют рендерить одно и то же приложение как на клиенте, так и на сервере. Их возможности можно использовать и для серверного рендеринга, однако важно отметить, что архитектуры, в которых рендеринг происходит и на клиенте, и на сервере, являются отдельным классом решений со своими характеристиками производительности и недостатками. Пользователи React могут использовать для серверного рендеринга метод renderToString() или решения на его основе вроде Next.js. Пользователям Vue стоит обратить внимание на гайд Vue по серверному отображению или на Nuxt. Если ваш выбор — Angular, то посмотрите на Universal. Тем не менее в большинстве популярных решений присутствует какая-то форма гидратации, поэтому, прежде чем выбрать инструмент, разузнайте больше о используемом подходе.

Статический рендеринг

Статический рендеринг происходит на этапе сборки и предоставляет быструю первую отрисовку, первую содержательную отрисовку и время до интерактивности — при условии, что количество клиентского JavaScript ограничено. В отличие от серверного рендеринга здесь удаётся добиться стабильно быстрого времени до первого байта, так как HTML-код страницы не должен генерироваться на лету. Как правило, статический рендеринг подразумевает предварительное создание отдельного HTML-файла для каждого URL. Поскольку HTML-ответы созданы заранее, статический рендеринг можно развернуть на нескольких CDN, чтобы воспользоваться преимуществом кеширования.

Для статического рендеринга существуют самые разные решения. Инструменты вроде Gatsby разработаны так, чтобы создавать впечатление динамического рендеринга. Другие, вроде Jekyl и Metalsmith, принимают свою статическую природу и предлагают подход, основанный в большей степени на шаблонах.

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

Пользователи React могут быть знакомы с Gatsby, статическим экспортом Next.js или Navi — все они делают использование компонентов удобнее. Однако важно понимать разницу между статическим рендерингом и пререндерингом: статически отрендеренные страницы не нуждаются в выполнении большого количества клиентского JS для интерактивности, в то время как пререндеринг улучшает первую (содержательную) отрисовку одностраничного приложения, которое должно быть загружено на клиент, чтобы страницы были действительно интерактивными.

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

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

Серверный рендеринг против статического

Серверное отображение не панацея — его динамическая природа может сопровождаться множественными вычислительными затратами. Многие решения с серверным отображением не используют технологию early flush и могут оттянуть время до первого байта или удвоить количество отправляемых данных (например, встроенное состояние, используемое JS на клиенте). В React метод renderToString() может быть медленным из-за синхронности и однопоточности. Для эффективной реализации серверного рендеринга может потребоваться найти решение для кеширования компонентов, разобраться с управлением потребления памяти, применить мемоизацию и не только. По сути вы заново обрабатываете/собираете одно приложение несколько раз — на сервере и на клиенте. Тот факт, что серверный рендеринг может показать что-то быстрее, вовсе не означает, что нужно проделать меньше вычислительной работы.

Топ-пост этого месяца:  RBK Money — зачем может понадобиться кошелек в Рбк и чем примечательна эта платежная система RUpay

Серверный рендеринг создаёт HTML для каждого URL при необходимости, но такой подход может работать медленнее, чем простая отправка статического контента. Если вы готовы поработать дополнительно, то с помощью связки серверного рендеринга с HTML-кешированием вы сможете сильно уменьшить время рендеринга. Преимуществом серверного рендеринга является возможность извлекать больше актуальных данных и отвечать на более полный список запросов, чем это возможно при статическом рендеринге. Персонализированные страницы — яркий пример запроса, который не очень хорошо ладит со статическим рендерингом.

Клиентский рендеринг

Клиентский рендеринг подразумевает рендеринг страниц прямо в браузере с помощью JavaScript. Вся логика, получение данных, шаблонизация и маршрутизация обрабатываются на клиенте, а не на сервере.

При таком рендеринге сложно поддерживать высокую скорость на мобильных устройствах. Можно приблизиться к производительности чистого серверного рендеринга, если выполнять минимум работы, иметь узкий бюджет для JavaScript и доставлять данные с минимальной круговой задержкой. Критические скрипты и данные можно отправить позднее с помощью HTTP/2 Server Push или
, что говорит парсеру начать работу заранее. Шаблоны вроде PRPL достойны внимания, потому что могут обеспечить ощущение мгновенного первого и последующих переходов между страницами.

Основной недостаток клиентского рендеринга заключается в том, что количество необходимого JavaScript обычно увеличивается вместе с ростом приложения. Ситуация ухудшается с подключением новых JavaScript-библиотек, полифиллов и прочего стороннего кода, который соревнуется между собой за вычислительные мощности и часто требует обработки, прежде чем содержимое страницы можно будет отобразить. Решениям с клиентским рендерингом, которые полагаются на большие JavaScript-бандлы, стоит рассмотреть сильное разделение кода и ленивую загрузку JavaScript — «загружайте только то, что вам нужно и только когда это нужно». Для решений с минимумом интерактивности или её отсутствием серверный рендеринг может предоставить более масштабируемое решение этих проблем.

Если вы создаёте одностраничное приложение, то, определив основные части пользовательского интерфейса, которые используются на большинстве страниц, вы сможете использовать кеширование оболочки приложения. В сочетании с Service Worker’ами это даст сильный прирост ощущаемой производительности при повторных посещениях.

Совмещение серверного и клиентского рендеринга с помощью регидратации

Универсальный рендеринг (или просто «SSR») пытается устранить недостатки серверного и клиентского рендеринга, используя оба подхода. Навигационные запросы вроде полной загрузки или перезагрузки страницы обрабатываются сервером, который рендерит приложение в HTML, затем JavaScript и данные, используемые для рендеринга, встраиваются в итоговый документ. При правильной реализации время первой содержательной отрисовки будет как при серверном рендеринге, а повторный рендеринг будет производиться на клиенте с помощью техники, называемой (ре)гидратацией. Это новое решение, тем не менее не лишённое определённых проблем с производительностью.

Основной недостаток универсального рендеринга с регидратацией заключается в том, что такой подход может очень негативно повлиять на время до интерактивности даже при улучшении первой отрисовки. Страницы часто выглядят обманчиво готовыми и интерактивными, но по факту не могут никак реагировать на действия пользователя до выполнения JS на стороне клиента и присоединения обработчиков событий. Это может занять несколько секунд или даже минут на мобильных устройствах.


Возможно, вы и сами сталкивались с таким — страница уже какое-то время выглядит загруженной, но нажатия на элементы не дают эффекта. Это сильно удручает: «Почему ничего не происходит? Почему я не могу скроллить?».

Проблема регидратации: одно приложение по цене двух

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

Ускоряем рендер многократно.

. имитацией эффекта Glossy Refraction на этапе пост-обработки.

Не знаю как у короны, но у Vray этот эффект нагибает любую рендер ферму, серьезно столкнулся с такой проблемой я при рендере этой сцены:

Видно что шумит стекло, пришлось убавить сэмплинг и использовать всевозможные дефликеры, иначе ждать мне неделю, а так всего пара суток)) Апосля таких событий я сильно задумался о редшифте и иже с ним, но примерно в то же время попалась мне на глаза статья о том, как рендерится кадр в Doom (2020). Вот она. Классная статья, классный движок, классные приёмы оптимизации. Но как мне это поможет в работе, я тогда еще не совместил в голове. И вот, буквально сегодня руки дошли до эксперимента, результаты его меня вполне устроили, но об этом позже.

Давайте начнем с вводных данных, а именно материал в 3д максе и необходимые опции. Стандартный VrayMaterial у которого в слоте glossiness градиент в пределах 1-254 (это важно)

Эту картинку я использовал как референс. Вот что действительно важно — так это маски. Маски — наше всё при пост-обработке. Я использовал пасс VrayExtraTex, куда и вставил текстуру из glossiness, Важно отключить сглаживание именно этого пасса, чтобы уберечь себя от ненужных артефактов по краям. Еще тут есть Cryptomatte, он пригодится, чтобы после всех операций над пикселями окно в раму вернуть, еще и с антиалиасингом, да и вообще просто жить без него не могу теперь.

Теперь смело выключаем текстуру с glossiness и ускоряемся в 12 (двенадцать!) раз.

Все, дальше работа в Nuke (Fusion если хотите, если повторите в фотошопе, будет вообще круть). Вот такая «расческа» у меня вышла, конечно до изящества в Doom далеко, никакие экспрешны я не использовал, и вместо понижения разрешения как в Doom я использовал обычный Box Blur, бокс мне показался более подходящим и считается он пошустрей чем Гаусс, но это не точно. В общем, не важно как это выглядит, все равно Nuke позволяет запихнуть все в одну гизму с парой ползунков для быстрой настройки.

Давайте пошагово разберем, что же тут к чему. Вот первый блок, тут все просто: пятикратное повторение размытия начиная от значения радиуса 20, заканчивая 240. Тут все на глаз, оглядываясь на референс. Если первые три блюра идут последовательно друг за другом, то два последних с высокой степенью размытия, идут от исходной картинки, так хайлайты сильнее и мне визуально нравится больше, но я пробовал и все последовательно и все от исходника. Почему именно пять блюров? Это оказалось минимально достаточным количеством, чтобы гладко их сшить, четыре уже видно стыки, шесть — избыток.

Следующая операция — получение индивидуальной маски на каждую степень размытия.

Тут я ничего лучше не придумал, кроме как воспользоваться топорным люма-кейером. Да можно изящнее, не спорю, зато наглядно и ползунки вручную покрутить можно. Каждый кейер режет свой диапазон из маски и выдает в альфа-канал свой кусочек.

Ну теперь-то осталось только это совместить.

Каждый размытый проход накладывается поверх предыдущего через Copy, подмешивается по своей маске. Получается 6 степеней размытия от 0 до 240 с плавными переходами.

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

Разумеется, результат не один-в-один. Такого и быть не могло. Но выигрыш в рендертайме колоссальный. И при этом стекло из Vray все равно шумит, хоть настройки я поставил выше своих средних (min shading rate=12, max subdivs=16, Noise threshold=0.01)

Да, кстати, Cryptomatte, зачем он тут. Дак вот, после всех размытий получается такой результат.

Мало того, что лесенка от маски, так еще и размыто все подряд. Для этого вычленяем маску по объекту и мерджим поверх основной картинки наш результат. Вуаля, эффект только на стекле.

Вот и всё, один раз настроив будет все работать на любой сцене, только значения маски подбирать по ситуации. А если подмешать к этому делу канал глубины, то можно получить более точное и реалистичное размытие, учитывающее расстояние до объектов, получится эдакий шустрый Zdefocus на минималках и без боке.

Спасибо тем, кто осилил эту портянку))

PS: Это моя первая запись в сообщество CGI Media. Взято отсюда

Динамический рендеринг против гибридного рендеринга

Я смотрел конференцию Google по SEO, и они говорили о динамическом и гибридном рендеринге. Но я не мог понять разницу, в чем?

Спасибо за ваше время.

1 ответ

Для динамического рендеринга

Джон Мюллер из Google начал объяснять это 21-минутной отметкой в видео. Он сказал: «У нас есть еще один вариант [для JavaScript и поиска], который мы хотели бы представить, мы называем его динамическим рендерингом». Он пояснил, что «динамический рендеринг — это принцип отправки обычного клиентского контента для пользователей и отправки полностью серверного контента в поисковые системы и другим сканерам, которые в этом нуждаются».

Конечно, некоторые могут назвать это маскировкой, но Google сказал, что для этого существует специальное изменение политики для динамического рендеринга. Вы выполняете рендеринг на стороне сервера для робота Googlebot и рендеринг на стороне клиента для пользователя. Вот слайд Джона об этом:

Инструменты, которые помогут вам настроить его, принадлежат Puppeteer и Rendertron.

Google говорит, что вы должны использовать динамический рендеринг, когда сайт большой и быстро меняется, когда он использует современные функции JavaScript, поддерживаемые в Chrome 41 или выше, и сайты, которые широко представлены в социальных сетях, также должны рассмотреть возможность его использования:

Я не знаю больше за пределами, что Google поделится дополнительной информацией об этом в будущем.

Для гибридного рендеринга

Я публикую то, что у меня есть знания. Если вы думаете о гибридном рендеринге, первое, что приходит на ум, это V-Ray.

Давайте рассмотрим несколько вариантов использования V-Ray Hybrid.

Максимизируйте свои вычислительные мощности

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

Используйте все ваши узлы рендеринга

Многие художники и студии имеют рабочие станции на GPU и CPU и узлы рендеринга CPU. С V-Ray Hybrid они могут выполнять рендеринг, используя все имеющееся у них оборудование.

В случае, если ваша сцена не вписывается в пределы памяти вашего GPU, вы все равно можете рендерить на CPU.

Обновление до графических процессоров, как вы идете

Поскольку процессорные машины готовы к замене, V-Ray Hybrid может помочь облегчить переход на более интенсивный рендеринг с помощью графического процессора, продолжая при этом использовать имеющиеся ресурсы процессора. Кроме того, если на рабочей станции или узле рендеринга есть пустой слот PCIe, добавление графического процессора может значительно повысить его скорость без замены всей машины.

Переезжаем на ГПУ рендеринг, Часть 2

Приветсвутю тебя, мой юный Шахтер! Да, да! теперь все визуализаторы где то внутри себя немного копают:) Ведь наступил золотой век рендеринга. Наконец то ваш компьютер почти ничем не ограничен в росте мощности, теперь не нужно держать на балконе целую рендер ферму чтобы считать картинки, достаточно и одного хорошего компьютера. В этой статье я расскажу о реальном опыте переезда на ГПУ рендеринг со всеми возможными проблемами и подводными камнями. Добро пожаловать под кат…

Исходными данными было наличие около 10 видеокарт 1070 различных форм и моделей и 15 рендер нод на процессорах Xeon, поддержка которых в рабочем состоянии превратилась в ад, поэтому было решено срочно избавиться от этого мусора и состряпать рендер ферму на ГПУ.

Недолго думая была куплена майнерская Asrock H110 PRO BTC+ материнская плата с поддержкой 13 PCI-e слотов для видеокарт

и собран живописный монстр на 10 видеокарт и 3 блока питания, которые синхронно запитывают их:

На данном лоте представлены 10 видеокарт в одной Windows системе, которые работают! При этом только 2 из них одинаковые, все остальные разные как по производителю, так и по модели, это сделано специально чтобы проверить стабильность работы такой системы. (Asus, Palit, Gigabyte, Nvidia, KFA )

На момент сборки вышла версия windows 10 которая обеспечивала поддержку 10 видеокарт в системе, windows 7 технически поддерживает не больше 6 штук(и судя по всему мелкомягкие не собираются ничего с этим делать), после этого драйверы “лишних” видеокарт пишут ошибку и работать отказываются, как их не проси.

Запуск любой системы сводится к запуску со всей этой горой железа и установке 1 видеодрайвера, а потом несколько перезагрузок вплоть до того момента, пока винда не поймет как над ней издеваются и не примет всё как есть (обеспечит драйверами все видеокарты) 🙂

Если вам подобное удастся то, рано радоваться, с этим всем ещё надо как то взлететь 🙂 то есть начать суть процесса — ̶М̶А̶Й̶Н̶И̶Н̶Г̶!̶ Рендеринг!

Мы давно и сильно зависимы от Vray по многим причинам, поэтому будем рассматривать его и Redshift.

Итак, как вы видели на картинке в шапке, Вирей может рендерить 10 видеокартами одновременно(VrayRT CUDA 3.6 ) Но делает он это абсолютно бесполезно, рендеринг на 5х1080 видеокартах тестовый сцены с чайниками (HDR+2 VrayLight+motionBlur+DOF) занимает 6 минут, а 10х1080 — 9 минут. При рендере большим количеством видеокарт Врей сталкивается с большой проблемой распределения ресурсов процессора и памяти, что приводит к тотальному провалу рендертаймов, к тому же Windows 10 дополнительно жрет 20% процессора относительно рендеринга в 7ке. При этом Вирей грузит видео карты на 100% весь период времени, ощущение такое что вы на грузовике Прогресс пытаетесь стартовать к МКС. Куда девается вся мощность скорее всего знает только Дружко

Топ-пост этого месяца:  Как повысить юзабилити сайта, и что сделать на сайте для удобства пользователей

По ощущениям эффективность рендеринга вирея линейна до 3х видеокарт в системе, после чего производительность резко падает… (тесты делались на разных материнских платах, количестве оперативной памяти и процессорах).

Все ксеоны уже давно переехали к новому хозяину и я уже было думал броситься с балкона 26го этажа прямо в сугроб, но на выручку пришел священный REDSHIFT

При этом он ограничен 8ю картами прямо на программном уровне.

Но как обычно нельзя просто так взять и решить все проблемы, в виндовс 10 по необъяснимым причинам больше 4х видеокарт редшифт запустить на рендеринг не мог и крашился с вероятностью 146% (Windows 10 официальный с сайта майкрософт, билд обеспечивающий поддержку 10 гпу).

Конечно же прошло немало часов и попыток переустановки драйверов, версий 3д макса, редшифта, танцев с бубнами, но помогло только одно — установка Windows 7.

Пришлось отказаться от 4х видеокарт и оставить в системе 6 штук, которые успешно запустились и начали считать всеми любимые чайники

К моему ужасу редшифт посчитал их за 2 минуты и похоронил Vray окончательно. Казалось бы вот оно — Счастье! Но и это оказалось не всё, Редшифт в продакшен режиме показывал стабильную загрузку ГПУ на 45 процентов мощности какие бы настройки рендера ему не запихивали:

“Это какой то заговор!” — скажите вы, я лишь отвечу:

Нагрузить Redshift на 80-90 процентов можно включив Progressive режим рендеринга, который при этом не позволяет считать Render Elements нивкаком виде.

Разные видеокарты в одной системе работают абсолютно стабильно!

Вирей сильно зависит от Процессора во время рендера на ГПУ. На слабом CPU потери мощности рендеринга могут быть даже с 1 Видеокартой, Редшифт такой проблемы не имеет.

Майнерские материнки в целом подходят для рендеринга, но важно понимать что они ограничены моделями процессоров и количеством Оперативной памяти.

Операционка крайне важна и рассчитывать сейчас на стабильные решения не стоит, вероятно пройдет какое то время, прежде чем RS и остальные дотянуться до тестирования на новейших системах и залатают дыры в поддержке мульти ГПУ.

Специальные майнерские видеокарты не умеют рендерить (было куплено 3 штуки для проверки). Их драйвера сильно отличаются от тех на которых пишется CUDA рендереров и вероятность того что они будут рендерить правильно крайне мала(прецеденты были, но это ничтожно малый процент)

Нельзя покупать видеокарты с одним кулером, они улетят с вами на луну

Блоки питания от 1000 ВТ и обязательно с огромным количеством 6+2pin или 8pin PCI, иначе вам придется питать все несколькими, а это не супер надежно. (Идеальный вариант — серверный БП на 2400WT)

Старые материнские платы с 6-7 PCI слотами с большой вероятность не будут работать, потому что не рассчитаны именно на видеокарты в этих слотах и число линий не соовтествует требованиям, о чем вам с удовольствием скажет винда

8 гб достаточно для текущих задач, истратить видео память представляется крайне сложной задачей, которая ещё и решается редшифтом с помощью использования Оперативной памяти

Октан, центилеос, Фсторм и прочие не были представлены потому что их материаловедение не вписывается в наш пайплайн уж точно и предыдущие их тесты не выявили существенных преимуществ по скорости относительно RS и уж точно не стало удобнее чем Vray в плане работы с материалами и сценой.

Немного рендера с дофчиком и моушен блюром для расслабления глаз.

На текущий момент идеального решения для работы с ГПУ не найдено, оптимальной рендер нодой является система из 6 видеокарт на Winows 7, вероятно очень скоро станет возможно работа редшифта с 8 видеокартами на Win10, но для этого нужно ждать новых релизов как одного, так и другого. Vray стабильно проигрывает в производительности, стабильности да и всём остальном. Забыть его не позволяет лишь широкая распространенность в той сфере в которой мы работаем (стоки и продажа 3д моделей).

PS: 35 видеокарт майнят около 100$ в сутки пока не рендерят :)) Майнить ВЫГОДНО!

Не забываем лайкать и подписываться на мой ВК )

Google выпустил мануал по динамическому рендерингу

В сети появилось справочное руководство по динамическому рендерингу от Google.

Новый функционал должен упростить ранжирование, индексирование и сканирование страниц, содержащих JavaScript.

Суть динамического рендеринга в том, что он умеет переключаться между тем контентом, который обрабатывается на стороне клиента, и предварительно обработанным контентом, предназначенным для пользователя. То есть, роботы Google видят HTML-версию сайта, а пользователю в это же самое время демонстрируется JavaScript-версия.

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

Итак, в каких же случаях это нужно?

По данным Google, нынешним поисковым системам пока не хватает вычислительной мощности для обработки JavaScript. Большинство краулеров им давятся, и это сильно тормозит работу сервиса. Google уверяет, что рано или поздно они эту проблему решат, но пока предлагает использовать динамический рендеринг как своего рода костыль (сродни уже устаревшему AJAX).

При этом не каждый сайт нуждается в таком костыле. Вебмастер должен смотреть в эту сторону, если контент на его сайте меняется резко и часто, либо если он использует функции JS, не поддерживаемые нужными краулерами. Динамический рендеринг можно включить для сайта целиком или для отдельных страниц.

Как это работает?

Веб-сервер проверяет агента пользователя и определяет необходимые для успешного сканирования и индексации краулеры. Запросы от определённых краулеров передаются рендереру, пользовательские запросы обрабатываются как обычно. Динамический рендерер выдает нужному краулеру подходящую именно для него версию контента — от статической HTML до JS.

Пошаговый мануал по внедрению функционала можно найти в Документации Google, пока только на английском. Впервые решение было представлено на конференции I/O весной 2020 года.

Новые методы экономного фовеального рендеринга и отображения от Google

Разрешения дисплеев для виртуальной реальности растут, однако мощность графических процессоров для обслуживания всё более высоких разрешений не обязательно растёт с той же скоростью. Для решения этой проблемы используются обходные пути, которые оптимизируют процесс рендеринга с целью сокращения требуемых ресурсов при сохранении визуального качества. Самым известным из подобных решений, внедряемым на широкий рынок, является фовеальный рендеринг (англ. foveated rendering), о котором вы не раз читали на страницах Голографики. Его суть в том, чтобы отслеживать направление взгляда пользователя для снижения качества картинки на периферии его внимания, где он этого всё равно не замечает. Тем не менее, проблема оптимизации картинки на этом не исчерпывается — она немного сложнее.

Чтобы пояснить актуальную ситуацию на рынке, менеджер по программному обеспечению Google Бехнам Бастани (Behnam Bastani) и разработчик программного обеспечения для Daydream Эрик Тёрнер (Eric Turner) опубликовали краткий обзор нескольких методов в зарождающейся области рендеринга для дополненной и виртуальной реальности. Мы предлагаем вам познакомиться со слегка упрощённой версией их материала.

Справка Голографики:

Фовеальный рендеринг («foveated rendering», от лат. fovea centralis — центральная ямка) — техника графического рендеринга, основанная на динамическом отслеживании внимания пользователя к областям изображения на дисплее. Человеческий глаз устроен так, что внимание к деталям изображения возрастает по мере приближения к центру поля зрения. На периферии же внимание к деталям снижается, но повышается восприимчивость к движению. Это связано с эволюционным развитием такого зрительного аппарата, который даёт идеальный баланс подробного восприятия и безопасного отслеживания угроз. Техника фовеального рендеринга предполагает снижение качества картинки на периферии поля зрения пользователя — вне зоны покрытия центральной ямки в глазу — для оптимизации затрат вычислительных ресурсов.

Бастани и Тёрнер говорят, что текущие ограничения в решении проблем с рендерингом — это малое количество контента, скорость передачи данных, задержки и вопросы взаимодействия с объектами реального мира в дополненной реальности. Чтобы помочь решить некоторые из этих проблем, специалисты рассказали о трёх областях исследований, которые, по их мнению, должны быть основными: фовеального рендеринг, чтобы уменьшить вычислительные затраты на пиксель, фовеальную обработку изображений для уменьшения количества визуальных артефактов и преодоление задержек через уменьшение количества передаваемых бит на пиксель.

Традиционные методы рендеринга на основе данных о положении глаз пользователя, которые делят кадры на несколько областей разного разрешения, имеют свойство вызывать заметные артефакты. Это нарушает ожидаемый эффект, ведь периферия должна быть «сжата» незаметно для зрителя. На приведённой ниже анимации слева показан рендеринг в полном разрешении, а справа — традиционный фовеальный рендеринг с областью высокого качества в середине.

Исследователи Google предлагают два метода борьбы с артефактами: фазово-выровненный фовеальный рендеринг (Phase-Aligned Foveated Rendering) и конформный фовеальный рендеринг (Conformal Foveated Rendering). Ещё два метода описывают более эффективное отображение контента.

Фазово-выровненный фовеальный рендеринг

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

Затем картинка подвергается повышающей дискретизации и репроецируется на дисплей, чтобы компенсировать вращение головы пользователя, что, согласно исследованиям Google, уменьшает мерцание. Вы можете видеть, что в правой анимации сглаживание заметно, но оно намного меньше и плавнее, чем в левой сцене с традиционным рендерингом.

Исследователи говорят, что этот метод обходится компьютеру дороже, поскольку требует двух проходов растеризации или отрисовки изображения для дисплея. Тем не менее, он позволяет получить «чистую экономию» благодаря уменьшению качества в областях низкой чёткости. Недостатком является то, что метод по-прежнему создаёт заметную границу между областями высокой и низкой чёткости.

Конформный фовеальный рендеринг

Поскольку человеческий глаз может плавно переходить от низкой к более высокой чёткости по мере приближения к области покрытия центральной ямки, в рендеринге можно использовать подход максимального соответствия этой плавной градации.

По сравнению с другими методами, этот сулит уменьшение общего количества вычисляемых пикселей, а также не даёт пользователю видеть явную разделительную линию между областями высокой и низкой чёткости. Бастани и Тёрнер говорят, что эти преимущества открывают «агрессивное использование фовеального рендеринга при сохранении того же уровня качества, что усиливает экономию».

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

Вы можете наблюдать конформный рендеринг справа, где контент соответствует визуальному восприятию глаза и характеристикам линз. Слева простой фовеальный рендеринг. Оба метода используют одинаковое общее количество пикселей.

Фовеальная обработка изображений

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

Коррекция хроматической аберрации. На верхнем изображении показан обычный способ. Нижнее (зелёное) изображение показывает процесс при фовеальном рендеринге. Левое изображение показывает восстановленную после оптических искажений «фовеальную» картинку. На правом изображении показана граница при коррекции линзовых искажений в фоновом режиме. Правое изображение показывает, что минимальная ошибка появляется рядом с границами буфера кадров. В очках это не заметно.

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

Фовеальная передача

Поскольку Google уделяет значительное внимание именно мобильным приложениям виртуальной и дополненной реальности, важной проблемой для неё является экономия энергии. Исследователи говорят, что их «фовеальная передача» сэкономит энергию и пропускную способность, передавая минимальный объём данных, необходимый для отображения.

В отличие от потоковой передачи прошедшего фовеальный рендеринг контента (слева), фовеальная передача обеспечивает предварительную реконструкцию потокового контента и уменьшает количество передаваемых битов.

Экономии энергии можно добиться путём перевода простых задач апскейлинга и слияния кадров на сторону дисплея и передачи только самого фовеального контента. Сложности возникают, если фовеальная область движется в тандеме с отслеживанием глаз. Временные артефакты, предположительно, возникают из-за того, что компрессия, используемая между мобильной системой на чипе и дисплеем, пока не предназначена для фовеального контента.

Сравнение мерцающей картинки после применения потоковой компрессии (Display Stream Compression — DSC) к обычному «фовеальному» контенту (слева) и полной интеграции описанных методов.

Полный текст отчёта доступен здесь.

Не пропускайте важнейшие новости о дополненной, смешанной и виртуальной реальности — подписывайтесь на Голографику в ВК, Twitter и Facebook!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий