Серия игр Grand Theft Auto прошла долгий путь с момента своего первого релиза в 1997 году. Примерно 2 года назад Rockstar выпустила GTA V. Просто невероятный успех: за 24 часа игру купило 11 миллионов пользователей, побито 7 мировых рекордов подряд. Опробовав новинку на PS3, я был весьма впечатлен как общей картинкой, так и, собственно, техническими характеристиками игры.

Ничто так не портит впечатление от процесса, как экран загрузки, но в GTA V вы можете играть часами, преодолевая бескрайние сотни километров без перебоев. Учитывая передачу солидного потока информации и свойства PS3 (256 Mb оперативной памяти и видеокарта на 256 Mb), я и вовсе удивился, как меня не выбросило из игры на 20-ой минуте. Вот где чудеса техники.

В этой статье я расскажу о проведенном анализе кадра в версии для ПК в среде DirectX 11, которая съедает пару гигов как оперативки, так и графического процессора. Несмотря на то, что мой обзор идет со ссылкой на ПК, я уверен, что большинство пунктов применимо к PS4 и в определенной степени к PS3.

Анализ кадра


Итак, рассмотрим следующий кадр: Майкл на фоне любимого Rapid GT, на заднем плане прекрасный Лос-Сантос.

image

Осторожно! Трафик!

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

Environment Cubemap (кубическая текстура окружающей среды)


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

Как создается кубическая текстура? Для тех, кто не знаком с техникой, поясню. Это как делать панорамные снимки: поставив камеру на штатив, представьте, что вы стоите прямо в центре большого куба и по одной фотографируете все 6 его граней, каждый раз поворачиваясь на 90°.

В игре задействован тот же принцип: каждая грань превращается в HDR-текстуру 128x128. Первая грань располагается следующим образом:



Та же схема повторяется для 5 оставшихся граней, и в итоге мы получаем кубическую текстуру (cubemap):

image
Так куб выглядит снаружи


Так он выглядит изнутри (к сожалению, вставить на Хабр панорамное изображение, представленное в первоисточнике в виде js-скрипта, не удалось)

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

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

От кубической текстуры к текстуре двойного параболоида


Полученная кубическая текстура окружающей среды впоследствии преобразуется в двойной параболоид.

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


Куб в «развороте» и полученные «полушария»

Для чего нужны подобные трансформации? Думаю, все дело (как всегда) в оптимизации: в кубической текстуре шейдеры фрагментов, теоретически, имеют доступ к 6 граням размером 128х128, в то время как в случае с текстурой двойного параболоида все сводится к 2 «полушариям» 128х128. Кроме того, поскольку большую часть времени камера находится на крыше автомобиля, большинство запросов поступает в верхнюю полусферу.

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

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

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

Выбраковка и уровень детализации


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

В зависимости от расстояния до камеры объект будет высоко- или низкополигональным или не будет прорисовываться вообще. Так бывает, например, с травой или цветами вдалеке. Итак, на данном этапе определяется необходимость прорисовки объекта и, если она имеется, то с каким уровнем детализации.

Здесь-то и обнаруживаются отличия между запуском игры на PS3 (не хватает вычислительной поддержки шейдеров) и ПК или PS4.

Генерирование G-буфера


«Основная» доля рендеринга происходит именно здесь. Все видимые ячейки графической сетки отрисовываются одна за другой, но вместо немедленного расчета степени затенения вызовы отрисовки лишь фиксируют необходимую информацию в отдельных буферах, получивших название G-Buffer. GTA V использует технологию MRT, что позволяет каждому вызову отрисовки фиксировать до 5 специальных команд.

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

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

Генерирование G-буфера

Генерирование на 15%


Генерирование на 30%


Генерирование на 50%


Генерирование на 75%


Генерирование на 100%

За воспроизведение всех этих эффектов отвечают цели рендеринга – LDR-буферы (RGBA с 8 битами на канал), хранящие различную информацию, которая позже понадобится для расчета итоговых показателей затенения:

• Диффузная карта: сохраняет «исходный цвет» ячейки. По сути, она представляет собой свойство материала и, фактически, не меняется при различном освещении. Но видите белые блики на капоте автомобиля? Примечательно то, что в GTA V затенение рассчитывается на основе поступающего солнечного света до формирования, собственно, диффузной карты. Необходимая информация о «смешивании» хранится в альфа-канале (подробнее об этом позже).

• Карта нормалей: сохраняет векторы нормалей для каждого пикселя (R, G, В). Здесь также используется альфа-канал, хотя я и не уверен, каким образом: похоже, он выполняет функцию бинарной маски для отдельных растений, расположенных рядом с камерой;

• Карта бликов. Здесь хранится информация, связанная с бликами / отражениями:

  • Красный: насыщенность блика;
  • Зеленый: глянец (гладкость);
  • Синий: насыщенность промежуточных бликов (обычно постоянный показатель для всех пикселей с изображением одного и того же материала).

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

Итак, ранее я упомянул о создании команд одновременно для 5 целей рендеринга, но рассказал только о 4 из них.

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


Глубина слева и шаблон справа соответственно

Карта глубины: в ней фиксируется информация о расстоянии каждого пикселя до камеры.

Интуитивно можно было бы ожидать, что отдаленные пиксели будут белыми (глубина 1), а те, что ближе, — темнее. Но это не тот случай: видимо, в GTA V использовали логарифмический Z-буфер, изменив Z. Но зачем? Похоже, дело в числах с плавающей запятой, которые в процессе кодировки гораздо точнее, если их значение близко к 0. Так, изменив Z, можно вводить куда более точные данные о глубине отдаленных объектов, которые, в свою очередь, устраняют Z-погрешности. Учитывая продолжительность игровой сессии, не воспользоваться таким приемом было просто невозможно. Хотя, GTA V и не открыли Америку, ведь аналогичная техника встречается в той же Just Cause 2, например.

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

  • 0x89: персонаж, управляемый игроком;
  • 0x82: автомобиль, управляемый игроком;
  • 0x01: неигровые персонажи;
  • 0x02: транспортные средства, включая машины, велосипеды и так далее;
  • 0x03: растительность и листва;
  • 0x07: небо.

Все эти буферы были сгенерированы благодаря 1900 с лишним вызовам отрисовки.

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

А сейчас хотелось бы сказать пару слов о роли альфа-канала в диффузной карте. Посмотрите на скриншот:

image
Приближенный фрагмент дифузной карты

