Видеоускоритель NVIDIA GeForce GTX 980: великолепная эффективность архитектуры Maxwell в действии

Последователь GeForce GTX 680, обгоняющий даже GTX 780 Ti Содержание Представляем базовый детальный материал с исследованием NVIDIA GeForce GTX 980 на основе референс-карты.

Справочные материалы Объект исследования: Ускоритель трехмерной графики (видеокарта) NVIDIA GeForce GTX 980 4096 МБ 256-битной GDDR5 PCI-E

Сведения о разработчике: Компания NVIDIA Corporation (торговая марка NVIDIA) основана в 1993 году в США. Штаб-квартира в Санта-Кларе (Калифорния). Разрабатывает графические процессоры, технологии. До 1999 года основной маркой была Riva (Riva 128/TNT/TNT2), с 1999 года и по настоящее время — GeForce. В 2000 году были приобретены активы 3dfx Interactive, после чего торговые марки 3dfx/Voodoo перешли к NVIDIA. Своего производства нет. Общая численность сотрудников (включая региональные офисы) около 5000 человек.

Часть 1: Теория и архитектура Уже довольно давно компания NVIDIA не обновляла графическую архитектуру в своих топовых решениях. Модель GeForce GTX 680, выпущенная весной 2012 года, стала первой видеокартой с архитектурой Kepler, потом появились и более мощные GTX 780(Ti) решения на базе более мощных GPU той же архитектуры, но ещё в далёком 2012 году мы узнали из планов компании, что следующая архитектура NVIDIA будет называться Maxwell. И в начале весны текущего года компания слегка удивила, выпустив не топовое решение на основе графического процессора новой архитектуры, а сравнительно слабое — на основе чипа GM107, предназначенного скорее для ноутбуков.

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

К этому добавились и задержки в развитии технологических процессов на фабриках компании TSMC. Вполне возможно, что Maxwell изначально планировался к выпуску уже на 20 нм техпроцессе, но первые чипы пришлось выпустить по старым добрым 28 нм нормам. Всем компаниям партнёрам TSMC пришлось поменять свои планы, и стараться добиться прогресса, используя те же 28 нм, то есть без значительного увеличения количества транзисторов и потребления ими энергии. На примере GM107 мы уже знаем, что в Maxwell смогли выжать из существующих возможностей очень многое, новая графическая архитектура компании NVIDIA улучшила функциональность, производительность и энергоэффективность.

Хотя видеокарты предыдущей архитектуры Kepler также имеют неплохие производительность и энергоэффективность, но первый же GPU из Maxwell показал, что можно добиться и большего. Первое поколение новой архитектуры получило несколько архитектурных изменений для увеличения производительности и энергоэффективности. Несмотря на довольно низкое потребление энергии видеокартами на основе GM107, высокая эффективность новой архитектуры позволила видеокарте модели GeForce GTX 750 Ti показывать неплохую производительность почти на уровне некогда бывшей топовой модели GeForce GTX 480. По сравнению с платами предыдущего поколения, новинка показала до двух раз лучшие показатели энергоэффективности, и это настраивает на позитив и в отношении более мощного чипа и решений на его основе, старшее из которых мы сегодня и рассмотрим.

gpu.jpg Вышедшие сегодня модели видеокарт GeForce GTX 980 и GTX 970 основаны на новом чипе верхнего ценового диапазона (но шансы на ещё более мощный GPU семейства Maxwell всё же остаются) с наименованием GM204 — как видно из его названия, это уже второе поколение архитектуры, и графический процессор большей мощности, по сравнению с GM107. При потреблении энергии лишь в 145–165 Вт в зависимости от модели видеокарты, новинки должны обеспечивать производительность на уровне топовых решений на GPU прошлого поколения с куда большим потреблением энергии.

Но не одной высокой производительностью и эффективностью отличается графический процессор GM204. Кроме этого, в нём появились и новые возможности: улучшенные и совершенно новые методы полноэкранного сглаживания MFAA и DSR, специальная аппаратная поддержка для ускорения одного из самых многообещающих методов глобального освещения VXGI и т.д. Да и уже давно известные нам возможности вроде G-Sync никуда не исчезли.

