20 мая 2014 20.05.14 14 3466

Опять про графон (унылая статья)

+31

В восьми-миллионный раз услышав фразу «да у КоДа опять движок времён правления Таргариенов!», у меня началось покалывание в известном месте. Однако, игра Black Ops 2 — одна из первых, где появилась новомодная фича под названием physically-based shading. От полного безделья, я решил написать небольшую заметку о том, что это такое, и почему это не всегда хорошо. Может кому-нибудь это будет интересно.
Как всё начиналось. В лохматом 75-ом году, некто по фамилии Фонг опубликовал документ, в котором описал закон отражения света в достаточно приближённом виде, чтобы его можно было использовать для просчёта графики на тогдашних компьютерах.

Хоть и с небольшими изменениями, но по этому закону считается освещение в играх и по сей день. С ростом оперативной и видео памяти, становилось ясно, что одних чётких текстур недостаточно, чтоб заставить выглядеть предметы, сделанные из разных материалов, достаточно фото-реалистично. Нужно что-то менять. Сначала выкручивались как могли, придумывали для отдельных объектов специальные модели освещения, передавали в шейдер кучу параметров и текстур, которые хоть как-то помогали объектам выглядеть так, как они должны выглядеть в реальной жизни. В один прекрасный момент игроделам это надоело.
Если мне не изменяет мой склероз, первыми были ребята из CryTek. В игре Crysis они использовали модель Кука-Торренса, как наиболее приближенную к реальным физическим законам:

Выглядит уже внушительнее, не правда ли? Однако, это не сильно спасло от той кучи ненужных параметров/текстур, о которых я писал выше. Москва, как говорится, тоже не сразу строилась. К моменту выхода второй части, им пришлось от этого отказаться, ибо консоли не тянули такую математику в сочетании большим количеством данных, используемых для освещения, так что они вернулись обратно к Фонгу. Вот тут вам придётся меня извинить, я не знаю, кто первых выдвинул идею, но она звучала примерно так: если мы используем физически-корректную модель освещения, почему бы нам не использовать физически-корректные свойства материалов? И вроде бы, всё замечательно, однако нельзя просто так взять, и нафотографировать красивых текстур, взять свойства материалов из какой-нибудь таблички, и чтобы при этом от итоговой картинки не кровоточили глаза. В чём суть проблемы. Когда художники фотографируют текстуры для игры, на фотографии уже имеется освещение от солнца, вспышки, и т.д. Это уже ставит крест на всей идее.

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

Теперь уже можно брать константы из какой-нибудь умной таблички и клепать шедевры с графоном… но нет. Это только половина дела. Во вторую половину я сильно углубляться не буду, ибо знаком с этим плохо. Если кратко, модель Кука-Торренса перекочевала в игры не просто так, её раньше использовали(да и сейчас используют) в серьёзных пакетах моделирования, например для кино. От туда же и растёт вторая половина дела — глобальное освещение. Всё что я описывал до этого, работает только для прямого освещения. Как известно, луч света отражается от поверхностей достаточно большое количество раз, перед тем как попадёт в объектив камеры или в человеческий глаз. Вот эти «вторичные отражения» считать очень сложно, для игр — практически невозможно. Как поступают в кино: если нужно в кадре изобразить какую-нибудь 3D модель, сначала делают панорамную съёмку помещения в специальный формат изображений, который умеет сохранять не только цвет пикселя, но и его яркость.

Далее по этому изображению, считают глобальное освещение для этой 3D модели, это называется IBL(image-based lightning). Собственно, для игр теперь придётся делать так же.
Что мы в итоге получаем? Программисты один раз переписали графическую подсистему, а вся последующая работа над всеми последующими играми ложится на плечи художников, а 90% из них никогда ничем подобным не занимались.
Так… надо подвести какие-то итоги… В двух словах, не ругайте вы новые игры за графон, некоторые, без сомнения этого стоят, но те, которые выходят из-под крыла крупных издателей с многомиллионным бюджетом, они выходят на неком переломном моменте в игростроении. Пройдёт ещё пару лет, все научатся использовать новые технологии, привыкнут к абсолютно новым методам в работе, глядишь, и наступит долгожданный next-gen.
P.S.: Отдельное спасибо тем, кто не пролистал до этой строчки, а дочитал до неё)

Статья на тему, как делалась Remember Me, на английском: www.fxguide.com/featured/game-environments-parta-remember-me-rendering/


Лучшие комментарии

Нифига не понял!))) Ну да ладно")))
Только ты забываешь, что постоянно будут появляться новые технологии, будут меняться методы и тд. Так что сейчас не особо то и переломный момент. Переломный момент был когда 3D игры начали появляться, вот там переосмысливали все. А сейчас не особо переломнее чем в 2007 или 2005. Просто тогда были другие технологии, которые только начали осваивать.
Понравилась статья, интересно и просто написано. Так что не стоило называть её унылой. ;)
Интересно. Текст себе на комп скопировал. Надеюсь, ты не против xD
Если честно, даже не знаю, про что можно написать в подобном ключе. Не так давно для узнал, как делают глобальное освещение с помощью сферических гармоник, можно об этом написать простым языком, но там очень много математики(хоть и простой), что это, скорее всего, будет лишним на данном ресурсе. Можно было бы написать про глобальное освещение в целом, но это слишком обширная тема, и кратко об этом у меня написать не получится, я пробовал. Если есть какие-то вопросы о реализации графических эффектов в играх, спрашивайте. Если будет что-то, что не требует объяснения тонны терминов, обязательно напишу.
Да не против, зачем только, мне непонятно)
Последним абзацем я хотел подчеркнуть не какую-то новую веху в истории, а только лишь то, что все учатся работать с новыми технологиями/техниками по-разному. У кого-то получается, у кого-то нет.
Интересная статья, познавательная. Прочитал с удовольствием, полез гуглить более глубокие разьяснения по световым моделям. Спасибо автору
Black Ops 2 — одна из первых, где появилась новомодная фича под названием physically-based shading


Black Ops 2 — одна из первых, где появилась новомодная фича под названием «пудри мозги народу старым движком».
Ryse: Son of Rome — более наглядная иллюстрация phyzBased-шейдинга.
И совершенно замечательно это реализовано
здесь, можете подергать ползунки и посмотреть, как НА САМОМ ДЕЛЕ это должно выглядеть.
В последней Killzone ещё более наглядная, ты это к чему? Когда вышла Black Ops 2, а когда Ryse.
Читай также