Видите, что некоторых пикселей не хватает? Это особенно заметно на примере деревьев. Как будто в спрайтах отсутствуют отдельные тексели.

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

Такая модель, действительно, выглядит странно, почти как шахматная доска. Возможно ли что… игра делает рендеринг только для 1 из 2 пикселей?

Чтобы уточнить, я заглянул в D3D байт-код. И вот, пожалуйста:

dp2 r1.y, v0.xyxx, l(0.5, 0.5, 0.0, 0.0)  // Dot product of the pixel's (x,y) with (0.5, 0.5)
frc r1.y, r1.y                            // Keeps only the fractional part: always 0.0 or 0.5
lt r1.y, r1.y, l(0.5)                     // Test if the fractional part is smaller than 0.5


По сути, мы видим условие (X+ Y)% 2 == 0, которое соблюдается только для одного пикселя из 2 (где х и у — координаты пикселя).

Это лишь одна из причин выбраковки пискелей (вторая это значение альфа <0,75), хотя и ее было вполне достаточно для того, чтобы объяснить специфику обнаруженного явления.

Информация о том, какие ячейки отрисовывались в рассмотренном «выборочном» режиме, хранится на альфа-канале диффузной карты, как видно на картинке

Альфа-канал диффузной карты


imageТак почему же некоторые модели отрисовывались именно так? Может, это помогало сохранить заливку или параметры затенения? Я вовсе не хотел сказать, что графические процессоры не предусматривают подобную детализацию: пиксели закрашиваются не по отдельности, а группами 2х2. И речь не о производительности, дело в уровне детализации: такая модель делает закрашенные ячейки более прозрачными за счет разных уровней детализации.

Этот метод называется альфа-стипплинг.

Тени


В игре используются CSM (каскадные карты теней): 4 карты теней формируют текстуры 1024x4096. Каждая карта теней предназначена для разной видимости. Чем чаще повторяются действия, тем шире пирамида видимости камеры, тем больше панорама кадра. Благодаря такому подходу тени объектов возле игрового персонажа имеют более высокое разрешение, чем тени отдаленных предметов. Вот краткий обзор информации о глубине 4 карт:

image

Карты теней


Этот процесс может потребовать немало энергии, так как приходится делать ререндеринг сцены целых 4 раза, но отсечение по пирамиде видимости позволяет опустить обработку ненужных полигонов. В данном случае CSM были созданы в результате 1000 вызовов отрисовки.

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

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

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

image
Тени от солнца и облаков (зеленым)

image
Размытые тени

Несколько слов о размытии: техника не из дешевых, т.к. приходится отдельно заниматься разными текстурами. Таким образом, чтобы облегчить задачу, как раз перед выполнением размытия создается «облегченная» текстура: масштаб буфера тени снижается до 1:8 и делается легкое размытие пиксельным шейдером посредством четырехкратного повторения команды Grab (). Это позволяет примерно оценить общее количество полностью освещенных пикселей. Впоследствии, когда понадобится полное размытие, в первую очередь, считывается информация об «облегченном» варианте процедуры: как только шейдеру попадается полностью освещенный пиксель, он автоматически выдает единицы и ему не приходится запускать трудоемкий процесс полномасштабного размытия.

imageЯ не буду вдаваться в подробности, так как осветил тему отражения (изображение карты отражения плоскости справа) во второй части и в данной сцене эффект едва заметен. Скажу только, что этот шаг генерирует карту отражения для поверхности океана. Суть принципа сводится к повторной прорисовке сцены (650 вызовов отрисовки) в рамках крошечной текстуры 240x120, но уже в режиме «вверх ногами», чтобы создавалось ощущение отражения в воде.

Преграждение окружающего света в экранном пространстве


Здесь мы имеем дело с созданием линейной версии буфера глубины, на основе которой формируется карта SSAO (преграждение окружающего света в экранном пространстве).

image
Четкое изображение

image
Размытое изображение

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

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

Комбинация G-буфера


Так, настало время объединить все сгенерированные буферы!

Пиксельный шейдер считывает данные из различных буферов и определяет окончательное значение затенения пикселей в HDR.

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



И мы получаем итоговое изображение:

image

Картинка становится все приятнее, хотя по-прежнему не хватает океана, неба, прозрачных объектов… Но сначала о главном: нужно доработать образ Майкла.

Subsurface Scattering (подповерхностное рассеивание)


Есть вопросы с затенением кожи Майкла: на лице встречаются очень темные участки и создается впечатление, будто это плотный пластик, а не тело человека.

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



Но как удалось запустить SSS отдельно для образа Майкла?

Во-первых, вырезается только силуэт. Тут на помощь приходит сгенерированный ранее буфер шаблона: всем пикселям Майкла присвоено значение 0x89. Таким образом, мы можем сконцентрироваться именно на них, но ведь нужно применить SSS только к коже, а не к одежде.

На самом деле, когда объединяли все G-буферы, помимо показателей затенения, хранящихся в RGB, отдельные данные были зафиксированы и в альфа-канале. А точнее, альфа-каналы карты освещенности и карты бликов использовались для создания бинарной маски: пиксели, соответствующие коже Майкла и изображению некоторых растений, помечались единицей в альфа-канале. Другим пикселям, в частности, пикселям одежды, присваивалось значение альфа 0.

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

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

Вода


В рассматриваемой сцене в кадр попало не так много воды, но все же: океан на заднем плане, пару бассейнов тут и там.

Визуализация воды в GTA V сосредоточена в двух направлениях — отражение и преломление.

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

Океан и бассейны отрисовываются по очереди в режиме MRT. Так одновременно достигается несколько целей:


Слева диффузия воды, справа непрозрачность

  • Диффузная карта воды: фиксирует исходный цвет воды.
  • Карта непрозрачности воды: в красном канале, по сути, сохраняется информация об отдельных свойствах непрозрачности воды (например, для океана это всегда 0,102, для бассейнов — 0,129). В зеленом канале помечено, насколько глубоко пиксель расположен относительно поверхности воды (глубокие пиксели соответствуют менее прозрачной воде, что требует подключения диффузной карты, в то время как пиксели воды с поверхности гораздо прозрачнее).
  • Обратите внимание: все бассейны визуализируются без привязки к условиям, даже если их, практически, перекрывают данные других ячеек, они все равно хранятся в красном канале. Что касается зеленого канала, где учитываются только реально видимые пиксели, исключительно «водные» пиксели попадают на готовое изображение.