Одной из самых важных задач при создании GM204 было обеспечение высокой производительности и качества рендеринга в самом высоком разрешении. Последнее важно, так как долгое время игроки на ПК были ограничены разрешением FullHD (1920×1080 пикселей), а теперь на рынок постепенно начинают выходить 4K-мониторы. Пока что они ещё дороги, но уже есть несколько дешёвых моделей, за которыми последуют и другие. Для того, чтобы подготовиться к возрастающим требованиям, GM204 был специально оптимизирован для обеспечения высочайшей производительности в таких условиях, а также получил поддержку новой версии HDMI 2.0.

Но и энергоэффективность в любом случае весьма важна, так как основным ограничителем скорости является предел по питанию GPU. И надо сказать, что Maxwell обеспечивает потрясающую энергоэффективность, по сравнению с Kepler, который для своего времени тоже был весьма неплох. При кратком сравнении GeForce GTX 680 и GTX 980, можно увидеть в среднем почти двукратный прирост в показателях количества кадров в секунду, получаемых на единицу потребляемой энергии.

perf_energy.png В общем, новые модели GeForce GTX 980 и GTX 970 совершенно точно отлично подойдут для всех самых современных игр с любыми настройками качества и в любом разрешении, включая 2560×1600 и 4K, в том числе — с включенным полноэкранным сглаживанием. Впрочем, для самых требовательных игровых проектов и разрешения 4K может понадобиться уже две такие карты, работающие в режиме SLI.

Новые видеокарты могут стать отличным апгрейдом для пользователей устаревающих систем. Согласно статистике Steam Survey, 68% владельцев видеокарт GeForce из верхнего ценового диапазона имеют в составе своих систем модели GeForce GTX 600 и старше, вроде весьма популярных в своё время моделей GTX 680 и GTX 670. Так что для них возможность обновления на гораздо более мощные GTX 980 и GTX 970 вполне реальна, особенно если существует или вскоре появится необходимость в более высоких разрешениях.

Рассматриваемые сегодня новые модели видеокарт компании NVIDIA, основаны на втором графическом процессоре архитектуры «Maxwell», которая в деталях схожа с предыдущей архитектурой «Kepler» и даже местами с «Fermi», а о них мы уже неоднократно рассказывали. Так что перед прочтением данного материала полезно ознакомиться с ранними статьями о различных моделях видеокарт компании NVIDIA:

[12.03.14] NVIDIA GeForce GTX 750 Ti — Maxwell начинает с малого… несмотря на Maxwell [18.03.13] NVIDIA GeForce Titan — новый однопроцессорный флагман 3D-графики игрового класса [22.03.12] NVIDIA GeForce GTX 680 — новый однопроцессорный лидер 3D-графики [27.03.10] NVIDIA GeForce GTX 480: архитектура нового графического процессора изнутри; как реализована поддержка DirectX 11 Рассмотрим подробные характеристики анонсированных сегодня видеоплат новой серии GeForce GTX 900, основанных на графическом процессоре GM204.

