Базальтовые лавовые потоки, которые часто имеют столбчатые швы, поскольку силы уменьшаются по мере остывания лавы и образования трещин. Огромные сети трещин образуют мозаику.
Как ускорить видеокарту AMD (Radeon) — повышение FPS в играх
В целом, я должен отметить (из своего опыта), что видеокарты AMD являются одними из лучших, когда речь идет об ускорении и увеличении FPS за счет тонкой настройки параметров производительности и 3D-графики. Возможно, именно поэтому я до сих пор неравнодушен к AMD.
По моим наблюдениям, графика AMD может быть очень хорошо настроена без разгона, увеличивая FPS как минимум на 10-20% (в отличие от разгона и сложной настройки игры)!
- Графика IntelHD (оптимизация и ускорение) — см. руководство ,
- nVidia (GeForce) // увеличение производительности — см. руководство .
С чего начать? С драйверов!
Версия драйвера иногда оказывает большое влияние на производительность видеокарты. Если у вас не установлены «родные» драйверы AMD (с «AMD Control Center»), вы не сможете настроить их под свои нужды.
Это может произойти, например, если вы не обновили драйверы после установки Windows. Это можно легко проверить: Щелкните правой кнопкой мыши на рабочем столе и проверьте, появится ли меню правой кнопки мыши со ссылкой для настройки драйвера. (Обычно это: «AMD Radeon Settings» или «Graphics Properties» (см. рис. 1 ниже) 👇.
📌 Помогите!
В панели задач рядом с часами и на рабочем столе отсутствует значок графического драйвера Intel HD, nVidia или AMD Radeon — https://ocomp.info/net-znachka-videodrayvera.html.
Рисунок 1. 2 способа открыть настройки видеокарты AMD Radeon.
Простой совет перед началом настройки видеокарты — обновите драйверы (ссылка 📌 на лучшие программы автоматического обновления): Возможно, появятся новые функции и опции, которые помогут вам оптимизировать работу оборудования.
Примечание о важности «водителей».
Кстати, лет 15 назад у меня была видеокарта ATI Radeon (точную модель сейчас не назову). Дело в том, что помимо официальных драйверов существовали и «неофициальные» — драйверы Omega (отличный пакет драйверов, кстати).
Поэтому, установив эти драйверы и включив максимальную производительность (в настройках), удалось значительно увеличить производительность видеокарты!
В цифрах.
Я не смог пройти ни одного уровня игры, потому что она была слишком медленной (FPS: 27-30). После того, как я установил и настроил драйвера Omega, FPS поднялся до 36-40. Не много, но уровень прохождения позволял это сделать.
Примечание: Установка драйверов Omega теперь не имеет смысла (это не так, просто пример).
Настройка графики в центре управления графикой AMD // для повышения производительности
Поэтому давайте перейдем непосредственно к конфигурации.
Просто нажмите на значок диска или щелкните правой кнопкой мыши в любом месте рабочего стола и перейдите по ссылке «Свойства графики» (или «Настройки AMD Radeon») — см. Нажмите на ссылку «Графика», а затем на ссылку «Графика» (см. рис. 1 👇.
Примечание.
Я показываю вам настройки видеокарты типичного «среднего» ноутбука сегодня с двумя видеокартами: интегрированной — IntelHD — и дискретной — AMD. Для владельцев ПК или ноутбуков с одной видеокартой установка в принципе не будет полностью отличаться (за исключением некоторых «ошибок» в маркировке и переводе некоторых меню).
Рисунок 1 (двойной). Два способа открыть/нажать настройки видеокарты AMD Radeon.
Далее необходимо открыть раздел «Игры», а затем вкладку «Универсальные настройки» (в старых версиях драйвера — раздел «Настройки 3-D приложений/Настройки системы»).
Чтобы активировать максимальную производительность видеокарты, необходимо выполнить следующие настройки (см. рис. 2, некоторые меню могут отличаться, но самые важные одинаковы):
- Режим сглаживания: Используйте настройки приложений (таким образом мы можем настроить каждое приложение (игру) независимо),
- Антисэмплинг: используйте настройки приложения (аналогичным образом),
- Фильтр : По умолчанию,
- Метод сглаживания: адаптивная мультисэмплинг.
- Морфологическая фильтрация : Выкл,
- Режим анизотропной фильтрации : Используйте настройки приложения,
- Уровень анизотропной фильтрации : Используйте настройки приложения (16x),
- Качество фильтрации текстур : Мощность,
- Оптимизация формы поверхности : активная,
- Ждать вертикального обновления : Всегда отключено,
- Тройная буферизация OpenLG : Выкл,
- Режим тесселяции : оптимизирован компанией AMD,
- Максимальный уровень тесселяции : Оптимизировано AMD.
- Управление частотой кадров : Выкл.
Рисунок 2: Настройки Radeon — Глобальные настройки / Кликабельно
Настройки видеокарты AMD (другая версия панели управления AMD Radeon)
Рисунок 2.1 Настройки 3D-приложений — AMD (старая версия драйвера)
После изменения настроек 3D-графики откройте Power, а затем вкладку PowerPlay.
Эта вкладка отвечает за управление производительностью GPU, когда ноутбук работает от батареи или от сети. Как правило, следует установить обе вкладки в положение «Максимальная мощность» (как на рис. 3.).
На некоторых фотографиях можно увидеть эффект глубины резкости в гипертрофированной форме. Это та степень размытости, которую часто пытаются имитировать в 3D-сценах.
Шейдеры
Шейдеры — это небольшие программы, которые могут выполнять определенные манипуляции с 3D-сценой, например, изменять уровень освещения, накладывать текстуры, добавлять постобработку и другие эффекты.
Шейдеры делятся на три типа: Vertex (вершинный шейдер) редактирует координаты; Geometric (геометрический шейдер) может редактировать не только отдельные вершины, но и целые геометрические фигуры, состоящие до 6 вершин; Pixel (пиксельный шейдер) работает с отдельными пикселями и их параметрами.
Шейдеры в основном используются для создания новых эффектов. Без них спектр функций, которые разработчики могут использовать в играх, очень ограничен. Другими словами, добавление шейдеров позволило создавать новые эффекты, которые не реализованы на видеокарте по умолчанию.
Шейдеры очень производительны в параллельном режиме, именно поэтому современные видеокарты имеют так много потоковых процессоров, также называемых шейдерами. У GeForce GTX 580, например, их 512.
Parallax mapping
Параллакс-маппинг — это модифицированная версия хорошо известной техники бамп-маппинга, используемой для добавления рельефности текстуре. Параллакс-маппинг не создает 3D-объекты в традиционном смысле. Например, пол или стена в игровой сцене могут выглядеть грубыми, не будучи абсолютно плоскими. Эффект рельефа достигается здесь только за счет работы с текстурой.
Исходный объект не обязательно должен быть плоским. Этот метод работает для различных игровых объектов, но полезен только в том случае, если высота поверхности изменяется равномерно. Резкие различия обрабатываются неправильно, и объекты появляются поверх объекта.
Параллакс-маппинг экономит много компьютерных ресурсов, поскольку при использовании похожих объектов с одинаковой детальной 3D-структурой производительности видеоадаптеров не хватило бы для рендеринга сцен в реальном времени.
Этот эффект обычно применяется на каменных плитах, стенах, кирпичах и плитке.
Anti-Aliasing
До появления DirectX 8 сглаживание в играх было известно как SuperSampling Anti-Aliasing (SSAA), также известное как Full-Scene Anti-Aliasing (FSAA). FSAA имела значительные проблемы с производительностью, поэтому от нее быстро отказались с появлением DX8 и заменили на Multisample Automatic Aliasing (MSAA). Хотя она давала более низкие результаты, она была намного продуктивнее своей предшественницы. С тех пор появились более совершенные алгоритмы, такие как CSAA.
Учитывая значительный рост производительности видеокарт в последние годы, и AMD, и NVIDIA восстановили поддержку SSAA в своих графических ускорителях. Но даже сейчас вы не можете использовать его в современных играх, потому что частота кадров будет слишком низкой. SSAA эффективна только в играх более ранних лет или в современных играх со скромными настройками других параметров графики. AMD предлагает поддержку SSAA только для игр DX9, в то время как NVIDIA предлагает SSAA в режимах DX10 и DX11.
Принцип работы SSAA очень прост. Прежде чем изображение появится на экране, определенная информация не учитывается в исходном разрешении, а экстраполируется и превращается в кратное двум. Затем результат масштабируется до нужного размера, чтобы «лесенка» по краям объекта была не так заметна. Чем выше исходное изображение и чем выше коэффициент контрастности (2x, 4x, 8x, 16x, 32x), тем меньше неровных краев в моделях. MSAA, в отличие от FSAA, сглаживает только края объектов, что экономит значительные ресурсы видеокарты, но может оставлять артефакты внутри полигонов.
Если раньше сглаживание всегда значительно снижало частоту кадров в играх, то сейчас оно оказывает незначительное влияние на частоту кадров, а иногда и вовсе не влияет.
Шейдеры очень производительны в параллельном режиме, именно поэтому современные видеокарты имеют так много потоковых процессоров, также называемых шейдерами. У GeForce GTX 580, например, их 512.
Parallax mapping
Модифицированная версия отображения неровностей — параллаксное отображение используется для придания текстурам рельефности, и мы не говорим здесь о 3D. Например, стена в обычной видеоигре выглядит грубой, но на самом деле она совершенно плоская. Такой эффект достигается путем манипулирования текстурами с помощью параллаксного отображения.
Объект, к которому применяется эффект, не обязательно должен быть плоским. Этот метод работает для различных игровых объектов, но учтите, что использование параллаксного отображения желательно только тогда, когда высота поверхности изменяется плавно. Дело в том, что резкие изменения могут быть обработаны неправильно, что почти наверняка приведет к появлению артефактов на конечном изображении.
Использование параллаксного отображения позволяет экономить вычислительные ресурсы графической системы. Это связано с тем, что использование 3D-структур для таких задач увеличивает вычислительную мощность, а основная мощность видеокарт используется для обработки наиболее важных графических элементов. Параллаксное отображение в основном используется для представления каменных мостов, стен, кирпичей и т.д.
Anti-Aliasing
Когда DirectX 8 еще не был известен, в играх использовался SSAA (SuperSampling Anti-Aliasing), также известный как FSAA (Full-Scene Anti-Aliasing). Когда было введено сглаживание, оно вызвало значительное снижение производительности, а когда появился DirectX 8, от него отказались. После выхода DirectX 8 от него отказались. MSAA (Multisample Anti-Aliasing) заменила SSAA. Прирост производительности был очевиден, ему даже прощали худшие результаты сглаживания, а через некоторое время появился более продвинутый метод — CSAA.
Сегодня производительность видеокарт возросла многократно, так как гиганты индустрии AMD и NVIDIA вновь включили SSAA в свои ускорители и поддерживают ее, но использование в современных играх нежелательно из-за слишком низкой частоты кадров в секунду. SSAA может быть эффективна только в старых проектах и при умеренных настройках экрана. В то время как карты AMD поддерживают SSAA только для DirectX 9, SSAA от NVIDIA может использоваться в режимах DirectX 10 и DirectX 11.
Сглаживание работает по довольно простому алгоритму: перед выводом изображения на экран служебная информация рассчитывается не с исходным разрешением, а с кратным двум. После этого результат уменьшается до нужного значения, чтобы отсутствие сглаживания по краям объекта было уже не так заметно. Из этого можно сделать вывод, что чем выше исходное изображение и коэффициент сглаживания, тем меньше артефактов появляется в моделях. MSAA, в отличие от FSAA, сглаживает только края объектов, экономя ресурсы, но может оставлять артефакты в самих полигонах.
Тесселяция
Оцифровка может увеличить количество полигонов в компьютерной модели в любое число раз. Для достижения этого эффекта каждый полигон разбивается на множество новых полигонов, которые размещаются примерно в том же месте, что и оригинал.
Такие манипуляции существенно влияют на детализацию простых 3D-объектов, но при этом нагрузка на систему возрастает в той же степени, вплоть до появления артефактов. Мозаичная съемка в принципе похожа на съемку параллакса, но это только на первый взгляд. Мозаичное изображение действительно изменяет геометрическую форму объекта, а не просто имитирует рельеф. Причем тесселяцию можно применять к любому объекту, в то время как параллаксное отображение характерно для определенного типа.
Вы можете ясно видеть, почему местность выглядит так странно — она совершенно плоская! Дверь сливается со стенами, а по краям здания только пепелища.
Поговорим о тесселяции в DirectX 11
Возможно, вы помните серию скриншотов Кристины Коффин, которая тогда сказала: «Единственное, что я вижу на скриншотах, это мозаичный дисплей disabled…..
Тесселлатор
Технология тесселяции не является абсолютно новой. Впервые он был использован в 2005 году в видеопроцессорах Xenos компании AMD для игровых консолей Xbox 360. Однако модуль тесселяции, используемый в DirectX 11, является более мощным и гибким, чем модуль, используемый в графических процессорах Xenos.
Тесселяция — увеличение количества полигонов
Технология тесселяции упрощает процесс авторинга и позволяет программистам и художникам создавать более реалистичные и сложные персонажи без огромных затрат на производительность системы. Тесселяция основана на идее, что объект, находящийся далеко от точки зрения, менее детализирован, потому что его трудно увидеть. Однако чем ближе, тем больше треугольников добавляется к изображению объекта, чтобы улучшить детализацию и придать ему более реалистичный вид. Прелесть этого метода в том, что по мере изучения вычисленного изображения среднее количество обрабатываемых треугольников остается почти постоянным, поэтому внезапное падение производительности системы гораздо менее вероятно. Этот тип прироста производительности лучше всего проявляется при разработке консольных игр, поскольку аппаратное обеспечение часто очень ограничено, но на платформе ПК мозаичная конфигурация может обеспечить значительный прирост производительности.
Все действия выполняются графическим процессором
Процесс оцифровки объекта начинается с Hull Shader, который принимает контрольные точки и рассчитывает соответствующий уровень оцифровки. После этой базовой реорганизации контрольные точки отправляются в шейдер домена — движок тесселяции абсолютно ничего не знает о контрольных точках. Вместо этого механизм тесселяции получает набор параметров тесселяции, которые указывают ему степень тесселяции, необходимую для конкретного поля (определенные минимальные части объекта). Hull Shader указывает тесселятору, в каком порядке работать — программист может указать, какой метод использовать для тесселяции, поскольку движок тесселяции имеет фиксированный набор функций и имеет несколько режимов работы. Механизм тесселяции берет то, что ему дает шейдер Hull, и работает над патчем для создания необходимой дополнительной геометрии. После завершения этого этапа извлекаются точки домена и данные о топологии. Точки домена поступают в шейдер домена, который создает на их основе вершины, доступ к которым может получить остальная часть конвейера. В то же время данные топологии адресуются непосредственно к шагу сборки конвейерных примитивов, поскольку эти данные не требуются шейдеру, а подготавливаются для растеризатора. Следует отметить, что этапы растеризации работают не с треугольниками, а с пятнами и точками. Пятна — это кривые или участки поверхности, которые почти всегда квадратные. Впервые в DirectX в качестве примитивов используются непрямоугольные объекты, и это большой шаг вперед.
Тесселяция в играх что это
Доступно на сайте http://gamegpu.com/
Потребление оперативной памяти игрой с различными настройками графики:
Общее потребление оперативной памяти системы во время игрового процесса при максимальных настройках графики (также зависит от количества программ, запущенных в фоновом режиме):
Вы увидите, что для минимальных настроек необходим компьютер с 3 ГБ ОЗУ, для средних настроек — 3,5-4 ГБ, для высоких настроек — 6 ГБ, а для максимальных настроек — 8 ГБ ОЗУ или более. Перед запуском игры, конечно же, следует закрыть браузеры и другие запущенные программы, чтобы освободить память. Объем памяти определяется активированным файлом подкачки.
Q: У меня gtx 780ti или gtx970980, и игра тормозит до максимума! Какая же это паршивая оптимизация, ведь игра лагает на самых лучших видеокартах! О: Не паникуйте! Прежде всего, текстуры с максимальным разрешением предназначены для видеокарт с более чем 6 Гб памяти. Поэтому выбирайте текстуры «высокого качества». Во-вторых, обратите внимание на сглаживание, установите SMAA или FXAA. После этого лаги, скорее всего, исчезнут.
В: У меня 2 ГБ видеопамяти, и моя игра сильно лагает. Что мне теперь делать? Ответ: Если ваша видеокарта имеет только 2 Гб памяти (например, некоторые версии gtx960), установите качество текстур на «среднее» и попробуйте перезапустить игру.
В: Моя игра слишком сильно лагает при максимальной производительности! Какие варианты следует сократить в первую очередь? О: 1) Установите сглаживание на SMAA или FXAA. 2) Установите динамическую листву на средний уровень. 3) Установите уровень детализации на «высокий» или ниже. 4) PureHair просто «ON». 5) Установите качество теней на «среднее». 5) Если у вас видеокарта серии GTX7XX или меньше, отключите вентиляцию. 6) Установите качество бликов на минимум.
В: Какие варианты могут испортить мою графику? О: 1) «Глубина резкости» размывает изображение, что не нравится некоторым людям. 2) «Зерно пленки» добавляет шум и артефакты к изображению. 3) «Размытие краев» также не всем по вкусу. 4) «Мягкие тени от солнца» сильно размывает тени, особенно если параметр «Качество теней» ниже, чем «Очень высокое».
В: У меня очень слабый компьютер. Я играю как можно меньше, но у меня есть запас энергии. Какие опции следует активировать в первую очередь, чтобы значительно улучшить графику? Ответ: 1) Убедитесь, что у вас включена функция «Ambient Obstacle». 2) Установите для параметра «Динамическая листва» значение «Средняя». 3) Установите для параметра «Детализация» значение «средняя». 4) Включите «Screen Space Reflections», но не в последнюю очередь 5) «Shadow Quality» сильно влияет на качество графики, поэтому постарайтесь установить тени хотя бы на «minimum», это очень важно. 6) «Texture Quality» зависит только от размера видеопамяти, поэтому установите его на «medium» или «high».
Q: У меня в игре fps нормальный, но в cutscenes игра лагает! Что мне делать? Ответ: Опции «Чистые волосы» и «Глубина резкости» в длинных клипах автоматически включаются на максимум независимо от выбранных настроек, поэтому отключите соответствующие опции.
В: У меня только 2 ГБ оперативной памяти, могу ли я не играть в игру? О: Да, вы можете! Если у меня всего 2,2 ГБ оперативной памяти, я не смогу играть в игру. Загрузка игры и быстрый переход в другие зоны займет 8-15 минут. При переходе из одной зоны в другую игра будет зависать на 30-40 секунд в течение нескольких минут.
В: У меня очень старый компьютер. Там gt440+core 2 duo E4400. Могу ли я посмотреть игру только на youtube? О: Нет. Хотите верьте, хотите нет, но я запускал игру на gt440+ core 2 duo E4400 (2.65 GHZ) и имел 17-25 fps при 1280×720.
Tessellation (Тесселяция)
Поверхности объектов часто описываются примитивами, такими как треугольники, квадраты или многоугольники, и графический ускоритель разработан так, чтобы быть максимально эффективным при вычислениях с этими примитивами. Алгоритмы мозаики позволяют регулярно накладывать мозаику на один примитив, например, треугольник, делая геометрию более гладкой.
Что такое тесселяция?
7 августа 2005 года (обновлено: 20 февраля 2010 года)
> Процесс разделения изображения на более мелкие фигуры. Я думал, что это разделение модели на полигоны.
Каждая точка в начале и конце каждой строки обрабатывается целым рядом вычислений. Некоторые расчеты очень простые и быстрые, в то время как другие гораздо сложнее. Обработка точек в группах, особенно в виде треугольников, может привести к значительному увеличению производительности, что мы рассмотрим более подробно.
Преимущества тесселяции
- Это экономит много памяти и пропускную способность и позволяет приложению рендерить более детализированные поверхности, чем модели низкого разрешения. Метод тесселяции, реализованный в конвейере Direct3D 11, также поддерживает рендеринг со смещением, который может создавать впечатляющие объемы поверхности.
- Он поддерживает масштабируемые методы рендеринга, такие как непрерывные или зависящие от вида слои деталей, которые могут вычисляться на лету.
- Повышает производительность за счет выполнения вычислений, требующих больших затрат, с меньшей скоростью (выполнение вычислений на модели с более низким уровнем детализации). Это может включать расчеты смешивания с использованием форм перекрытия и целей формы для реалистичного движения, или расчеты физики для обнаружения столкновений или моделирования динамики мягкого тела.
Конвейер Direct3D 11 реализует мозаику аппаратно, перенося работу с CPU на GPU. Это может привести к значительному увеличению производительности, когда в приложении используется большое количество целей морфинга и/или более сложные модели деформации/кожи. Чтобы получить доступ к новым возможностям тесселяции, вам необходимо ознакомиться с некоторыми новыми этапами конвейера.
Новые этапы конвейера
Тесселяция использует графический процессор для расчета более детальной поверхности, состоящей из преобразований квадратов, треугольников и изолиний. Каждое преобразование делится на треугольники, точки и линии в соответствии с коэффициентами тесселяции для аппроксимации поверхности более высокого порядка. Конвейер Direct3D 11 реализует оцифровку с помощью трех новых этапов конвейера:
-
— программируемый этап затенения, который создает геометрическую фиксацию (и фиксированные фиксации), соответствующую каждой входной фиксации (четыре, треугольник или линия); — этап конвейера фиксированных функций, который создает шаблон области паттерна, представляющий геометрическую фиксацию, и создает набор небольших объектов (треугольников, точек или линий), соединяющих эти шаблоны; — программируемый этап затенения, который вычисляет положение вершин, соответствующих каждой области паттерна.
На следующей схеме показаны новые этапы конвейера Direct3D 11.
На следующей схеме показан ход каждого этапа визуализации мозаики. Выполнение начинается с меньшей области с низким уровнем детализации. Затем рассматривается входное преобразование с соответствующим геометрическим преобразованием, образцы поля и треугольники, соединяющие эти образцы. Наконец, вершины, соответствующие этим узорам, выделяются.
Этап Hull-Shader
Шейдер Hull, который вызывается один раз для каждого поля, преобразует входные контрольные точки, определяющие поверхность низкого порядка, в контрольные точки, составляющие поле. Он также выполняет определенные вычисления на пятнах, чтобы предоставить данные для мозаичного анализа и фазы тематического поля. На уровне простейшего «черного ящика» этап шейдера Hull будет выглядеть примерно так, как показано на схеме ниже.
Шейдер Hull реализован с помощью функции HLSL и имеет следующие свойства:
- Входными данными для затенения являются от 1 до 32 контрольных точек.
- Шейдер извлекает от 1 до 32 контрольных точек, независимо от количества факторов затенения. Начальные контрольные точки затенения поверхности могут быть использованы шейдером поля. Данные фиксированной поверхности могут использоваться полевым шейдером; коэффициенты затенения могут использоваться полевым шейдером и стадией затенения.
- Коэффициенты мозаики определяют, на сколько частей делится каждое поле.
- Коэффициент затенения определяет, какие условия необходимы для этапа оцифровки. Сюда входит такая информация, как количество контрольных точек, тип поверхности детали и тип мозаичного участка. Эта информация отображается в виде примечания, обычно в начале кода затенения.
- Если на этапе шейдера тела установлен коэффициент тесселяции краев = 0 или NaN, патч отклоняется. В результате шаг тесселяции может быть выполнен или не выполнен, формирователь поля не будет выполнен, и не будет видимого вывода для указанной области.
На более глубоком уровне шейдер тесселяции фактически выполняется в два этапа: этап контрольной точки и этап фиксированного патча, оба из которых выполняются параллельно с аппаратным обеспечением. Компилятор HLSL извлекает параллелизацию в поверхностном шейдере и кодирует ее в байткод, который управляет аппаратным обеспечением.
API для инициализации этапов тесселяции
Мозаика реализована с двумя новыми программируемыми уровнями затенения: затенение тела и затенение предметной области. Эти новые уровни затенения программируются с помощью кода HLSL, определенного в Shading Model 5. Новые целевые объекты затенения — hs_5_0 и ds_5_0. Как и для всех программируемых уровней затенения, аппаратный код извлекается из скомпилированных шейдеров, которые передаются в среду выполнения при конвейеризации шейдеров с помощью таких API, как DSSetShader и HSSetShader. Однако сначала необходимо создать шейдер, используя такие API, как CreateHullShader и CreateDomainShader.
Включите мозаику, создав шейдер поверхности и подключив его к этапу шейдера поверхности (при этом автоматически создается этап мозаики). Чтобы создать окончательные положения вершин в результате преобразований с помощью мозаики, необходимо также создать шейдер домена и подключить его к стадии шейпера домена. После активации мозаичного отображения входные данные должны быть скорректированы на этапе составления входных данных. То есть топология коллектора входных данных должна быть топологией константы патча D3D11_PRIMITIVE_TOPOLOGY, установленной с помощью IASetPrimitiveTopology.
Чтобы отключить оцифровку, установите шейдер поверхности и шейдер поля на НОЛЬ. Ни этап затенения геометрии, ни этап вывода потока не могут считывать контрольные точки вывода оболочки или патча.
Новые топологии для этапа сбора входных данных, которые являются расширением этого перечисления.
Топология устанавливается на этапе захвата входных данных с помощью IASetPrimitiveTopology.
Новые программируемые стадии затенения, естественно, требуют другого состояния для привязки фиксированных буферов, шаблонов и ресурсов затенения к соответствующим стадиям конвейера. Эти новые методы ID3D11Device реализованы для настройки этого состояния.
Обработка пиков является важнейшей частью производительности, поскольку она определяет, как сцена будет выглядеть с точки зрения камеры. В современных играх для создания миров могут использоваться миллионы треугольников, и каждая из этих вершин трансформируется и освещается определенным образом.
Тесселяция
Оцифровка увеличивает количество полигонов в компьютерной модели в любое число раз. Для этого каждый полигон делится на множество новых полигонов, расположенных примерно так же, как исходная поверхность. Этот метод позволяет более детально представить простые трехмерные объекты. Однако это также увеличивает нагрузку на компьютер и в некоторых случаях даже может вызвать небольшие артефакты.
На первый взгляд, мозаичное картирование можно спутать с параллаксным картированием. Однако это совершенно разные эффекты, поскольку мозаичное изображение действительно изменяет геометрическую форму объекта, а не просто имитирует рельеф. Кроме того, его можно применить практически к любому объекту, в то время как параллаксное отображение очень ограничено.
Хотя мозаичное отображение используется в кино с 1980-х годов, в играх оно появилось совсем недавно, особенно когда графические ускорители достигли уровня производительности, необходимого для работы в режиме реального времени.
Для использования в игре технологии тесселяции необходима видеокарта с поддержкой DirectX 11.
Вертикальная синхронизация
V-Sync — это синхронизация игровых изображений с вертикальной частотой обновления экрана. При этом на экране отображается полностью отрендеренный игровой кадр при обновлении экрана. Важно, чтобы следующий кадр (если он уже закончен) также отображался не позже и не раньше того момента, когда заканчивается воспроизведение предыдущего кадра и начинается следующий.
Если частота кадров составляет 60 Гц и видеокарта успевает отрисовать 3D-сцену хотя бы с таким же количеством кадров, то при каждом повторении кадра выводится новое изображение. Другими словами, каждые 16,66 мс пользователь видит полное обновление игровой сцены на экране.
Если активирована вертикальная синхронизация, частота кадров в игре не должна быть выше вертикальной частоты кадров на экране. Если частота кадров ниже этого значения (в нашем случае ниже 60 Гц), во избежание потери производительности необходимо активировать тройную буферизацию, при которой изображения просчитываются заранее и хранятся в трех отдельных буферах, чтобы их можно было чаще отправлять на экран.
Основной целью вертикальной синхронизации является устранение эффекта смещенного изображения, который возникает, когда нижняя часть экрана заполнена изображением, а верхняя часть уже заполнена другим изображением, смещенным относительно предыдущего.
Post-processing
Это общий термин для всех эффектов, применяемых к полностью отрендеренному кадру полностью отрендеренной 3D-сцены (другими словами, 2D-изображения) для улучшения качества конечного изображения. Постобработка выполняется с помощью пиксельных шейдеров и делается только тогда, когда для дополнительных эффектов требуется полная сцена. В отдельности эти методы не могут быть применены к отдельным 3D-объектам без образования артефактов на изображении.
High dynamic range (HDR)
Эффект, часто используемый в игровых сценах с подсветкой. Если одна область экрана слишком яркая, а другая слишком темная, в каждой области теряется много деталей, и она выглядит тусклой. HDR добавляет больше градаций в изображение и делает сцену более детализированной. Его применение обычно требует работы с более широким тональным диапазоном, чем может обеспечить стандартное 24-битное разрешение. Предварительная обработка выполняется при более высоком разрешении (64 или 96 бит), и только на заключительном этапе изображение приводится к 24 битам.
HDR часто используется для создания эффекта корректировки зрения, когда герой в играх выходит из темного туннеля на хорошо освещенную поверхность.
Bloom
Bloom часто используется в сочетании с HDR, а также имеет довольно близкого родственника — Glow, поэтому все три техники часто путают.
Bloom имитирует эффект, возникающий при съемке очень ярких сцен обычными камерами. На полученном изображении яркий свет, кажется, занимает больше места, чем должен, и «забирается» на объекты, хотя он находится позади них. При использовании Bloom могут появиться дополнительные артефакты в виде цветных линий по краям объектов.
Film Grain
Зернистое изображение — это артефакт, который появляется при плохом сигнале на аналоговом телевидении, старых магнитных видеокассетах или фотографиях (особенно цифровых изображениях, сделанных при слабом освещении). Геймеры часто отключают этот эффект, поскольку он скорее искажает изображение, чем улучшает его. Чтобы понять это, вы можете играть в Mass Effect в любом из режимов. Напротив, в некоторых играх ужасов, таких как Silent Hill, шум на экране добавляет атмосферу.
Motion Blur
Размытие движения — это эффект размытия при быстром движении камеры. Его можно успешно использовать, когда сцене нужно набрать темп и скорость, поэтому он особенно популярен в гоночных играх. В шутерах, однако, использование размытия не всегда четко понимается. Правильное использование размытия движения может придать кинематографичность происходящему на экране.
Эффект также может помочь скрыть низкую частоту кадров и сделать игру более плавной.
Ambient Occlusion — это техника, используемая для придания сцене большей фотореалистичности за счет более реалистичного освещения объектов в сцене с учетом других близлежащих объектов с их собственными свойствами поглощения и отражения света.
Основной целью вертикальной синхронизации является устранение эффекта смещенного изображения, который возникает, когда нижняя часть экрана заполнена изображением, а верхняя часть уже заполнена другим изображением, смещенным относительно предыдущего.
Свет, камера, мотор!
Представьте себе следующее: Игрок находится в темной комнате с единственным источником света справа от него. В центре комнаты висит огромный чайник. Возможно, вам понадобится небольшая помощь в этом, поэтому давайте воспользуемся сайтом Real-Time Rendering и посмотрим, как это выглядит:
Помните, что этот объект представляет собой ряд плоских треугольников, соединенных вместе, то есть плоскость каждого треугольника направлена в определенном направлении. Некоторые из них будут направлены в сторону камеры, некоторые в другую сторону, некоторые будут искажены. Свет от источника падает на каждую плоскость и отражается от нее под определенным углом.
В зависимости от того, где отражается свет, цвет и яркость плоскости могут меняться, и все это необходимо рассчитать и учесть, чтобы цвет объекта выглядел правильно.
Сначала нам нужно узнать, куда направлена каждая плоскость, а для этого нам нужен вектор нормали плоскости. Это еще одна стрелка, но в отличие от вектора положения, ее размер не имеет значения (нормальные векторы всегда масштабируются, чтобы иметь длину 1 после вычисления), и она всегда направлена перпендикулярно (под прямым углом) к плоскости.
Перпендикуляр к плоскости любого треугольника вычисляется путем определения векторного произведения двух векторов направления (выше p и q ), которые образуют стороны треугольника. Лучше вычислять их для каждой вершины, чем для треугольника, но поскольку вершин всегда больше, чем треугольников, быстрее вычислять нормали для треугольников.
После того как вы получили нормаль поверхности, можно приступать к рассмотрению источника света и камеры. В 3D-рендеринге могут использоваться различные типы источников света, но в этой статье мы рассмотрим только направленные источники света, такие как проекторы. Подобно плоскости треугольника, проектор и камера направлены в определенном направлении, приблизительно:
Используя вектор источника света и вектор нормали, можно рассчитать угол, под которым свет падает на поверхность (используя отношение между скалярным произведением векторов и произведением их диаметров). Вершины треугольника содержат дополнительную информацию об их цвете и материале. Материал описывает, что происходит со светом, когда он попадает на поверхность.
Гладкая металлическая поверхность отражает почти весь падающий свет под тем углом, под которым он падает, и очень мало изменяет цвет объекта. Шероховатый, матовый материал рассеивает свет менее предсказуемым образом и слегка изменяет цвет. Чтобы учесть это, к пиковым значениям необходимо добавить дополнительные значения:
- Оригинальный базовый цвет
- Атрибут материала Ambient — значение, определяющее, сколько «фонового света» может поглотить и отразить пик.
- Атрибут Diffuse material — еще одно значение, но определяющее «шероховатость» пика, что в свою очередь влияет на количество поглощения и отражения паразитного света.
- Атрибуты отражающего материала — два значения, которые определяют «значение яркости» пика.
Пожалуйста, сэр, мне хочется ещё (треугольников)
Современные графические чипы чрезвычайно мощные и могут выполнять миллионы матрично-векторных вычислений в секунду; они могут легко обрабатывать огромную стопку пиковых значений одновременно. С другой стороны, создание высокодетализированных моделей для рендеринга — очень трудоемкий процесс, и если модель находится на некотором расстоянии от сцены, все детали будут потрачены впустую.
Поэтому нам нужно каким-то образом указать процессору разделить большой прототип, например, один плоский треугольник, на серию меньших треугольников, которые помещаются внутрь оригинала. Этот процесс называется тесселяцией, и графические чипы уже очень хорошо справляются с ним; с годами контроль программистов над этим процессом увеличился.
Чтобы увидеть это на практике, мы будем использовать инструмент Heaven reference движка Unigine, поскольку он позволяет нам применять различные значения тесселяции к моделям, используемым в тесте.
Давайте сначала возьмем эталонную точку и рассмотрим ее без тесселяции. Обратите внимание, что валуны на земле выглядят неестественно — использованная текстура эффективна, но выглядит неправильно. Давайте применим тесселяцию к сцене: Механизм Unigine применяет его только к определенным частям, но разница существенна.
Пол, края зданий и дверь выглядят намного реалистичнее. Мы можем увидеть, как это было достигнуто, запустив процесс снова, но на этот раз со всеми выбранными примитивами (т.е. в режиме каркаса):
Вы можете ясно видеть, почему местность выглядит так странно — она совершенно плоская! Дверь сливается со стенами, а по краям здания только пепелища.
В Direct3D примитивы могут быть разделены на группу более мелких частей (так называемое подразделение) в трехэтапном процессе. Сначала разработчики пишут шейдер корпуса — по сути, этот код создает структуру, называемую геометрическим патчем. Его можно рассматривать как карту, которая указывает редактору, где появятся новые точки и линии в исходном прототипе.
Затем блочный тесселятор в GPU применяет этот патч к примитиву. В конце выполняется шейдер домена, который вычисляет положение всех новых вершин. При необходимости эти данные можно отправить обратно в буфер вершин, чтобы повторить расчеты освещения, но на этот раз с лучшими результатами.
И как это выглядит? Запустите версию сцены с мозаикой в виде проволочного каркаса:
Честно говоря, мы установили тесселяцию на довольно высокий уровень, чтобы сделать процесс более понятным. Какими бы хорошими ни были современные графические чипы, вы не должны делать это в каждой сцене — посмотрите, например, на фонарь у двери.
На изображении с выключенным режимом wireframe было бы трудно найти различия на таком расстоянии, и мы видим, что этот слой тесселяции добавил так много треугольников, что их трудно разделить. Однако при правильном использовании эта функция обработки вершин может создавать фантастические визуальные эффекты, особенно при моделировании столкновений с мягкими телами.
«Железо» этого не выдержит!
Помните, мы говорили, что вершинные шейдеры всегда обрабатывают каждую вершину в сцене? Легко понять, что мозаика может стать здесь серьезной проблемой. Существует множество визуальных эффектов, где необходимо манипулировать различными версиями одного и того же примитива, но не создавать его с нуля, например, волосы, мех, трава и частицы взрыва.
К счастью, специально для таких вещей существует другое затенение — геометрическое затенение. Это более ограниченная версия вершинного затенения, но она может быть применена ко всему примитиву и, в сочетании с мозаичным рендерингом, дает разработчикам больше контроля над большими группами вершин.
3DMark Vantage от UL Benchmark — геометрическое затенение обрабатывает частицы и флаги
Direct3D, как и все современные графические API, позволяет выполнять большое количество вычислений над вершинами. Готовые данные могут быть переданы на следующий этап процесса рендеринга (растеризация), возвращены в пул памяти для повторной обработки или прочитаны процессором для других целей. Как описано в документации Microsoft Direct3D, это может быть сделано в виде потока данных:
Этап вывода потока необязателен, особенно потому, что он может возвращать в цикл рендеринга только целые примитивы (не отдельные вершины), но он полезен для эффектов с сильным присутствием частиц. Тот же трюк можно использовать с изменяемым или динамическим пиковым буфером, но входящие буферы лучше оставить неизменными, так как их открытие для изменения снизит производительность.
Обработка пиков является важнейшей частью производительности, поскольку она определяет, как сцена будет выглядеть с точки зрения камеры. В современных играх для создания миров могут использоваться миллионы треугольников, и каждая из этих вершин трансформируется и освещается определенным образом.
Треугольники. Их миллионы.
Обработка всех этих расчетов и математических вычислений может показаться логистическим кошмаром, но графические процессоры (GPU) и API разработаны с учетом всего этого — представьте себе идеально работающую фабрику, обрабатывающую производственную линию по частям.
Опытные рендереры 3D-игр имеют базовое понимание математики и физики и используют всевозможные трюки и инструменты для оптимизации процесса и сокращения этапа обработки вершин до нескольких миллисекунд. И это только начало создания 3D-изображения — после растеризации идет чрезвычайно сложная обработка пикселей и текстур, прежде чем изображение появится на экране.