Теперь можем объединить предварительно созданные буферы и сгенерировать карту преломления:

image
Карта преломления для воды

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

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

image
Изображение перед добавлением воды


Преломление на плоскости, отражение и карты рельефа

image
Изображение после добавления воды

Атмосфера


Создаем карту так называемых объемных теней: она помогает затемнить атмосферу / туман, которые непосредственно не освещены солнцем.

image

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

image
Базовое изображение

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

image
Базовое изображение с добавлением тумана

После визуализируется небо.

image

И в самом конце, вслед за ним, отрисовываются облака.

image
Конечное изображение

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

На этом этапе задействованы отдельные текстуры, напоминающие эффект шума Перлина.

Так же визуализируются и облака: на горизонте появляется обширная сетка, на этот раз в форме кольца. Одна карта нормалей и одна карта плотности позволяют визуализировать облака: это большие бесшовные текстуры 2048x512 (соединяются по дуге с левой и правой сторон).


Слева плотность облаков, справа нормаль

Прозрачные объекты


Теперь займемся всеми прозрачными объектами: очки, лобовое стекло, пылинки в воздухе…

image

Всего-то потребуется 11 вызовов отрисовки, правда, при обработке пыли придется неоднократно обращаться к инстансингу.

image
Итоговое изображение

Сглаживание разрядности


Помните ранее проведенный краткий экскурс об отдельных деревьях, сглаженных на диффузной карте? Вот так выглядит изображение без сглаживания:

image

Самое время все исправить: запускаем пиксельный шейдер для пост-обработки – и он считывает данные буфера исходного цвета и альфа-канала диффузной карты, чтобы выяснить, какие пиксели сглажены. Для каждого пикселя может понадобиться до 2 соседних пикселей, чтобы определить конечный цвет «сглаженного» элемента.

image
После сглаживания

Это отличный трюк, ведь с его помощью все изображение «выравнивается» за один подход: причем разнообразие геометрических форм в той или иной сцене роли не играет.

Заметим, однако, что данный фильтр неидеален: в отдельных случаях, видимо, он не справился, я все равно заметил эффект шахматной доски и на PS3, и на ПК.

Тональная компрессия и свечение


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

Тональная компрессия осуществляет конвертирование этих значений цвета из HDR в LDR. Есть несколько функций, с помощью которых один формат заменяется другим. Классический вариант, получивший широкое распространение, — метод Рейнхарда (именно его я использовал при создании скриншотов, опубликованных ранее) — дает результаты, близкие к окончательному виду игры.

Но разве в GTA V, действительно, использовали метод Рейнхарда? Придется опять залезть в байт-код шейдера:

// Suppose r0 is the HDR color, r1.xyzw is (A, B, C, D) and r2.yz is (E, F)
mul r3.xy, r1.wwww, r2.yzyy            // (DE, DF)
mul r0.w, r1.y, r1.z                   //  BC
[...]
div r1.w, r2.y, r2.z                   // E/F
[...]
mad r2.xyz, r1.xxxx, r0.xyzx, r0.wwww  // Ax+BC
mad r2.xyz, r0.xyzx, r2.xyzx, r3.xxxx  // x(Ax+BC)+DE
mad r3.xzw, r1.xxxx, r0.xxyz, r1.yyyy  // Ax+B
mad r0.xyz, r0.xyzx, r3.xzwx, r3.yyyy  // x(Ax+B)+ DF
div r0.xyz, r2.xyzx, r0.xyzx           // (x(Ax+BC)+DE) / (x(Ax+B)+DF)
add r0.xyz, -r1.wwww, r0.xyzx          // (x(Ax+BC)+DE) / (x(Ax+B)+DF) - (E/F)


Так, так… что тут у нас? Именно уравнение типа (x(Ax+BC)+DE) / (x(Ax+B)+DF) - (E/F) ознаменовало прорыв Джона Хэбла в киноиндустрии в 2009 году.

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

Процесс преобразования в LDR осуществляется следующим образом:

Разрешение буфера HDR снижается до ? от исходного значения.

  • Вычислительный шейдер определяет среднюю яркость буфера, выводя результат в виде текстуры 1х1.
  • Рассчитывается новая экспозиция, за счет чего сцена будет яркой/темной.
  • Фильтр яркости запрашивает только пиксели, имеющие яркость выше определенного значения (задается экспозицией).
  • В этой сцене всего несколько пикселей прошли фильтрацию: некоторые освещенные участки на автомобиле с высокой отражающей способностью.
  • Показатели буфера яркости неоднократно сокращаются вплоть до 1/16 от исходных, а затем увеличиваются до 1/2 от исходных.
  • К исходным HDR пикселям добавляется свечение, а затем при помощи конвертера из Uncharted 2, цвет преобразуется в LDR. Одновременно производится гамма-коррекция, позволяющая заменить линейные каналы на sRGB.


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

image

Экспозиция изменяется постепенно, кадр за кадром, резких изменений вы не увидите.

Так была предпринята попытка имитировать природу человеческого глаза: вы заметили, что после длительного пути по темному туннелю и внезапного выезда на солнце окружающая обстановка некоторое время воспринимается слишком яркой? Затем перестает «резать глаз» и становится «нормальной», а экспозиция адаптируется к новому значению. Похоже, в GTA V пошли еще дальше, максимально приблизив адаптацию экспозиции по линии «Темный > Яркий» к аналогичным свойствам человеческого глаза.

Сглаживание и искажение объектива


Если применяется метод FXAA, то он теперь он определенно уделяет внимание сглаживанию неровных контуров ячеек.

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

image
До искажения

image
После искажения

Пользовательский интерфейс


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

image
Мини-карта

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

image
Изображение перед добавлением мини-карты

На этом этапе мини-карта отправляется в буфер основного изображения, поверх нее добавляется пару небольших иконок и виджетов.

Да, времени потратили немало, но оно того стоило: вот вам финальный кадр во всей красе!

image

Всего потребовалось 4155 вызовов отрисовки, 1113 текстур и 88 целей рендеринга.

ЧАСТЬ №2: Детализация, отражения и пост-эффекты в GTA V




Послесловие от переводчика.

Уважаемые читатели, надеюсь, Вам понравился данный материал. Если это так, то мы, в лице команды ua-hosting.company, подготовим для вас продолжение, размещенное в блоге автора первоисточника.