Графические ускорители серии GeForce GTX 900 Параметр Значение Кодовое имя чипа «GM204» Технология производства 28 нм Количество транзисторов 5,2 млрд. Площадь ядра 398 мм2 Архитектура Унифицированная, с массивом общих процессоров для потоковой обработки многочисленных видов данных: вершин, пикселей и др. Аппаратная поддержка DirectX DirectX 12, в том числе шейдерной модели Shader Model 5.0 Шина памяти 256-битная, четыре независимых контроллера памяти шириной по 64 бита с поддержкой GDDR5-памяти Частота графического процессора 1126(1216) МГц Вычислительные блоки 16 потоковых мультипроцессоров, включающих 2048 скалярных ALU для расчетов с плавающей запятой одинарной и двойной точности в рамках стандарта IEEE 754–2008; Блоки текстурирования 128 блоков текстурной адресации и фильтрации с поддержкой FP16- и FP32-компонент в текстурах и поддержкой трилинейной и анизотропной фильтрации для всех текстурных форматов Блоки растеризации (ROP) 4 широких блока ROP (64 пикселей) с поддержкой различных режимов сглаживания, в том числе при FP16- или FP32-формате буфера кадра. Каждый блок состоит из массива конфигурируемых ALU и отвечает за генерацию и сравнение Z, MSAA, блендинг Поддержка мониторов Интегрированная поддержка до четырех мониторов, подключенных по интерфейсам Dual Link DVI, HDMI 2.0 и DisplayPort 1.2 Спецификации референсной видеокарты GeForce GTX 980card_gtx980.jpg Параметр Значение Частота ядра 1126(1216) МГц Количество универсальных процессоров 2048 Количество текстурных блоков 128 Количество блоков блендинга 64 Эффективная частота памяти 7000 (4×1750) МГц Тип памяти GDDR5 Шина памяти 256 бит Объем памяти 4 ГБ Пропускная способность памяти 224 ГБ/с Вычислительная производительность (FP32) 4,6 терафлопс Теоретическая максимальная скорость закраски 72,1 гигапикселей/с Теоретическая скорость выборки текстур 144,1 гигатекселей/с Шина PCI Express 3.0 Разъемы Один разъем Dual Link DVI, один HDMI 2.0 и три DisplayPort 1.2 Энергопотребление до 165 Вт Дополнительное питание Два 6-контактных разъема Число слотов, занимаемых в системном корпусе 2 Рекомендуемая цена $549 (США), 23990 руб (Россия) Спецификации референсной видеокарты GeForce GTX 970card_gtx970.jpg Параметр Значение Частота ядра 1050(1178) МГц Количество универсальных процессоров 1664 Количество текстурных блоков 104 Количество блоков блендинга 64 Эффективная частота памяти 7000 (4×1750) МГц Тип памяти GDDR5 Шина памяти 256 бит Объем памяти 4 ГБ Пропускная способность памяти 224 ГБ/с Вычислительная производительность (FP32) 4,0 терафлопс Теоретическая максимальная скорость закраски 67,2 гигапикселей/с Теоретическая скорость выборки текстур 109,2 гигатекселей/с Шина PCI Express 3.0 Разъемы Один разъем Dual Link DVI, один HDMI 2.0 и три DisplayPort 1.2 Энергопотребление до 145 Вт Дополнительное питание Два 6-контактных разъема Число слотов, занимаемых в системном корпусе 2 Рекомендуемая цена $329 (США), 14990 руб (Россия) Новые модели видеокарт GeForce GTX 980 и GTX 970 получили вполне привычные имена для решений NVIDIA. Единственное, что не совсем понятен пропуск серии GTX 800, но в мобильных решениях такие модели уже были, поэтому её, наверное, и решили пропустить. Соответственно, в обновленной продуктовой линейке компании GTX 980 располагается на самом верху одночиповых игровых решений, а GTX 970 — на ступеньку ниже. Немудрено, что модели GTX 780 Ti, GTX 780 и GTX 770 с момента анонса новинок перестают выпускаться, так как в них просто не остаётся смысла (к эксклюзивным сериям типа Titan это не относится).

