Программист из Санкт-Петербурга добавил RTX в Serious Sam и DOOM — поговорили с ним об этом, а ещё о работе в геймдеве

Как модификация для «Сэма» помогла ему получить работу в игровой студии из Лондона, и почему он не жалеет, что переплатил за свою видеокарту.

Программист из Санкт-Петербурга добавил RTX в Serious Sam и DOOM — поговорили с ним об этом, а ещё о работе в геймдеве

Так вышло, что на DTF Сультима Цырендашиева называют не иначе как «программистом из Санкт-Петербурга», хотя на самом деле родом он из Читы, а в городе на Неве только получил высшее образование. Сейчас Сультим и вовсе работает в одной из британских игровых компаний.

В интернете, причём не только русскоязычном, но и международном, программист прославился своими модификациями, добавляющими трассировку лучей в старые игры: так RTX уже появился в Serious Sam и классическом DOOM — второй мод даже разбирали специалисты из Digital Foundry, технического подразделения Eurogamer.

Ещё в планах внедрить рейтрейсинг в оригинальную Half-Life, трейлер с первыми результатами можно посмотреть на YouTube.

Мы связались с Сультимом, чтобы подробнее узнать о технических аспектах модификаций, о том, повлияла ли их популярность на его жизнь, и, разумеется, выяснили, как он вообще добыл себе RTX-видеокарту — их же днём с огнём не сыщешь!

Ты уже видел обзор своей модификации DOOM от Digital Foundry? Для меня это редкая возможность узнать — как такие анализы воспринимают сами разработчики. Очень интересно, на самом деле. Специалисты всё правильно поняли, оценили, по фактике не ошиблись?

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

Вообще, видеть себя в новостях — это как-то сюрреалистично.

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

Так вот, невероятно приятно (и неожиданно), что игровые издания обратили внимание на мою работу. Причём у Digital Foundry большой опыт в анализе игровой графики, так что я их оценке доверяю.

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

К слову, выход мода именно 1 апреля — не случайность. Два месяца назад я размышлял, какими проектами могу занять себя в будущем: DOOM с трассировкой показался очень нелепой и смешной идеей, но я пробежался по исходному коду, и стало ясно — моду быть. А когда ему быть? Конечно 1 апреля! Ведь люди, увидев такое в такой день, подумают, что это очередная несмешная шутка... и это почти так. Только шутка в том, что мод существует и работает!

Некоторые считают, что RTX качественно преображает только старые игры. А вот в современных тайтлах надобности в технологии мало: трассировка сильно вредит производительности, но картинку не так уж и красит. На твой субъективный взгляд, рейтрейсинг — это всё-таки важная и нужная веха в развитии компьютерных игр или скорее необязательная примочка, вроде NVIDIA HairWorks?

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

Потому-то и разница с рейтрейсингом не сильно бросается в глаза.

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

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

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

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

Например, для динамических отражений не нужно рендерить 6 сторон кубмапа из какой-то одной специальной точки, не нужно переиспользовать картинку с экрана (screen-space reflections), теряя часть деталей. Достаточно запустить луч от точки на блестящей поверхности — и вот уже есть корректное отражение с корректной геометрией в самом отражении.

Как вообще можно взять и добавить в игру поддержку новой технологии, не задуманной там изначально? Прозвучу глупо, прости, но объясни, пожалуйста, как происходит процесс интеграции RTX? Как «выключается» старый «запечённый» свет и вкручиваются новые лампочки с трассировкой?

С помощью огромного желания и некоторых интересных слов!

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

RTGL1 — это моя разработка. Библиотека для упрощения добавления трассировки лучей в игры. Она была моей выпускной квалификационной работой в вузе. Система работает уже в трёх играх: Serious Sam, Doom, Half-Life. Я её всё ещё разрабатываю, добавляю новые фичи и пытаюсь кое-как улучшить конечную картинку.

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

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

Поэтому картинка после трассировки получается шумной. Чтобы этот шум устранить используются алгоритмы, например, Adaptive Spatio-Temporal Variance Guided Filter.

Программист из Санкт-Петербурга добавил RTX в Serious Sam и DOOM — поговорили с ним об этом, а ещё о работе в геймдеве

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

В итоге, я бы описал процесс интеграции трассировки в пяти шагах.

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

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

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

В «Сэме» некоторые тени были нарисованы прямо на текстурах!

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

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

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

Много ошибок допустил, когда модифицировал Serious Sam, какие сейчас бы уже не повторил? И какой опыт ты вынес из мода для DOOM? Поделись советами, которые дал бы самому себе из прошлого.

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

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

Поэтому новая система должна предоставлять инструменты для модификации освещения: пусть будет выглядеть по-иному, но всё равно сбалансировано. Если когда-нибудь займусь модификацией Serious Sam: The Second Encounter, то постараюсь сделать редактор для нового освещения, вместо того, чтобы пытаться интерпретировать оригинальные данные «по-хардкору».

Использую дедукцию — у тебя ведь в компьютере установлена RTX-видеокарта? Какая модель? Как ты её достал? Просто купил за бешеные деньги или есть история?

MSI GeForce RTX 3070 Gaming X Trio. И да, история есть.

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

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