Мы стараемся готовить для вас интересные материалы, в которых нет б-гмерзкой SEO-оптимизации текста и минимум трех ссылок на себя любимых. Поэтому можете смело подписываться на наши блоги на Хабре и Гиктаймс, а мы постараемся, чтобы вы об этом не пожалели. Еще хотелось бы добавить, что мы прекрасно понимаем, что никто не любит рекламу, особенно наглую, и мы ее всячески стараемся в своих материалах избегать. Поэтому оставляем ссылку на анонс нашей очередной скидочной акции в честь киберпонедельника тут, в подвале, где она никому не помешает насладиться статьей выше.

Комментарии (58)


  1. EnterSandman
    30.11.2015 07:25
    -20

    11 пользователей купило? Невероятный успех. Поправьте.


    1. ragequit
      30.11.2015 07:28
      +9

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


  1. alltiptop
    30.11.2015 07:48
    +6

    Меня одного раздражают разрывы на рубашке? А так же жутко размытые (или просто так нарисованные) текстуры? Не чувствуется ни мультяшность, ни псевдо-реализм, ну а по поводу пост-эффектов то тут все сейчас примерно одинаковы — даже

    градостроительные симуляторы


    1. ragequit
      30.11.2015 07:50
      +8

      Каак бы в плане графона не стоит забывать, что игре то уже два года и шла она на очень и очень слабеньких по железу (по современным меркам) xBox и PS3. Даже не шла, летала.

      Майкл как бы смотрит на консоли и говорит: это из-за вас графика такая хреновая!


    1. AllexIn
      30.11.2015 08:14
      +1

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


      1. alltiptop
        30.11.2015 13:46

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


  1. leremin
    30.11.2015 08:00
    +8

    Последняя GTA, которую видел — была San Andreas, но все равно было интересно почитать. Спасибо. Пишите еще.


  1. saggid
    30.11.2015 08:58
    -43

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


    1. ragequit
      30.11.2015 09:06
      +18

      Сам никогда не был любителем GTA, как-то больше по HoMM и WC3 когда все играли в GTA Vice City и SA. Тут вопрос в другом. Парни из Rockstar умудрились запихнуть GTA V в PS3 и xBox с приемлемым качеством картинки и без лоадов, что само по себе — О____о. А на ПК так вообще отлично получилось в плане графики и прочих деталей радующих глаз. И сюжет игры на эти их достижения не влияет вообще.


    1. Rel1cto
      30.11.2015 09:47
      +11

      Меня в мои 30 тоже не увлекает, поэтому ГТА 1-4 никогда ни привлекали.
      А вот 5 часть прошёл на одном дыхании. Огромное количество юмора. Дичаший угар и чад кутежа в каждой миссии.


      1. bigfatbrowncat
        30.11.2015 17:00

        Интересно девки пляшут… А мне в те же 30 как раз наоборот казалось, что в GTA2-3 был какой-то налет мультяшности и пародийности происходящего, а потом чуваки ударились реализьмом и вместо смешных типа-гопарей стали суровые настоящие…


        1. JDima
          30.11.2015 20:04
          +3

          Это в IV суровый гопарь. Кстати, пройти ее мне так и не удалось, надоело.

          В V перешли к реалистичному стёбу, будь то коррупция в спецслужбах и их конкуренция между собой или стереотипные женские навыки вождения (http://www.youtube.com/watch?v=tNfbgw-InaE). В промежутках масса забавных миссий, причем обычно осмысленных, с интересным сюжетом, а не «пойди туда, убей того, принести то». От «увидев спрыгнувшего с балкона хахаля жены, догнать и покарать его, с большим фейлом в конце этого мероприятия» и «спасти нерадивого сына, заперевшегося в угнанной какими-то гопниками яхте» до «встретить мужика, агитирующего за лигалайз, затянуться его травой, из плазмагана отстреливаться от наступающих со всех сторон полчищ инопланетян» и «помочь папарацци снять побольше скандальных фотографий всяких местных звездулек».

          А гопарей-то нет. Есть бывшие мафиози и реднеки-психопаты с неконтролируемыми вспышками агрессии (http://www.youtube.com/watch?v=ozI1Hslg6zY).


          1. AlexP11223
            30.11.2015 22:31
            +1

            А гопарей-то нет. Есть бывшие мафиози и реднеки-психопаты с неконтролируемыми вспышками агрессии

            А Франклин?


            1. JDima
              30.11.2015 22:58
              +3

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

              Вот Тревор ведет себя как гопник. Но к нему это слово тоже слабо подходит. Он блистательный, феноменальный психопат, «протохипстер» как его назвал Майкл. Серьезно, один из самых интересных персонажей во всей современной развлекательной индустрии, не только в геймдеве.

              Майкл — профессиональный грабитель, гангстер в завязке. Не гопник.

              Ну серьезно, не подходит это слово ни к кому из них, все они глубже, интереснее. Вот к Нико из 4-й части подходит.


              1. PHmaster
                01.12.2015 05:27
                +3

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

                А Тревор — да, красавчик. Редко кому удается так детально и смачно прорисовать характер персонажа, обычно получается либо какой-то пафос, сплошь состоящий из штампов и кальки, либо вообще не пойми что. А здесь — орел мужчина! За него интереснее всех было играть, никогда не знаешь, что он выкинет при следующем повороте сюжета.


                1. saggid
                  01.12.2015 22:03

                  Капец меня заминусовали. Ладно бы по делу, но уж за какое-то высказывание своего мнения о какой-то игрухе?

                  Слово «гопник» было просто обобщающим в моём посте) Я под этим словом имел ввиду всё то, что вы здесь так подробно расписали. Мне просто вообще любые истории о разных видах преступной деятельности кажутся глупыми и не особо достойными внимания. В целом, истории про людей, которых и людьми-то вообще назвать трудно, и оправданий тут никаких нормальных нельзя найти.

                  Есть же в мире масса других историй и жизненных сторон, помимо грабежа, обмана, ведения нечестного бизнеса и прочих низменных вещей, которыми тебя заваливают с головой в каждой новой GTA. Я про это только говорил) Вообще, это конечно недостаток всего современного медиаконтента — очень низкий уровень осмысленности.


                  1. JDima
                    01.12.2015 23:41

                    > Мне просто вообще любые истории о разных видах преступной деятельности кажутся глупыми
                    Это довольно глупый подход, наравне с «зажмуриться и не видеть зла в окружающем мире». Жанр не может быть глупым. Глупым может быть материал или его подача.

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

                    > истории про людей, которых и людьми-то вообще назвать трудно
                    Тем не менее, это — люди. По-своему интересные. Один пытается спасти разваливающийся брак, другой пытается выбраться из болота, третий мечется между дружбой и импульсивным желанием убивать, попутно развивая наркобизнес. Конечно, преступники. Если гопник — скучный преступник, то эти — как клан Сопрано примерно.

                    Вообще говоря, в массовом сознании как минимум населения постсоветского пространства и так есть серьезные изъяны — http://kungurov.livejournal.com/135033.html.

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

                    Еще Fallout 4 есть, но он, конечно, попроще будет.


                    1. saggid
                      03.12.2015 05:20

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

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

                      Ведьмак 3… Ну что про него вам рассказать? Да, ждал я от него чего-то прорывного. Когда вышла — поиграл немного, прошёл несколько квестовых линий, помог большому жирному мужику найти ребёнка его дочери, которую он до этого сам же и сделал беременной, потом пол часа вёл к шаману его козлёнка, с которым он собирался совокупиться, и по-другому он мне помогать отказывался… В общем, где-то там с меня оказалось достаточно, и удалил я этого ведьмака от греха подальше и больше не возвращался к нему. Это вообще какой-то зашкаливающий набор мерзостей, помощнее всякой GTA будет.

                      Что насчёт Fallout — к играм от Бетесды у меня практически только положительные чувства) И истории у них всегда получаются очень интересные, и миры, и глубина проработки иногда реально поражает. Это и есть те игры (F3, New Vegas, Skyrim и F4), в которых я периодически отключаюсь от реальности и пропадаю часами, то в одной, то в другой. До сих пор ни одну из них толком не прошёл, но меня это вообще не печалит. Оно тем и интересно, что миры в этих играх настолько большие и глубокие, и квесты интересные, что их хватает на целые годы. Чего только стоит загадочный мистер Хаус из нью вегаса, или возможность усыновить ребёнка в Скайриме…


                      1. JDima
                        03.12.2015 09:01

                        > Это вообще какой-то зашкаливающий набор мерзостей
                        Наша история мерзкая. Это ведь вполне реалистичное изображение средневековья, с добавлением магии. А сюжетная линия про барона (который, на самом деле, не сказать чтобы плохой человек) вообще чуть ли не лучшее что случалось в геймдеве за последние годы (по мнению меня и многих обзорщиков). Тот выбор, который нужно сделать в одном месте… Просто шикарно. Большинство прошедших наверняка подбирали челюсти с пола и бормотали «я же хотел как лучше...». Я сумел сначала выбрать правильно, потом ради интереса прошел плохой вариант. Жуть, причем закономерная, предсказуемая жуть, которую многие не сумели разглядеть заранее.

                        Ну в общем понятно. Game of Thrones, где в первой серии брат трахает родную сестру и следом сбрасывает ребенка с крыши, вам противопоказан :) F4, где в одной из ранних сцен убивают мать, пытающуюся защитить ребенка, все-таки тоже. Вообще, F4 хорош, но после польского шедевра навевает грусть. Скучаешь по мощнейшему сюжету с глубокими персонажами и несколькими слоями смысла во всём что происходит. В Fallout NPC — именно NPC, примитивные и скучные. Мистер Хаус показался загадочным? http://www.youtube.com/watch?v=pGMYNR8hVM8 (чуть-чуть спойлеры для аддона, ничего серьезного), особенно 0:45 и затем совершенно пробивающий момент на 4:55.


                        1. saggid
                          04.12.2015 06:51
                          +1

                          Вас послушаешь, так нам всем надо обратно в средневековье катиться) Там же шаманы козлов дерут, и бароны своих дочерей, и братья своих сестёр… Ухх, что за чудесные времена были) Надо бы хотя-бы фильмов и игр пару десятков про всё это снять, вспомнить былое)

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

                          Глянул ваш ролик на ютубе с этим мужиком, останавливающим время. Ну вот вы сами задумывались о том, насколько осмысленны действия этого духа? Кидать мух в супы и сувать палки в глаза крестьянам — ради вот этих низменных дел он научился временем управлять? Я как раз про таких реально тупых персонажей и рассказываю вам: осмысленность всех их действий стремится к нулю. Такого же бреда, кстати, полно и в Скайриме с его даедра-божествами. Хвала Всевышнему, что их хотя-бы можно просто послать куда подальше, и никакой действительно существенной роли они не играют.

                          И кстати, до Мистера Хауса из F:NV ваш пример совершенно не дотягивает. Вообще никак. Мистер Хаус — у него цели были совершенно иные, стратегия и способы достижения целей — вообще удивляющие. Никаких низменных глупостей, вроде всяких мух в супе…

                          Ну да ладно, это всё мелочи были. Раз уж разговор пошёл об интересных историях мира, давайте перейдём к хардкору. Я знаю, что 98% обитателей этого форума являются исламофобами, но меня не особо волнует. В Священном Коране полно удивительных и прекрасных историй. Одна удивительнее другой. Знаете ли вы об этом? Давайте сделаем небольшой экскурс в мир пророков Всевышнего, обсудим хотя-бы одну из них.

                          Был в этом мире такой пророк, как пророк Йусуф (или Иосиф, если по-христиански). Его истории в Коране посвящена целая сура. Коротко о сути: он со своей семьёй жил в пустынной местности, отец его очень любил. У отца был два сына от одной женщины (Йусуф и Буньямин) и 12 детей от другой, и они постоянно друг с другом соревновались в любви к своему отцу. Однажды Йусуфу приснился удивительный сон, в котором солнце, луна и 12 звёзд склонились перед ним в земном поклоне. Он рассказал это своему отцу, а отец растолковал этот сон так, что в будущем он обретёт известность…

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

                          Одно из огромных испытаний, которое постигло Йусуфа — это то, что жена его господина влюбилась в него и пожелала близости с ним. Однажды она заперла все двери в их поместье, осталась с ним наедине, приблизилась к нему и сказала: «иди ко мне». Но в этот момент Всевышний помог ему удержаться от желания, послав ему одно из своих знамений (что это было за знамение — ученые расходятся во мнениях, но это не так важно). В итоге, Йусуф убежал от жены своего господина, и пока они так бежали, они наткнулись в дверях на этого самого господина. Плюс, там ещё и другой слуга рядом оказался… В общем, вскоре это событие обсуждали уже всем городом. А о красоте Йусуфа пошли слухи вплоть до того, что другие влиятельные женщины, живущие в городе, тоже пожелали увидеть его, и стали намеренно распространять по городу определённые слухи… О том, что было далее, предлагаю посмотреть отрывок из этой суры самостоятельно: https://youtu.be/HbLIwrvHTy8?t=8m21s

                          Заметьте, насколько мудрой была жена этого господина, как она всё продумала, дала женщинам ножи и попросила их почистить фрукты, и позвала Йусуфа именно в этот момент. Как говорят учёные, женщины какое-то время находились в состоянии шока, продолжая неосознанно и беспорядочно чистить фрукты так, что в итоге изрезали себе руки. Это стало явным доказательством того, что жена господина не от простого распутства хотела близости с Йусуфом…

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

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

                          Далее идёт не менее прекрасный эпизод, в котором Йусуф растолковывает два сновидения двум своим сокамерникам в тюрьме, а также по ходу дела разъясняет им не менее важные вопросы… Смотрим на видео: https://youtu.be/HbLIwrvHTy8?t=10m45s

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

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

                          Вроде как сказке конец, и кто слушал — молодец?) А вот нет: это лишь середина истории. Дальше начинается самое интересное…

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

                          В следующем своём путешествии они привезли к Йусуфу его родного брата Беньямина… И тут он снова проявил свою хитрость, сделав всё так, чтобы Беньямин остался вместе с ним, но при этом братья так и не поняли, что перед ними тот, кого они когда-то давно продали каравану из своей зависти… Далее об этом в видео: https://youtu.be/HbLIwrvHTy8?t=22m33s

                          Братья йусуфа опозорились ещё сильнее. Они обещали своему отцу, что ни в коем случае не потеряют Беньямина, но вышло всё совершенно наоборот. Сколько они не упрашивали Йусуфа решить проблему другим способом, он стоял на своём. В итоге, Старший брат остался в городе и отправил своему отцу сообщение о том, что Беньямина поймали на краже. Когда отец узнал об этой вести, это стало ещё более тяжелым ударом для него… От горя, которое он сдерживал в себе все эти годы, его глаза покрылись бельмами. Он всё ещё ждал, что его сын Йусуф найдётся. Он помнил тот сон с солнцем, луной и 12-ю звёздами, который приснился Йусуфу в детстве, и поэтому знал, что он точно не умер.

                          Он призвал своих детей найти Йусуфа и спасти его


                          1. JDima
                            04.12.2015 08:23

                            > Вас послушаешь, так нам всем надо обратно в средневековье катиться
                            А с тех пор мало что изменилось :)

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

                            Печаль. Снова «не читал, но осуждаю» по одному ролику. Мне вспоминается один комментарий к игре вскоре после ее выхода, человек все свои знания подчеркнул из скриншотов и трейлеров. Он (или она) сказал что-то вроде «ну вот, очередная игра про брутального мужика, по которому все бабы сохнут, он их будет унижать и т.д. Сексизм!». Вроде и в твиттере какая-то шумиха была про это. Блин, ошибиться сильнее просто невозможно. Это бабы Геральтом вертят как хотят, даже в открытую говорят, что он у Йен как собачка.

                            А действия того дяди совершенно осмысленны. До этого момента Геральт вообще не понимал, с кем имеет дело (Гюнтер однажды спас его и взамен попросил выполнить три желания одного криминального авторитета). Какие-то отрывочные сведения были и не более того. Тут Гюнтер впервые поиграл мышцами, сказал «не вздумай идти против меня». В момент, когда алконавту засунули ложку в глаз, Геральт понял, что у него ровно 0 шансов в драке, он проиграет. Вроде бы впервые с таким сталкивается.

                            А сам персонаж Гюнтера явно навеян Фаустом. В игре вообще немерено отсылок к разнообразным сказкам и мифам, часто открытым текстом.

                            > Я знаю, что 98% обитателей этого форума являются исламофобами
                            Нет, 98% обитателей форума просто считают религии идиотизмом. Тем более странно, что человек, критикующий жестокость в играх, почитает пророка-педофила и вообще намного более мерзкую чем история Геральта мифологию (разумеется, то же самое и к христианству относится).

                            Ну ладно, спорить об этом совсем не интересно, всего хорошего :)


                            1. saggid
                              05.12.2015 08:03

                              > Тем более странно, что человек, критикующий жестокость в играх, почитает пророка-педофила и вообще намного более мерзкую чем история Геральта мифологию (разумеется, то же самое и к христианству относится).

                              Ну вы прямо самый типичный из всех типичных исламофобов) Это же просто ложь на одного из самых лучших людей этого мира, которую вы с такой радостью подхватываете и распространяете среди людей, даже не разузнав, правда это, или нет. Если бы вы действительно хотя-бы немного поизучали биографию пророка Мухаммада, мир ему и благословение Аллаха, вы бы никогда не отнесли к нему подобные глупые заявления о педофилии. Потому что этот человек был настолько прекрасного нрава, настолько прекрасными были его поступки… Клянусь Аллахом, если бы вы изучили его жизнь должным образом, вы бы полюбили его больше, чем своих собственных родителей.

                              Первый раз он женился в 25 лет на женщине, которой было 40. Более того, эта женщина сама сделала ему предложение, увидев его прекрасный нрав. Это была его первая жена Хадиджа.

                              Что касается Аиши бинт Абу Бакр, брак с которой исламофобы постоянно пытаются обозвать «педофилией» — то здесь вообще всё просто. Даже если не учитывать то, что есть штук пять разных мнений о том, какого именно возраста Айша была на момент брака, и её предполагаемый возраст колеблется от 9 до 17 лет, следует учесть несколько простых факторов:

                              1. К Айше уже приходил свататься до Мухаммада другой человек, Джубейр ибн Мутим. Но её отец отказал ему. То есть, Айша на тот момент явно уже была девушкой, которая уже собиралась выходить замуж, к ней уже приходили свататься.

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

                              3. В те времена в Аравии было привычным жениться на молодых девушках, и это считалось нормальным явлением

                              Подробнее обо всём этом можете почитать сами, например, эту статью:
                              https://www.whyislam.ru/statii/prorok-i-ego-zhena-aisha.htm

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

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


                              1. bigfatbrowncat
                                10.12.2015 20:39

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


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

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

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

                                1. С жестокостью (и еще какой!), но с глубоким смыслом и прекрасным экскурсом в душу человека: Догвилль

                                2. Без жестокости, но с глубоким пониманием того, во что имеет смысл верить и к чему стремиться (не смотрите, что это — фанфик на Гарри Поттера, он, в некотором смысле намного глубже канона): hpmor.ru

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

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


    1. ditex
      30.11.2015 10:44
      +25

      Если в одном из лучших боевиков с великолепной сатирой вы видите «симулятор гопника», то проблема в вас, а не в Рокстар.


    1. JDima
      30.11.2015 13:04
      +3

      Мсье не думает, что следует хоть что-то узнать об игре перед тем, как критиковать ее?

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


    1. evnuh
      30.11.2015 14:13

      Так а что плохого в симуляторе гопника? Если воровать плохо, мне должно быть стыдно, что я в игре ворую?)


      1. AlexP11223
        30.11.2015 17:36
        +1

        А еще там убивать можно! Обколются, наиграются, а потом ходют одноклассников убивают.


  1. alexpp
    30.11.2015 10:39
    +8

    Просто интересно — корпоративный блог хостинг-провайдера, а статья про игру. Я один не улавливаю связи?


    1. ragequit
      30.11.2015 10:53
      +24

      Разрыв шаблона? :) Была избрана стратегия немного иная, чем принято на Хабре, я написал об этом в примечании. SEO-тексты и прочие 3-5 ссылок на самих себя всем опостылили и никому не интересны. Поэтому в блоге выпускаются просто интересные материалы, чаще всего без какой-либо рекламы (в последнее время проводили акцию + черная пятница и киберпонедельник) и, как результат — нас читают, а других нет. Блог без истерик и надрыва вышел в топ-1 компаний Хабра и держится там уже больше месяца. Как бы есть вера в человечество, что труды наши по публикации полезных и просто интересных статей оценят и сервера будут продаваться без этого агрессивного КУПИ-КУПИ-КУПИ, НЕМЕДЛЕННО КУПИ, СМОТРИ, ТУТ И ТУТ И ЕЩЕ ТУТ ССЫЛКА МЫ КЛЕВЫЕ КУПИ ДАВАЙ! ЖИВО ПОКУПАЙ! ВИДИШЬ СТАТЬЮ? ОНА ТОЧНО ТАКАЯ ЖЕ КАК И ПЯТЬ НАШИХ СТАТЕЙ ДО ЭТОГО, НО ДРУГИМИ СЛОВАМИ, ПОТОМУ ЧТО БЛОГ СТОИТ ДЕНЕГ И МЫ ХОТИМ ИХ ОТБИТЬ КАК МОЖНО БЫСТРЕЕ!! маркетинга :).


      1. 6opoDuJIo
        30.11.2015 12:08
        +2

        Да, кстати, спасибо за это. Я сначала и не признал что блог то хостинговой компании.


        1. ragequit
          30.11.2015 12:12
          +5

          Ну, у нас хватает и около-профильных материалов про ДЦ и сетевые технологии, но мы не чураемся рассказать и просто что-то интересное из мира IT, что нас, напрямую, и не касается вроде как. Крутить одну и ту же пластинку первое — скучно, как для читателей, так и для нас, второе — банально не эффективно в плане лояльности читательской аудитории. Ведь любой, даже закоренелый фанат ДЦ умер бы от 50 статей о дата-центрах за два месяца. Ну, или его бы, в крайнем случае, начало бы подташнивать. Поэтому работаем вот так вот, с публикациями и про игры в том числе, ведь почему и нет?


          1. 6opoDuJIo
            30.11.2015 12:33
            +1

            Я только за. Материал полезен не только на «почитать», но и как справочный.


      1. PHmaster
        01.12.2015 05:37
        +2

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


  1. lockywolf
    30.11.2015 11:04
    +6

    Пробежал по ГТА5 исключительно на графику посмотреть. Эстетически огромное удовольствие.

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


    1. ragequit
      30.11.2015 11:14
      +2

      А вы посмотрите на сайте, может, что-то заинтересует, если и не полновесные сервера, то могут VPS какие приглянутся :) А за возможные рекомендации заранее спасибо.


  1. kahi4
    30.11.2015 12:33

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


  1. coremission
    30.11.2015 12:38
    +2

    Йоу, вотзап, хоуми =)
    Не мог не написать, что не стоило переводить SSAO в (Преграждение окружающего света в экранном пространстве).
    Спасибо за перевод!


  1. ForhaxeD
    30.11.2015 17:41

    Все же, думаю, в GTA V не логарифмический буфер глубины, а reverse-projection.


  1. VioletGiraffe
    30.11.2015 18:47
    +1

    Отличная статья, спасибо. Ничерта не понимаю в графике дальше «натянуть текстуру на mesh», но тут кое-что начал понимать чуть лучше.

    Заодно прочитал лекцию Джона Хэйбла об HDR-освещении, крайне интересно: http://www.slideshare.net/ozlael/hable-john-uncharted2-hdr-lighting


  1. entomolog
    01.12.2015 01:10
    +1

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

    Я так предполагаяю, что используется вот этот трюк: Shadow Map Antialiasing

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

    Немного скринов



    1. 6opoDuJIo
      01.12.2015 20:03

      А как именно шаблон применяется конкретно к краю тени?
      Или всё тот-же мультисемплинг, только в меньшем обьёме?


      1. entomolog
        02.12.2015 05:56

        Да, все тот же мультисэмплинг, но в меньшем объеме, в значительно меньшем.


        1. 6opoDuJIo
          02.12.2015 06:06

          Надо будет так-же попробовать со стенсильными вывернуться.


          1. entomolog
            02.12.2015 06:28

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

            In our implementation, we have changed the PCF algorithm slightly to make it easy and efficient to apply. Instead of calculating the region to be shaded in shadow map space, we simply use a 4x4-texel sample region everywhere. This region is large enough to significantly reduce aliasing, but not so large as to require huge numbers of samples or stochastic sampling techniques to achieve good results. Note that the sampling region is not aligned to texel boundaries. An aligned region would not achieve the antialiasing effect that we want.
            Our implementation uses a fixed-size sample region instead. A fixed-size region lets us skip a complicated transformation and allows us to calculate a precise shadow percentage instead of an approximate one using stochastic sampling.


            Как такое сделать с стенсилом, я честно даже не представляю. Если будете пробовать, обезательно отпишитесь.


            1. 6opoDuJIo
              02.12.2015 19:40

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


              1. 6opoDuJIo
                02.12.2015 19:45

                Поправочка — отрисовать дважды не сцену а обьём*


  1. kinguru
    01.12.2015 11:24
    +1

    Супер, спасибо за статью.


  1. verydima
    02.12.2015 00:57
    +2

    Сегодня утром прочитал статью. Спасибо. Интересно. Перешёл на сайт и увидел неплохие цены на хостинг.
    Вечером пришёл с работы и погуглил отзывы, решив перевести часть сайтов. Отзывы о хостинге, мягко говоря, отрицательные в своём большинстве.
    Решил обратиться в техподдержку, чтобы узнать предусмотрен ли манибек или тестовый период. По-моему, клиенты Вам не нужны. Техподдержка отвечает в стиле «манибека нет, тестового периода нет, что-то не нравиться — уходите, вы не клиент — идите прочь». Зачем Вы напрягаетесь и переводите, ведёте блог и т.д., если никакой клиентоориентированости у вас нет?


    1. HostingManager
      03.12.2015 11:09

      Клиентоориентированность не определяется наличием возврата средств по желанию и поцелуями клиентов в задние места. Как правило те, кто приходят с вопросами о возврате средств не нацелены на работу, а нацелены на возврат средств и разведение полемики. Вам ответили, что возврат возможен только в случае, если услуга не будет соответствовать заявленным параметрам. Вас это не устроило. Значит Вы в целом не нацелены на то, чтоб работать. А скорее на то, чтоб «вынести мозг» и запросить возврат. Ваше поведение в чате демонстрирует это:

      Visitor 79141108 commented: «Ловите отзыв на хабре. И сейчас ещё пачка пойдёт на других форумах.»

      Мы не хотим тратить свое время на таких людей и не будем тратить. Да, нам намного интереснее писать статьи на Хабр, чем тратить время на таких людей и общаться с такими людьми, так как эта работа приносит больше пользы для всех, постоянно позволяет улучшать наши навыки. Политика компании такова — именно за самообучением будущее.

      Кстати иногда мы делаем возвраты по желанию, от греха подальше: searchengines.guru/showthread.php?t=905936&page=13, но тем не менее люди все-равно разводят butthurt, что даже адекватные клиенты не выдерживают и готовы им «повырывать» волосы: searchengines.guru/showthread.php?t=905936&page=19


      1. Kaaboeld
        06.12.2015 00:09

        Клиентоориентированность не определяется наличием возврата средств по желанию и поцелуями клиентов в задние места.

        Это пример редкого хамства. На таком огромном рынке как услуги хостинга подобное мягко говоря вредно, тем более на проф. ресурсе.

        Как правило те, кто приходят с вопросами о возврате средств не нацелены на работу

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

        «Мы не хотим тратить свое время на таких людей и не будем тратить.»
        Людей которые выносят в публичное поле переписку, делая пред этим предупреждение? В чем здесь негатив?


        1. HostingManager
          06.12.2015 00:52

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

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


          1. Kaaboeld
            06.12.2015 01:04

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

            Очень часто «на слуху» или очень часто от количества их клиентов?

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

            Речь сейчас идет именно о поддержке и манибэк — у них и то и другое на высоте.

            но мы в праве не работать с клиентами с которыми не желаем работать

            Абсолютли. Как вы правильно заметили это лишь мое мнение и опыт.

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

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


            1. HostingManager
              06.12.2015 13:09

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

              У нас просто поддержка на высоте, в любое время суток ответ, как правило, не позднее 15 минут, а зачастую 5-10 минут, при SLA в час.

              Оценку уровня соответствия делаем не мы, а клиент, если клиент покажет, что услуга не соответсвует заявленным характеристикам и запросит по этой причине возврат — возврат будет удовлетворен. У нас были технические проблемы, на той же облачной платформе, тогда мы без вопросов делали возвраты и проводили компенсации всем пострадавшим.

              Мы не начинали общения с «хамства» с тем клиентом, он постучал глубокой ночью, я как раз был онлайн. Спросил о тестовом периоде, я ему культурно задал вопрос о том, что именно он хочет тестировать. Иногда мы предоставляем услуги на какой-то период бесплатно для теста, если человек адекватно объяснит цель, к примеру «мне надо 2 дня, чтоб понять производительность VPS по IOPS, так как у меня база даных с большим количеством запросов и я не уверен, подойдет ли мне эта услуга». Но тут подобной задачи сформулировано не было. Человек просто «в целом» хотел получить услугу бесплатно, либо с возможностью забрать деньги, как только он попользуется какой-то период бесплатно. На что ему был дан ответ, что услуга стоит недорого и можно вполне оплатить свой тест, человек сразу же отписался: «я пойду писать о вас на форумах и хабре и еще где угодно».

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


              1. Kaaboeld
                06.12.2015 16:28

                Вот, совсем другое дело. Большое спасибо за столь подробный и взвешенный ответ. Видимо я поспешил со своими выводами, если дела обстоят так как вы описали в данном комментарии.


                1. HostingManager
                  06.12.2015 17:54
                  +1

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

                  Что же касается тестов: если человек адекватно сформулирует задачу, то мы в 99,99% случаев сможем подобрать решение или же сказать, что услуга ему не подойдет и не стоит тратить наше и его время. Но даже, если он оплатит какую-ту услугу и она ему не подошла, по итогу понадобится больше ресурсов — мы зачислим часть или даже всю оплаченную сумму в счет оплаты новой, подходящей, человек не потеряет деньги полностью из-за своей ошибки. Для нас важно то, чтоб люди нам доверяли, и мы ни за какие деньги не пойдем рушить это доверие. В тоже время делать доступным возврат средств по желания мы не хотим и не будем, очень много будет появляться клиентов с несерьезным отношением. А с такими людьми мы работать не очень хотим.

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

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


    1. HostingManager
      04.12.2015 15:26

      А вот почему так много негативных отзывов в сети о нас, инцидент с последней рекламной темой, выводы делайте сами:

      Куда исчез отзыв нашей клиентки?

      Это версия страницы из кеша Google. Она представляет собой снимок страницы по состоянию на 2 дек 2015 00:35:47 GMT:

      http://webcache.googleusercontent.com/search?q=cache:u2BzgPGXmNsJ:searchengines.guru/showthread.php%3Ft%3D905936%26page%3D19+&cd=1&hl=ru&ct=clnk&gl=ua

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

      В администрацию форума направляем жалобу на рассмотрение.

      image


  1. Sergey6661313
    09.12.2015 18:19

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


    1. 6opoDuJIo
      10.12.2015 10:11

      Как раз тогда, когда придумают что-нибудь новое, а не то, что было в Gpu gems лет надцать назад.