Рекомендованные цены на новинки составляют $549 и $329 для GTX 980 и GTX 970, соответственно. Можно было бы ожидать и меньших цен, так как и платы и GPU довольно простые, но, так как NVIDIA любит зарабатывать сама и даёт это делать партнёрам, то они на это и нацелились, что вполне привычно для компании. Что касается решений от конкурента — компании AMD — то новые GeForce имеют соперников из линейки Radeon в виде моделей R9 290X и R9 290, хотя по сложности и потреблению энергии видеочип GM204 и платы серии GTX 900 скорее близки к Tonga и R9 285, соответственно. Две новые модели NVIDIA сделаны на базе чипа GM204 и имеют 256-битную шину памяти, поэтому объём установленной на них видеопамяти теоретически мог быть равным 2 или 4 ГБ. В случае топовой модели было принято логичное решение по установке 4 ГБ памяти, и этот объём идеально подходит для современных топовых решений, которые работают в условиях сверхтребовательных 3D-приложений, максимальных настроек качества и самых высоких разрешений. Референсные платы GeForce GTX 980 и GTX 970 имеют стандартную длину в 10,5 дюймов (267 мм), для дополнительного питания используются два 6-контактных разъёма PCI-E. Плата дизайна NVIDIA имеет три DisplayPort 1.2 разъёма, один Dual Link DVI и порт HDMI 2.0. GM204 также стал первым графическим процессором с поддержкой вывода изображения по HDMI 2.0 — новая версия стандарта позволяет выводить полноценное 4K-разрешение с частотой обновления вплоть до 60 Гц. bracket.jpg Из-за активного распространения устройств вывода изображения с 4K-разрешением, в первый «большой» чип Maxwell была добавлена поддержка разрешений вплоть до 5K (5120×3200 пикселей при 60 Гц), и можно подключить до четырёх дисплеев с разрешением 4K по Multi-Stream Transport (MST) — у Kepler была поддержка лишь двух таких дисплеев. Уровень типичного энергопотребления у видеокарты GeForce GTX 980 составляет всего лишь 165 Вт, что значительно меньше даже 190 Вт у Radeon R9 285, не говоря уже о 275 Вт у ценовых конкурентов в лице Radeon R9 290(X). Для дополнительного снабжения энергией в GeForce GTX 980 и GTX 970 используется пара 6-контактных разъемов дополнительного питания. Но набор портов вывода изображения и разъемов питания справедливы лишь для видеокарт референсного дизайна. Производители выпустят и собственные варианты GeForce GTX 980 и GTX 970, отличающиеся как дизайном плат и систем охлаждения, так и системами питания и работой на повышенных частотах. К слову, чтобы обеспечить стабильную работу в режиме разгона, для старшей модели серии внедрили специальную балансирующую схему питания, которая обеспечивает GPU питанием от трёх источников: по шине PCI Express и по каждому из двух дополнительных 6-контактных разъёмов. В нормальных условиях GPU получает энергию со всех трёх источников, но в режиме разгона может получиться так, что по одному из них потребуется больше питания, чем он способен выдать, что может вызвать проблемы со стабильностью работы. Балансирующая схема будет отбирать недостающую в таких случаях энергию от других источников. Эта возможность использовалась ранее на GeForce GTX 780 Ti и есть на GTX 980, но не на GTX 970 референсного дизайна, схема питания которой несколько проще. Архитектура Видеокарты семейства GeForce GTX 900 основаны на совершенно новом графическом процессоре GM204, который относится уже ко второму поколению Maxwell (в рамках первого был выпущен лишь один чип GM107). В процессе переноса архитектуры Kepler в мобильный чип Tegra K1, инженеры NVIDIA научились тому, как можно снизить потребление энергии GPU и получить большую производительность из архитектуры при имеющихся ограничениях по потреблению, и этот опыт применили в Maxwell.

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

Как Fermi и Kepler, да и архитектурный первенец GM107, новый чип GM204 состоит из кластеров графической обработки Graphics Processing Cluster (GPC), которые содержат по несколько потоковых мультипроцессоров (в данном случае — SMM). Каждый кластер GPC содержит выделенный движок растеризации и по четыре мультипроцессора SMM. В свою очередь, каждый мультипроцессор состоит из 128 вычислительных блоков CUDA, блока обработки геометрии PolyMorph и восьми блоков текстурирования (TMU).

diag_gm204.png Модель GeForce GTX 980 является верхним представителем линейки, основанным на полноценном чипе GM204, содержащем четыре кластера GPC и 16 мультипроцессоров SMM. В целом это составляет 2048 потоковых процессоров CUDA и 128 блоков TMU. GeForce GTX 970 же содержит те же четыре GPC, но в которых отключены три из имеющихся шестнадцати мультипроцессоров. То есть, в итоге «урезанный» чип имеет 1664 потоковых процессора и 104 блока TMU. В будущем возможен выход и других моделей видеокарт NVIDIA, основанных на этом же GPU, но с иным количеством активных исполнительных блоков.

