Про современную графику + SGSSAA скрытое шейдерное сглаживание в драйверах Nvidia
ОЧЕНЬ МНОГО ТЕКСТА. Сначала большая отсебятина о том как мы докатились до современной графики + в конце инструкция на Nvidia Profile Ispector
TAA
В современных играх и профессиональных программах используют крайне посредственное, но не требовательное сглаживание: TAA - Temporal Anti-Aliasing - Временное сглаживание
Он делает картинку сильно мыльной и делает неиграбельным в низких разрешениях
Nvidia в 2018 на SIGGRAPH выпустила презентацию на тему проблем TAA
Оттуда возьму часть сравнений
Но не это его главный минус, главный это Ghosting, от всех объектов появляется шлейф при движении
DLSS + FSR + XeSS имеют теже проблемы
Кувалда оставляет сильный шлейф при движении, заметном на заборе, у меня мало примеров, но тут показательный
Ещё убивает частицы и мелкие объекты вроде проводов
Star Wars Battlefront - FXAA
TAA
Почему раньше массового не использовали TAA + Про PS3/X360
В первый раз его заметил в Crysis 2 - 2011 год PS3/X360, разработчики использовали комбинацию алгоритма TAA с MSAA, картинка слегка размылена, Ghosting не замечал
Во времена PS3/X360 не требовалась особо TAA, у Xbox 360 часто применялось MSAA до 4x, благодаря дополнительному eDram в 10 МБ - 256GB/s от компании NEC, слева мини кристалл это он
NEC designed eDRAM die includes additional logic
105 million transistors (192 parallel pixel processors)
for color, alpha compositing, Z/stencil buffering, and anti-aliasing called “Intelligent Memory”, giving developers 4-sample anti-aliasing at very little performance cost.
У PS3 пропускная способность такая же как и у Xbox 360, но дополнительный кристалл дал возможность использовать MSAA до 4X, поэтому на PS3 чаще либо не было сглаживания, либо FXAA
Xbox 360 - 2005 год - есть одна проблема, это общая память и у процессора и у видеочипа, поэтому реальная пропускная способность будет делиться между процессором и видеочипом, можете просто напополам разделить,но NEC eDram 10 мб - 256GB/s доступен видеочипу полностью, он только для него, поэтому MSAA сглаживание часто есть
PS3 - 2006 год - тут видеочип 7900 GT с порезанной шиной до 128 Bit - 20.80 GB/s, скорее всего из за перемещения GDDR памяти на подложку, в оригинале 256 Bit - 42.24 GB/s, и ограниченно ROPs до 8, в оригинале 16
Тем не менее, под конец жизни, обе консоли были только с FXAA сглаживанием, на Xbox 360 скорее всего сказалась общая память и чип NEC стали использовать для кэша, чтобы компенсировать низкую пропускную способность
Проблемы OpenGL
Ещё есть огромная разница между API, на Xbox 360 понятное дело либо тот же DirectX 9 + ещё есть частично DirectX 10, либо что то максимально похожее для совместимости с ПК
на PS3 - OpenGL ES 1.1, который называют PSGL, OpenGL очень плохой API, а тут ещё ES версия
Вы возможно не обращаете внимание какой API используют игровые движки в запущенной игре, в OpenGL часто есть чрезмерное потребление видеопамяти, в DOOM 2016 для этого есть ограничитель памяти, он блокирует настройки, которые будут требовать больше, если разблокировать, на недостаточном количестве памяти FPS упадет до 10-15 и появится адский инпут лаг (Input Lag), DirectX бы стал балансировать что приводило бы к статтерам скорее, а может и без проблем даже быть
Есть ещё Wolfenstein: The New Order и Old Blood, отличные игры, но там только OpenGL с которым у вас FPS будет летать с 60 до 30 и обратно постоянно, либо без V-Sync играйте и терпите разрывы по экрану, захотите исправить это с модулями вроде FreeSync Premium то не выйдет, игра работает только в 60 ГЦ, а модули ставят в мониторы с высоким ГЦ, и на низких не реагируют на V-Sync
Базовый FreeSync не берёт на себя роль V-Sync, он бесполезен, у меня был монитор с ним и я долго не мог понять почему он не устраняет разрывы при включённом V-Sync, оказалось он этого не умеет, а я думал сначала что он может неисправен и сдавал по гарантии
Сейчас у меня FreeSync Premium Pro с G-SYNC Compatible (это значит что драйвер Nvidia сам включит синхронизацию с модулем), это прекрасно, VRR (Variable refresh rate) является фичей этих модулей, во первых он берёт на себя нагрузку от включённого V-Sync + если FPS нестабилен то фича VRR понижает динамически ГЦ монитора от 48 ГЦ и выше, очень плавно игра идёт, данный модуль должен быть в каждом мониторе, а ведь есть ещё G-Sync и G-Sync Ultimate
Вернёмся к OpenGL, проблема с потреблением памяти и скачки FPS с 60 до 30 при V-Sync это основная проблема, DirectX игр больше, а такие проблемы там меньше встречаются
Если вы думаете, что не всё так плохо с OpenGL то смотрите цепь событий
Перед этим напомню что OpenGL есть везде, он кроссплатформенный, есть на Apple + Android (и других Linux) + PS2/PS3 + Windows
DirectX доступен только на платформах Microsoft
"PS4 - 2013 год, используются два графических API: низкоуровневый API Gnm и высокоуровневый API Gnmx.
Большинство разработчиков начинают с Gnmx, который опирается на Gnm и, в свою очередь, управляет более сложными деталями GPU. Это может быть привычным способом работы, если разработчики привыкли к таким платформам, как Direct3D 12."
Июнь 2014 года Apple представляет свой API Metal, на замену OpenGL
Вообще я далеко пошёл, OpenGL давно нужно было кардинально обновлять, у него нет альтернатив, он же кроссплатформенный и он нужен многим
AMD + Valve (тогда уже были Steam Machines на Linux) + Nvidia совместно с The Khronos Group (тот кому принадлежит OpenGL, на тот и данный момент) долго разрабатывал кардинально новый OpenGL
AMD воспользовалась совместными наработками и от себя представила в 2013 году API Mantle эксклюзивно для Windows и Radeon, в игре Battlefield 4 он есть, как вы понимаете мертворожденный API
В феврале 2016 разработка нового OpenGL завершилась, его показали и назвали API Vulkan, переименование избавило от плохой репутации, многие же не в курсе что это кардинально новый OpenGL
API Vulkan также кроссплатформенный, успешно развивается и является конкурентом именно для DirectX 12, они оба низкоуровневые
Закат ПК технологий
Вернём вас с консолям, во времена PS3/X360 технологии разработанные именно для ПК начали уменьшаться, последний это DirectX 11
В основном даже в играх, которые делают только для ПК используют код разработанный для консолей, Освещение + LOD + Shadow Box, даже если игра там никогда не выйдет и не сможет
Это не было большой проблемой во времена PS3/X360, кроме мизерного количества памяти относительно даже офисного ПК, остальное было почти топовыми, отсюда и прорывы в графике, особенно относительно прошлого поколения консолей
Всё это закончилось во времена PS4/XO - 2013 год
Убийца игровых технологий - APU
PS4/XO не имеют полноценных процессоров и видеокарт, там APU
На ПК:
Процессор - самостоятельный + свой канал памяти + подходящий тип памяти DDR
Между собой работают по PCI-E, не мешающим работе их каналам памяти
Видеокарта - самостоятельная + свой канал памяти + подходящий тип памяти GDDR
Если память не подходящая, то падение производительности будет очень сильное и более высокая частота не спасёт, в видео как раз пример
На APU процессорная часть и видеочасть объединена в одном кристалле
Это замечательно для нетбуков и портативок, но катастрофа для игровой индустрии
Там общая память как у Xbox Original и 360, только у первых не APU и общаются между собой они полноценно
Общая память означает что у вас пропускная способность делится напополам и различия DDR и GDDR снизят производительность одного из них
Но это всё равно не самое страшное, самое страшное это процессорный блок
У AMD были полноценные Phenom и FX, с низкой производительностью в однопотоке и хорошей производительностью в многопотоке + AMD первыми сделали L3 кэш во времена Core 2 Duo / Core 2 Quad
Параллельно были APU - AMD C-50/60 + E-250/E-350
Их ставили в нетбуки, у меня был C-60 11.6 1366x768, относительно конкурента Intel Atom с графикой GMA неспособной в разрешение выше 1024x768, это было очень круто, но процессорная часть была сильно медленнее и L3 кэша не было
И вот это взяли за основу для разработки чипов PS4/XO + выпустили серию A4/A6/A8/A9/A10/A12
Никакого L3 кэша так и не было + они не смогли улучшить процессорную производительность, там было плохо и в однопотоке и в многопотоке
Близость выхода PS4/XO
А всё это время разработчики на девкитах делали свои игры и сливали:
Процессор с L3 кэш в 8 Мб частоту не указывали (FX 8 ядер - 8 мб/ Phenom 6 ядер - 6 МБ)
8 Гб DDR3 (писали, чтобы игры ограничивали 4 Гб)
Видеокарта полноценная с 1280 ядрами и 2 Гб (это HD 7870 - 2.560 TFLOPS, выпущенная в марте 2012 года)
Sony сама говорила что в PS4 будет 8 ядерный процессор, MS говорила тоже самое
Но потом ближе к Е3 начали сливать что финальный вариант это APU с частотой ниже 2 Ггц без L3 кэша с очень медленной графикой
Никто не поверил, а потом случился Е3 2013
PS4 APU: Архитектура Jaguar
8 Гб GDDR5 - 256 Bit 176.0 GB/s
8 ядер - 1.6 Ггц - 102.4 GFLOPS
GCN второй версии - 1152 ядра (сам чип с 1280, но часть заблокирована) - 800 Мгц- 1.843 TFLOPS
Есть дополнительный процессор со своей памятью для системы и записи игр
Xbox One APU: Архитектура Jaguar (да тоже самое, но память другая и видеочасть очень порезана, самый медленный)
8 Гб DDR3 - 256 Bit 68.3 GB/s + 32 MB ESRAM - 204 GB/s
8 ядер - 1.75 GHz - не указана производительность, но этот тот же Jaguar что и у PS4
GCN первой версии - 768 ядра (сам чип с 896, но часть заблокирована) - 853 Мгц - 1.3 TFLOPS
Чтобы понять, что тут за мусор вместо процессорной части, сравнение с PS3/X360:
Процессорная часть 2013 год PS4 - 102.4 GFLOPS
Процессор 2006 года PS3 Cell: 179.2 GFLOPS
Процессор 2005 года Xbox 360 Xenon: 115.2 GFLOPS
Графическая часть конечно значительно выше, только без нормального процессора это не имеет большого значения, тем более когда всё это APU
PS3 RSX - 192 GFLOPS
Xbox 360 Xenos - 240.0 GFLOPS
Обычно когда показывают игры, можно сразу представить как испортят графику, Ubisoft так любит делать ещё до PS4/XO
После Е3 2013 мне стало понятно, что всё без исключения пойдёт под даунгрейд и перенос, так и пошло
Killzone Shadow Fall - стартовая игра, которая не была каким то прорывом в графике на момент показа, превратилась в мусор на релизе, я проходил и в мультиплеер играл, где дальность прорисовки очень низкая, игра в целом хорошая, но Killzone 2 и 3 намного лучше и красивее
Благодаря большому, относительно PS3/X360, объёму памяти, разработчики смогли показывать гораздо большего размера локации
Но APU + процессорный блок медленнее чем у PS3/X360 дали о себе знать
Освещение во всех современных играх ужасное, до сих пор он используется даже в играх для PS5/XSX/XSS, детализация бедная, физики минимум или вообще статично
Всё плохое что было придумано ещё во времена PS3/X360, но не пользовалась массового, пошло в PS4/XO
SSR - Screen Space Reflection - отражения от камеры, похожее появилось в Call of Duty: World at War 2008 год
TAA про который уже писал, поначалу использовали FXAA, но TAA его полностью заменил
Screen Space Shadows - тени от камеры, успели начать использовать под конец PS4/XO, в играх обратите внимание на них, опустите камеру и посмотрите исчезнут ли тени
И это всё наложилось, на то что разработчиков нанимают по квотам, т.е. не профессионалов
Времена PS4/XO
Epic Games стали одними из тех кто не смог эффективно оптимизировать свой движок и сделал Unreal Engine 4, ещё даже без квот
The Vanishing of Ethan Carter
PC - Unreal Engine 3
PS4 - Unreal Engine 4
В Unreal Engine 3 стандартная симуляция воды с отражениями, есть возможность сделать её динамической, чтобы реагировала, не просто разводы будут
Вода в Unreal Engine 4 это фиг знай что, она статична и вообще не умеет в динамику, она до сих пор по дефолту такая в редакторе Unreal Engine 5, хотя в Fortnite они обновили
Тем не менее, поначалу на PS4/XO хорошие игры успели выйти
Batman: Arkham Knight, к счастью разработчики оставили и сильно модифицировали Unreal Engine 3, хорошо что успели закончить трилогию, сейчас такую игру не сделают, крайне рекомендую, там и сюжет отличный и все персонажи красивые
Обратите внимание это из игры моделька, они смогли хорошо задействовать видеочасть, сильно сэкономили на тенях, поиграете заметите и дальность прорисовки низкая, видно когда летаешь, ночь скрывает слегка
Deus Ex: Mankind Divided, несмотря на то что игра не закончена, поиграйте, она отличная
Причём предыдущая Deus Ex Human Revolution графически очень отсталая, одна из самых уродливых игр PS3/X360, там у главного героя даже глаз нет, всегда очки плотно скрывают, почти все катсцены там записаны, но в Mankind Divided графика хорошая, я даже удивился что они смогли, либо программистов наняли, либо ПКшный X86 им понятнее
Кратко про PS5/XSX/XSS
Тут тоже APU, но 2 марта 2017 AMD сделала первый Ryzen 1800X - 8 ядер / 16 потоков, это не APU
Это был успех и подтолкнул Intel перестать перевыпускать 4 ядерные / 8 поточные процессоры, сначала выпустила сильно разогнанный 7700K 4 ядра / 8 потоков - 3 января 2017, как чувствовали угрозу
Потом 5 октября 2017 уже вышел на новом сокете 8700K 6 ядер / 12 потоков
Первым APU стал Ryzen 2400G 4 ядра / 8 потоков - 12 февраля 2018 года
Стало понятно что у AMD есть APU с нормальной процессорной частью, Sony и MS не будут отказываться от APU, скорее всего в будущем вообще ARM консоль сделают и не портативную, потому что консоль не в убыток продают, как было во времена PS3/X360
PS5 - Oberon
16 GB GDDR6 - 256-bit - 448 GB/s
Zen 2 - 8 ядер / 16 потоков - 3.5 Ггц, L3 кэш 8 Мб
RDNA 2 - 2233 MHz - 2304 ядра - 10.29 TFLOPS
SSD 5.5 Gb/s
Есть ещё 512 MB DDR4, скорее всего как и в PS4 есть дополнительный процессор для системы и записи игр
Xbox Series X - Scarlett
16 GB GDDR6 разделено, скорее всего изначально было 256 Bit как у PS5:
10240 MB для игр - 320 bit 560GB/s
3584 MB для системы - 192 bit 336GB/s
2560 MB зарезервировано - 192 bit 336GB/s
Zen 2 - 8 ядер / 16 потоков - 3.6 Ггц, L3 кэш 8 Мб
RDNA 2 - 1825 MHz - 3328 ядер (сам чип с 3584, но часть заблокирована) - 12.15 TFLOPS
SSD 2.4 Gb/s
Xbox Series S - Lockhart, всё тоже самое только в 1440P :)
10 GB GDDR6 разделено:
8192 MB для игр - 128 bit 224GB/s
2048 MB для системы - 32 bit 56GB/s
Zen 2 - 8 ядер / 16 потоков - 3.4 Ггц, L3 кэш 8 Мб
RDNA 2 - 1565 MHz - 1280 ядер (сам чип с 1536, но часть заблокирована) - 4 TFLOPS
SSD 2.4 Gb/s
Вообще тут Series S по памяти прям больно, но процессорная часть намного лучше того мусора что был у PS4/XO, поэтому улучшения должны быть в будущих играх
Но из-за квотных не профессионалов, скорее всего застрянем с мусорной графикой PS4/XO и требованиями RTX 4090 для 1080P с 30 фпс
Но у нас есть много уже вышедших игр, давайте улучшать их
Nvidia Profile Inspector
Через него можно активировать скрытые возможности драйверов Nvidia
Например шейдерный SGSSAA - Sparse Grid Supersampling
Crysis, слева выключено - справа 8 x SGSSAA, внимание на ландшафт
Serious Sam Fusion - Serious Sam 3: Jewel of the Nile - Внимание на оружие
Выключено
8 x SGSSAA
Шейдерное сглаживание не убирает эффект лесенки, он увеличивает разрешение шейдеров, в Crysis на ландшафт наложен Parallax Mapping, поэтому Анизотропная фильтрация не помогает (у меня форсирована везде, как и высокое качество текстур, скрин Nvidia Profile Inspector), а в SGSSAA увеличивает разрешение
Анизотропную фильтрацию советую всегда ставить на 16x для всех приложений
Не смог найти сравнение, но в играх Анизотропная фильтрация может быть халтурной, поэтому нужно форсировать именно из драйвера, на производительность толком не влияет
SGSSAA нельзя форсировать глобально, он конфликтует с приложениями, в Windows 10 с Параметрами, в Windows 11 с приложениями UWP
Только для конкретных игр, выбираем профиль игры, обязательно пишете по порядку название, поиск ищет по порядку
Зеленые параметры это те которые Nvidia прописывает их не нужно трогать, для включения SGSSAA, не нужно ничего кроме него
Для форсирования обычного сглаживания нужно выбирать:
Override any application setting - Если игра OpenGL, пример первая Call Of Duty
Enhance the application setting - Если игра DirectX
Для игр OpenGL недоступно чистое SSAA, которое является единственным нормальным сглаживание, MSAA упрощенная версия
D3D Only - только для DirectX
Здесь у меня вариант 2x2 SSAA + 8x MSAA
Первая Call Of Duty - Выключено, внимание на растяжки и деревья
2x2 SSAA + 8x MSAA, потребление и нагрузка также выросли сильно
Для DirectX игр, где есть MSAA внутри
В самое игре нужно обязательно включить MSAA, далее заходите в профиль игры в Nvidia Profile Ispector, ставите Enhance the application setting и выбираете один из полноценных SSAA сглаживаний (Supersampling), не ставьте сразу на максимум, а то потом будете удивляться 5 FPS в игре
Пример профиля Call Of Duty 2, игра DirectX 9
Скриншоты не смог сделать, ибо на них не было видно разницы как в первом Call Of Duty, где есть объекты на которых сразу видно
В играх на DirectX 12 и Vulkan это работать не будет, в основном в старых где есть MSAA внутри, работать будет
SGSSAA работает везде, но вы сами смотрите, может быть он увеличит разрешение шейдеров так что вам не понравится, или понизит производительность, например если бросить дымовую гранату с включённым SGSSAA то FPS сильно упадёт, без него всё ок
Для некоторых игр может потребоваться прописывание совместимых кодов
Но есть проблема, эти коды удаляются при обновлении драйверов
Поэтому я сразу про это не писал, после обнов заново их прописывать лень
В драйверах ещё есть возможность включать глобальное затенение
Но тоже проблема, должен быть включён параметр Ambient Occlusion - Usage
Он тоже сбрасывается при обновлении
Я его глобально включаю после обновлений, настройка второго у профилей игр не сбрасывается, но там тоже надо прописывать коды из верхней таблицы, в основном без кодов работает редко
Производительность сильно упадёт, так что лучше ограничиться SGSSAA и если есть возможность SSAA