Но я не сдался — продолжал сидеть и кликать по кнопке обновления страницы. Так прошло ещё полчаса. Появилась информация, что видеокарты продают в Казани и Екатеринбурге. Я подумал было купить там и оплатить доставку, но опоздал. Деваться некуда, продолжил обновлять страницу, так провёл ещё полчаса... и вдруг, она! Одна единственная RTX 3070!

Быстро её кладу в корзину, перехожу к оплате — ошибка, товар распродан. Кто-то оказался быстрее. Нервничаю, ищу уже другие модели — они появились, но их нет в наличии. Ну и ладно. Всё ещё не теряю надежду, ещё 10 минут перезагружаю сайт. Не зря — в продаже появилась модель за 55 000 рублей. И её купил не я, опять не пустило дальше корзины.

Проходит совсем чуть-чуть времени, в каталоге появляется карта за 64 000. И мне уже всё равно, решаю, что лучше уж переплачу, чем останусь совсем без ничего. И успеваю! Покупаю ту самую MSI GeForce RTX 3070 Gaming X Trio.

После этого полгода на смотрел на цены видеокарт, потому что не хотел расстраиваться — я ж переплатил, официальная цена на старте была $500, а я отдал больше $800... но когда увидел 130 000 рублей за ту же карту, что у меня, то, мягко говоря, удивился. Я думал, что цены за полгода упадут, а тут такое.

Что, кстати, думаешь насчёт цен на RTX-видеокарты? Они хоть чуть-чуть оправданы?

Лично мне смотреть на них всё ещё страшно :D

RTX-модификации — это твоё хобби, да? А почему? Есть какие-то причины помимо того, что хотелось освежить графику ностальгических игр? Может решение таких задач оттачивает какие-то полезные скиллы?

Это хобби, да. Делаю в свободное время, используя, в большинстве, лёгкие пути решения проблем (например, совсем не задействую многопоточность ЦПУ).

Почему этим занялся?

Я был абсолютно поражён Quake 2 RTX и тому, как в принципе логичен расчёт освещения с помощью трассировки.

Так что с 2019 хотел сделать так же, но в Serious Sam. Понемногу начал изучать движок: перевёл Serious Engine 1.10 с OpenGL/DirectX на Vulkan API.

В основном такие задачки помогают изучать графику. Но я бы выделил ещё такую пользу — ты постепенно привыкаешь к чувству «ничего не понятно, но как-то сделать надо».

Чтобы добавить RTX в DOOM явно пришлось много с чем заморочиться, но какая из заморочек оказалась самой сложной?

Во-первых, выбор source-порта. Изначально он казался очевидным — GZDoom. Он поддерживает Vulkan API, к нему есть огромное количество модов. И я даже повозился с ним полторы недели! Но из-за того, что в коде GZDoom есть весьма неудобные абстракции функциональности графического движка и того, что у меня оставалось маловато времени до 1 апреля, я решил присмотреться к source-портам попроще.

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

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

А вот вообще, если можешь, представь, что тебе заказали добавить RTX в какую-то готовую игру. Такая ситуация в вакууме. Богач-геймер хочет украсить свой любимый Star Wars: KOTOR или типа того. Какой бы ценник выставил?

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

Благодаря этим модификациям ты точно сделал себе имя. Только у нас на DTF новости о твоих работах собирают по десять, по двадцать тысяч просмотров. А пишем же не только мы. Это тебе как-то помогло по жизни?

Я получил текущую работу благодаря сырому билду «Сэма» с трассировкой. Работаю сейчас программистом графики в компании-разработчике игр.

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

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

В твоём профиле Linkedin указано, что ты работаешь в Red Kite Games — британской игровой студии. Можешь это подтвердить?

Подтвердить могу.

Работа как-нибудь связана с Hogwarts Legacy, с которой Red Kite Games помогает Portkey?

Эх, не могу, к сожалению, сказать, над чем я работаю — NDA...

Ну... Тогда такой пространный вопрос: как тебе вообще вселенная «Гарри Поттера»? Читал книги, смотрел фильмы, делал по ней игры?

С «Гарри Поттером» не знаком совсем...

Последний вопрос — что там с RTX для Half-Life? Когда ждать?

Да, это ответ Сультима
207207
42 комментария
35
Ответить

В голове у программиста

12
Ответить

Автору стоит почитать уже другую книгу)

6
Ответить

А может у него и твиттера нету? Ишь, умник какой! Нет, вы поглядите на него, чего этот ирод задумал: собрался наслаждаться реальной жизнью!

4
Ответить

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

25
Ответить

Нет, не поможет. Пока трассиров очка требует больших мощностей, чем традиционные методы отрисовки для компьютерных игр, она так и будет эксклюзивом отдельных игр.
Пока что это просто способ продать карточки подороже.
И да, отсутствие трассировки как-то не помешало иметь хороший уровень взаимодействия с окружением в Half-Life 2, в серии Battlefield, в Besiege, в Magicka.
Единственная игра, в которой без трассировки не обойтись - Teardown.
Post Scriptum: современную картинку можно сделать и на "устаревших" мощностях (смотрите Crysis 3 как пример), просто для этого придётся постараться всем отделам одновременно.

6
Ответить