Обе модели линейки GeForce GTX 900 имеют по четыре 64-битных контроллера памяти, что в сумме составляет 256-битную шину памяти. К каждому контроллеру памяти «привязаны» по 16 блоков ROP и 512 КБ кэш-памяти второго уровня, что в целом составляет 64 блока ROP и 2048 КБ кэша (сравните с 32 блоками ROP и 512 КБ кэша у аналогичного чипа GK104 предыдущего поколения — разница налицо).

В архитектуре Maxwell применяются абсолютно новые потоковые мультипроцессоры (Streaming Multiprocessor — SM), которые имеют как лучшую энергоэффективность, так и производительность по отношению к площади чипа. Несмотря на то, что дизайн мультипроцессоров SMX в Kepler и так был достаточно эффективным, при разработке нового GPU архитекторы увидели возможности для улучшения и серьёзно модифицировали мультипроцессоры в Maxwell. В SMM были улучшены блоки управления и планирования, распределение загрузки между блоками, количество выдаваемых на исполнение инструкций за такт и многое другое.

diag_smm.png Организация мультипроцессоров серьёзно изменилась. Каждый мультипроцессор GM204 разделён ещё на четыре отдельных логических вычислительных раздела, каждый из которых имеет свой буфер инструкций, планировщик варпов и состоит из 32 вычислительных ядер. В чипах архитектуры Kepler каждый мультипроцессор SMX содержит управляющую логику, которая распределяет и планирует работу и обмен данными для 192 вычислительных ядер, поэтому управляющий блок довольно сложен сам по себе. В архитектуре Maxwell было принято решение разделить мультипроцессор SMM на вычислительные блоки, каждый из которых содержит собственный блок управления, обслуживающий лишь 32 ядра и поэтому более простой.

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

Количество ALU на планировщик, кратное степени двойки, упрощает задачу, так как каждый из планировщиков варпов отправляет инструкции на исполнение выделенному набору ALU, равному размеру варпа (32). Каждый планировщик варпов также умеет выдавать по две инструкции, вроде отправки на исполнение математической операции в ALU и операции с памятью в блок load/store unit (LSU) за один такт — dual-issue. Впрочем, даже отправка одной команды достаточна для полной загрузки работой всех вычислительных ядер, в отличие от Kepler, где использование вычислительных ресурсов при одинарной точности вычислений было недостаточно эффективным из-за некоторых ограничений в блоках планирования.

Общими в SMM остались лишь текстурные модули и FP64-блоки, а FP32-блоки, блоки специальных инструкций (special function unit — SFU) и блоки загрузки-сохранения (load/store unit — LSU) выделены для каждого раздела. Такое решение хорошо с точки зрения эффективности, ведь общие ресурсы хороши только тогда, когда они загружены работой, а при её (частичном) отсутствии они просто занимают место на чипе и потребляют энергию. Не говоря о том, что соединения между ними также дорого обходятся с точки зрения площади чипа и потребления, так как требуется дополнительная работа по планированию и координации работы всех блоков.

По сравнению с Kepler изменилась и организация подсистемы памяти и кэширования данных. SMM содержат по 96 КБ собственной общей памяти, а L1-кэш перенесён в общее пользование вместе с текстурным кэшем. В результате всех этих изменений, каждое CUDA-ядро в новом чипе примерно на 40% быстрее и вдвое энергоэффективнее, по сравнению с аналогом из Kepler. А более эффективное использование площади чипа привело к тому, что архитектура Maxwell позволила значительно увеличить количество потоковых ядер в GM204.

Если сравнить GeForce GTX 980 (GM204) и GTX 680 (GK104), то видно, что новинка имеет вдвое большее количество мультипроцессоров из-за нового их дизайна в рамках архитектуры Maxwell. А так как каждый из мультипроцессоров содержит собственные движки обработки геометрии PolyMorph, то GTX 980 также и вдвое быстрее обрабатывает геометрические данные.

Тесселяция является одной из самых важных особенностей DirectX 11 и геометрическая производительность будет играть важную роль в будущих игровых проектах, изначально предназначенных для консолей текущего поколения и современных ПК. В самых простых условиях новый GM204 обрабатывает геометрию вдвое быстрее, чем GK104, а в сложных его преимущество доходит до трёхкратного:

