Лучшее  🚀
04.01.2017 в 15:14 Evernews

Как работает шахматный рендеринг: упрощенная версия

Если вы интересовались PlayStation 4 Pro, то наверняка слышали о технологии так называемого "шахматного" рендеринга - с помощью этой технологии можно генерировать изображение более высокого разрешения на основе изображений меньшего разрешения и некоторых дополнительных данных.

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

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

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

Результат может быть примерно таким; разрешение нашего виртуального дисплея оказалось очень маленьким, всего 10х10 пикселей:

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

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

Затем из специального буфера (у PlayStation 4 Pro он называется ID Buffer) извлекаются данные о положении всех объектов в сцене на предыдущем кадре: они сравниваются с текущим положением дел, чтобы определить, какие объекты изменили свое положение, и как именно они это сделали.

После этого изменившие положение пиксели из предыдущего кадра перемещаются на новые позиции, и два кадра - новый и измененный предыдущий - склеиваются в один кадр.

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

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

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

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

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

Читать далее