Лучшее  🚀
30.03.2020 в 12:38 Evernews

Никаких потоков — только задачи: программисты Doom Eternal делятся мелкими деталями id Tech 7

Примерно такая же система используется в веб-серверах.

Кстати, на сайте читать удобнее

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

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

ID Tech 7: как устроены технологии Doom Eternal

После выпуска Doom Eternal программисты id Software Билли Хан, Тиаго Суса и Аксель Гнейтинг, занимавшиеся новой версией движка, начали рассказывать о том, что под капотом у id Tech 7. Вот самые интересные моменты их рассказов.

Про потоки

В движке id Tech 7 нет основного потока или потока, занимающегося рендером. Вся работа построена на задачах, которые раскидываются по воркерам. Нагрузку распределяют равномерно: в расчете на одно процессорное ядро запускается один воркер.

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

Про задачи и оптимизацию

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

Про сглаживание

Алгоритм сглаживания, применяющийся в Doom Eternal использует до 32 временных сабсэмплов и по качеству примерно равен SSAA 32x. Но он считается асинхронно и на обычном Xbox One вычисляется всего за 0.91 мс.


Интересно, что схема задач и воркеров, которые описывают разработчики id Tech 7, очень напоминает устройство современных производительных веб-серверов: примерно так же, например, работает Nginx.

Похожее решение использует и студия Naughty Dog. Еще в 2015 году разработчики рассказывали, что в основе движка первой части The Last of Us лежит система заданий; правда, у Naughty Dog была реализована еще и система, позволяющая одновременно выполнять несколько задач в рамках одного процессорного потока.

Читать далее