perf_tess.png А вот количество текстурных блоков осталось неизменным — у обоих чипов их по 128 в целом. Для Maxwell было выбрано количество TMU на мультипроцессор, равное 8 штукам. И лишь из-за повышенной частоты GPU, новинка по текстурной производительности на 12% быстрее своего предшественника — к слову, это самый слабый параметр нового GPU. Зато было удвоено количество блоков ROP: от 32 до 64 штук, что очень важно в условиях высоких разрешений и включенного полноэкранного сглаживания. Вместе с повышенной тактовой частотой, это привело к более чем удвоенной производительности соответствующих блоков: 72 гигапикселей/с против 32 гигапикселей/с.

Чтобы подкрепить возросшую мощь блоков ROP, была улучшена и подсистема хранения данных. Во-первых, частота GDDR5-памяти выросла более чем на 15%, во-вторых, GM204 имеет заметно большую по объёму и более эффективную кэш-память, помогающую экономить полосу пропускания, и, в-третьих, Maxwell отличается новым методом сжатия данных в кадровом буфере, что дополнительно увеличивает эффективную ПСП.

memcomp.png При записи данных в память в GM204 используется новый метод сжатия данных без потерь, а при их чтении экономится полоса пропускания, что особенно важно при таком мощном GPU и лишь 256-битной шине. Новый движок сжатия может использовать несколько методов для разных данных. Каждый блок из 8×8 пикселей сначала исследуется на предмет возможности сжатия без потерь, если он содержит одноцветные блоки по 4×2 пикселя, тогда для таких блоков достигается степень сжатия 8:1. Затем проверяется возможность сжатия блоками 2×2 (степень сжатия 4:1) и так далее.

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

perf_mem.png Эффективность сжатия оценить непросто, но в среднем новый GPU позволяет заметно сэкономить ПСП, по сравнению с аналогичным Kepler. Разница между GPU старого и нового поколений по эффективности использования ПСП в среднем составляет 25% — примерно столько ПСП экономит GM204, по сравнению с GK104. NVIDIA делает вывод об эффективной частоте памяти в 9.3 ГГц, по сравнению с 7 ГГц реальной. Хотя такое сравнение и не совсем корректно, но Maxwell действительно будет эффективнее использовать видеопамять, что важно при вдвое большем количестве блоков ROP и высоких разрешениях со сглаживанием.

Естественно, что GM204 поддерживает последнюю версию технологии динамического изменения тактовой частоты и напряжения GPU Boost, обеспечивающую максимально возможную 3D-производительность в определённых условиях (напряжение, температура, потребление) при сохранении минимального уровня частоты, который гарантируется при любых номинальных условиях.

Базовая тактовая частота для видеочипа GeForce GTX 980 равна 1126 МГц, а турбо-частота (средняя повышенная частота в нескольких играх и приложениях) достигла значения 1216 МГц — это максимальная частота для видеочипов NVIDIA за всё время. Турбо-частота, как обычно, является лишь усреднённым значением для нескольких игр, используемых компанией NVIDIA в своих тестах. В реальности она может изменяться, и может быть как выше, так и ниже.

Аппаратно-ускоренный расчёт глобального освещения VXGI Одним из важных нововведений второго поколения Maxwell можно считать аппаратное ускорение одного из самых многообещающих методов глобального освещения сцены (Global Illumination — GI). Реалистичное освещение является одной из важнейших задач компьютерной графики для достижения максимального фотореализма. Сложные модели и качественные текстуры давно научились делать, с анимацией справляются при захвате данных с людей (motion capture), а вот освещение в компьютерной графике реального времени до сих пор весьма далеко от реализма.

В реальном мире освещение объектов складывается из прямого освещения от источников света и непрямого — лучей, отражённых от других объектов. Без учёта непрямого освещения объекты выглядят плоско и нереалистично. В давние времена, чтобы не было черных провалов при отсутствии непрямого освещения, придумали ambient-составляющую, которая просто добавляется к цвету объекта, но не добавляет ему объёма (сверху — только прямое освещение, снизу — прямое и отражённое):

gi1.jpg Полноценный расчёт глобального освещения позволяет физически корректно просчитать освещение сцены, приблизиться к фотореалистичности и часто используется в кино и других системах 3D-графики, не требующих просчёта в реальном времени. Увы, но процесс этот весьма трудозатратный и он оставался недостижимым для реального времени.

Некое подобие расчёта глобального освещения уже давно используется в играх, вроде Ambient Occlusion (HDAO, HBAO и т.п.), но эти методы лишь поверхностно имитируют GI, используя лишь данные экранного буфера, а реальный расчёт глобального освещения оставался слишком «дорогим». Имитация GI — это лучше, чем ничего, но только полноценная трассировка позволит добиться максимального реализма.

Ещё в 2011 году NVIDIA предложила один из алгоритмов расчёта глобального освещения под названием Voxel Global Illumination (VXGI), использующего специальное 3D-представление сцены в виде вокселей для захвата информации об освещении в каждой точке сцены — эти данные затем трассируются для расчёта эффекта отражённого света.

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

apollo11_color.jpgapollo11_voxel.jpg

На иллюстрациях представлена отрисованная в реальном времени на Maxwell известная сцена высадки американских астронавтов на Луне, и она же, но уже в воксельном представлении. Хотя отличить рендер от фотографии можно, но всё же выглядит он весьма неплохо, особенно для сцены, рассчитанной в реальном времени.

Оригинальный алгоритм основывался на вокселях, хранящихся в структуре октодерева (octree), и он вполне работоспособен, но имеет некоторые ограничения в виде неудобства работы GPU с ней — так как это нестандартная структура для графического процессора. К слову, схожий алгоритм использовался и в нашумевшей демонстрационной версии Elemental на движке Unreal Engine 4 от компании Epic, но от него в итоге решили отказаться именно из-за крайне высокой ресурсоёмкости.

И вот, после трёх лет разработок, NVIDIA представила улучшенный алгоритм VXGI, который можно ускорить на новых графических процессорах, начиная с Maxwell. Применение VXGI способно обеспечить лучшую производительность при расчёте глобального освещения, а значит и его качество, ведь метод отлично масштабируется при помощи изменения плотности воксельной сетки, и на разных по мощности системах можно просто использовать разную точность GI-расчётов.

GeForce GTX 980 и GTX 970 являются первыми решениями, которые способны ускорить алгоритм VXGI, позволяющий добиться потрясающе реалистичного освещения. Метод работает на любых современных GPU без использования аппаратной поддержки, но делает это медленнее, а на GM204 и других последующих чипах архитектуры Maxwell, алгоритм ускоряется аппаратно. Для этого на этапе вокселизации сцены используется такая возможность, как мультипроецирование (multi-projection) — графический процессор Maxwell умеет одновременно проецировать геометрию на несколько проекций, что используется в алгоритме VXGI. Без мульипроецирования приходится повторять работу шесть раз подряд — для каждой грани вокселя отдельно.

Ещё одна важная возможность, которая появится в Direct3D 12, это консервативная растеризация, которая также используется в процессе вокселизации (конвертации геометрии в воксели). Основным её отличием от обычной растеризации является то, что в процессе отрисовываются не только те пиксели, в центр которых попала геометрия сцены, но все пиксели, в площадь которых попал даже маленький кусочек треугольника. Проще всего это понять по следующей иллюстрации:

raster.png Аппаратная поддержка консервативной растеризации также очень важна в фазе вокселизации, так как на этом этапе методики расчёта глобального освещения нужно максимально точно оценить покрытие при переводе 3D-сцены из треугольников в воксели. В принципе, тут тоже можно обойтись программными методами, но они будут работать медленнее. А аппаратное ускорение VXGI на Maxwell работает весьма эффективно:

perf_vxgi.jpg Разница в производительности неоптимизированного для Maxwell алгоритма и аппаратно-ускоренного метода на чипе GM204 превышает три раза. Иными словами, графический процессор GM204 способен обеспечить значительный прирост скорости рендеринга при использовании аппаратно-ускоренного метода VXGI при расчёте глобального освещения. Трёхкратный прирост скорости означает возможность применения расчёта GI во многих сценах, что просто не было доступно ранее.

Поддержка VXGI уже есть в Unreal Engine 4. И так как продвижение новых возможностей от компании NVIDIA всегда было достаточно эффективным, можно не сомневаться, что вскоре она будет внедрена и в другие известные игровые движки, а затем появится и в будущих играх. Возможен даже выпуск ремейков игр прошлого с внедрением расчёта освещения по методу VXGI — при помощи заинтересованных энтузиастов или игровых разработчиков.

Новые методы полноэкранного сглаживания Изменения в чипе GM204 привели и к поддержке новых методов полноэкранного сглаживания. NVIDIA решила придерживаться интересного подхода, улучшая качество картинки как в нетребовательных играх, вроде Dark Souls II, которые отрисовываются при высокой кадровой частоте, так и в проектах вроде Crysis 3 и Battlefield 4, которые не отличаются большим запасом по FPS.

Для первого типа игровых проектов была внедрена технология Dynamic Super Resolution (DSR), которая весьма схожа с распространённым (и весьма требовательным к производительности) методом полноэкранного сглаживания методом суперсэмплинга. По сути, сцена рендерится при более высоком разрешении (для FullHD это будет, к примеру, UltraHD), и затем масштабируется к разрешению экрана при помощи хитрого фильтра, усредняющего результат.

В итоге пользователь получает картинку с более высоким качеством, близким к UltraHD, но на FullHD-устройстве, более сглаженную и красивую. Это особенно заметно на сценах с большим количеством узких полупрозрачных объектов, вроде травы (слева — обычный MSAA, справа — с включенным DSR):

dsr.jpg В чём отличие от привычного суперсэмплинга и зачем нужно было давать методу новое имя? Во-первых — маркетинг. Во-вторых — DSR всё-таки использует более сложный фильтр Гаусса с 13-ю выборками, что позволяет заметно снизить количество артефактов алиасинга при приведении изображения от большего разрешения к меньшему, по сравнению с обычным суперсэмплингом.

Кроме этого, DSR удобно включать из панели GeForce Experience, при этом не нужно создавать «виртуальных» разрешений экрана, получая артефакты. Кстати, для тех, кому покажется, что DSR слишком сильно «замыливает» картинку, можно выбрать уровень «DSR-сглаживания» (DSR Smoothness), который по умолчанию установлен для фильтра Гаусса в 33%. Также можно задавать DSR-фактор для кратного увеличения разрешения рендеринга от 1.2x до 4.0x, а не довольствоваться выбранным за вас разрешением рендеринга.

Чтобы читателям было проще оценить вносимые при включении DSR изменения в качество картинки, предлагаем посмотреть на полноразмерные скриншоты из Assassin’s Creed, с включенным сглаживанием методами FXAA и MSAA, а также совместно с DSR:

FXAA FXAA+DSR ac4_fxaa_small.jpg ac4_fxaa_dsr_small.jpg MSAA MSAA+DSR ac4_msaa_small.jpg ac4_msaa_dsr_small.jpg Налицо — явное улучшение качества сглаживания, самая лучшая картинка получилась у MSAA+DSR, что понятно. Новый метод поддерживается и на других GPU компании, но именно на GM204 он будет работать эффективнее из-за большей производительности этого чипа в высоких разрешениях.

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

Для таких проектов в NVIDIA придумали новый метод сглаживания — Multi-Frame antialiasing (MFAA), позволяющий добиться большей производительности при сохранении высокого качества. Для этого потребовалось повысить гибкость методов выборки сэмплов, внедрив полностью программируемый мультисэмплинг, чтобы можно было добиться необходимого расположения выборок. До выхода графического процессора GM204 использовались фиксированные позиции для выборок, хранящиеся в ПЗУ, а теперь их можно перепрограммировать.

msaa.png Поэтому Maxwell умеет располагать субпиксели как угодно. Используется сетка 16×16 в 

Полный текст статьи читайте на iXBT