Привет всем! Сегодня очень интересная статья о тонкой настройке видеокарты для высокой производительности в компьютерных играх. Согласитесь друзья, что после установки драйвера видеокарты вы один раз открыли «Панель управления Nvidia» и увидев там незнакомые слова: DSR, шейдеры, CUDA, синхроимпульс, SSAA, FXAA и так далее, решили туда больше не лазить. Но тем не менее, разобраться во всём этом можно и даже нужно, ведь от данных настроек напрямую зависит производительность . Существует ошибочное мнение, что всё в этой мудрёной панели настроено правильно по умолчанию, к сожалению это далеко не так и опыты показывают, правильная настройка вознаграждается весомым увеличением кадровой частоты. Так что приготовьтесь, будем разбираться в потоковой оптимизации, анизотропной фильтрации и тройной буферизации. В итоге вы не пожалеете и вас будет ждать награда в виде увеличения FPS в играх.

Настройка видеокарты Nvidia для игр

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

Итак, для того, чтобы попасть в меню управления видеодрайвером, кликайте правой кнопкой мыши по любому месту на рабочем столе и выбирайте в открывшемся меню «Панель управления Nvidia».

После чего, в открывшемся окне переходите во вкладку «Управление параметрами 3D».

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

Итак, первый пункт «CUDA – графические процессоры ». Здесь представлен список видеопроцессоров, один из которых вы можете выбрать, и он будет использоваться приложениями CUDA. CUDA (Compute Unified Device Architecture) – это архитектура параллельных вычислений использующаяся всеми современными графическими процессорами для увеличения вычислительной производительности.

Следующий пункт «DSR - Плавность » мы пропускаем, потому что он является частью настройки пункта "DSR - Степень”, а его в свою очередь нужно отключать и сейчас я объясню почему.

DSR (Dynamic Super Resolution) – технология позволяющая рассчитывать картинку в играх в более высоком разрешении, а затем масштабирующая полученный результат до разрешения вашего монитора. Для того чтобы вы поняли для чего эта технология вообще была придумана и почему она не нужна нам для получения максимальной производительности, я попробую привести пример. Наверняка вы часто замечали в играх, что мелкие детали, такие как трава и листва очень часто мерцают или рябят при движении. Связано это с тем, что, чем меньше разрешение, тем меньше число точек выборки для отображения мелких деталей. Технология DSR позволяет это исправить за счет увеличения числа точек (чем больше разрешение, тем больше число точек выборки). Надеюсь, так будет понятно. В условиях максимальной производительности эта технология нам не интересна так, как затрачивает довольно много системных ресурсов. Ну а с отключенной технологией DSR, настройка плавности, о которой я писал чуть выше, становится невозможна. В общем, отключаем и идем дальше.

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

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

Заранее подготовленные кадры виртуальной реальности . Функция для очков виртуальной реальности нам не интересна, так как VR еще далека до повседневного использования обычных геймеров. Оставляем по умолчанию – использовать настройку 3D приложения.

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

Кэширование шейдеров . При включении данной функции центральный процессор сохраняет скомпилированные для графического процессора шейдеры на диск. Если этот шейдер понадобится еще раз, то GPU возьмет его прямо с диска, не заставляя CPU проводить повторную компиляцию данного шейдера. Не трудно догадаться, что если отключить этот параметр, то производительность упадет.

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

Многокадровое сглаживание (MFAA) . Одна из технологий сглаживания используемая для устранения "зубчатости” на краях изображений. Любая технология сглаживания (SSAA, FXAA) очень требовательна к графическому процессору (вопрос лишь в степени прожорливости). Выключаем.

Потоковая оптимизация . Благодаря включению этой функции приложение может задействовать сразу несколько ЦП. В случае, если старое приложение работает некорректно попробуй поставить режим "Авто” или же вовсе отключить эту функцию.

Режим управления электропитанием . Возможно два варианта – адаптивный режим и режим максимальной производительности. Во время адаптивного режима энергопотребление зависит напрямую от степени загрузки ГП. Этот режим в основном нужен для снижения энергопотребления. Во время режима максимальной производительности, как не трудно догадаться, поддерживается максимально возможный уровень производительности и энергопотребления независимо от степени загрузки ГП. Ставим второй.

Сглаживание – FXAA, Сглаживание – гамма-коррекция, Сглаживание – параметры, Сглаживание – прозрачность, Сглаживание - режим . Про сглаживание я уже писал чуть выше. Выключаем всё.

Тройная буферизация . Разновидность двойной буферизации; метод вывода изображения, позволяющий избежать или уменьшить количество артефактов (искажение изображения). Если говорить простыми словами, то увеличивает производительность. НО! Работает эта штука только в паре с вертикальной синхронизацией, которую, как вы помните, мы до этого отключили. Поэтому этот параметр тоже отключаем, он для нас бесполезен.

Небольшой обзор по типах GPU ускорения в программе композитинга Adobe After Effects, ранее можно было ознакомиться с однотипными статьями: тестирование движка Ray-traced 3D Renderer и OptiX 3, тестируем видеокарты от AMD и nVidia штатным OpenGL эффектом Cartoon, Adobe After Effects CC и интегрированная графика Intel HD Graphics 4000, Ray-traced 3D Renderer и OptiX 3, плагин Video Copilot Element 3D и OpenGL производительность видеокарт, влияние разгона GPU и видеопамяти на видеокарте на производительность , использование различных типов GPU ускорения в программе Adobe After Effects.
OpenGL - набор стандартов для высокопроизводительной обработки 2D- и 3D-графики с помощью устройства обработки графических данных (графического процессора) для различных приложений. OpenGL обеспечивает быстрый рендеринг для предпросмотра (режим Fast Draft). After Effects также обеспечивает ускорение для отображения некоторых элементов интерфейса и 3D-рендеринга с трассировкой лучей. В отличие от предыдущих версий After Effects графическому процессору отводится главная роль.
OpenGL ускоряет рабочий процесс с помощью более быстрого графического конвейера. Один из процессов, выполнявшихся медленнее в предыдущих версиях After Effects, - это процесс переноса пикселей на экран, который называется передачей блоков или блитированием. Теперь графический процессор обрабатывает эту операцию намного эффективнее (благодаря процессу под названием «Буфер замены OpenGL»).
OpenGL поддерживает прорисовку элементов интерфейса, в частности, композиции, видеоряда и панелей слоя. OpenGL также управляет другими функциями прорисовки, такими как сетки, направляющие, линейки и ограничительные рамки. Эта функция также называется «Аппаратный BlitPipe».
Чтобы включить поддержку OpenGL для прорисовки элементов интерфейса, установите флажок Панели «Композиция с аппаратным ускорением», «Слой» и «Видеоряд» в меню Правка > Установки > Отображение (Windows) или в меню After Effects > Установки > Отображение (Mac OS).
Сведения о графическом процессоре и OpenGL можно получить в диалоговом окне GPU Information (Данные ГП). Чтобы открыть это диалоговое окно, выберите Edit > Preferences > Previews / Правка > Установки > Предпросмотр (Windows) или After Effects > Preferences > Previews / After Effects > Установки > Предпросмотр (Mac OS).

Предпросмотр">

Нажмите кнопку GPU Information (Данные ГП), чтобы открыть диалоговое окно с информацией о графическом процессоре. В этом диалоговом окне представлены сведения о возможностях OpenGL для установленного графического процессора. Эти сведения помогут вам определить уровни поддержки функций для вашего графического процессора. Также в этом окне можно узнать, доступна ли функция CUDA на вашем графическом процессоре, а также версию установленной функции.


*Примечание: связанные с OpenGL флажки были удалены из меню Preferences > Previews (Установки > Предпросмотр), поскольку предыдущий модуль рендеринга OpenGL был удален.
Первоначальный модуль рендеринга OpenGL был заменен режимом быстрого черновика. Чтобы включить быстрый черновик, нажмите кнопку Fast Previews (Быстрый предпросмотр) на панели композиции и выберите Fast Draft (Быстрый черновик). Режим быстрого черновика вызывает небольшие визуальные изменения на панели композиции, которые делают быстрый предпросмотр более удобным. Быстрый черновик полезен для настройки и предпросмотра композиции для последующего 3D-рендеринга с трассировкой лучей.

*Примечание: если имеющийся графический процессор не поддерживается или установлен старый драйвер, 3D-рендеринг с трассировкой лучей выполняется ЦП с использованием всех физических ядер. При наличии конфигурации, поддерживающей графический процессор в консольной среде (например, рендер-ферма), можно выполнить 3D-рендеринг с трассировкой лучей на ЦП, задав параметр Ray-tracing (Трассировка лучей) в диалоговом окне GPU Information (Данные ГП). Рендеринг, выполненный ЦП, соответствует рендерингу, выполненному графическим процессором.
*Примечание: кнопка «Информация об OpenGL» теперь называется кнопкой GPU Information (Данные ГП).
Требования к оборудованию для OpenGL, графического процессора и After Effects . При работе с композициями 3D-рендеринга с трассировкой лучей важно, чтобы на компьютере было установлено соответствующее оборудование. Для работы с 3D-рендерингом с трассировкой лучей и ускорением графического процессора требуется видеокарта NVIDIA, которая имеет встроенную технологию CUDA.
Требования для функций графического процессора/OpenGL (3D-рендеринг с трассировкой лучей и быстрый черновик) . Ниже перечислены функции After Effects на основе графического процессора и OpenGL, требующие, чтобы функции были классифицированы, исходя из возможностей вашего графического процессора:
- Модуль 3D-рендеринга с трассировкой лучей.
- Рендеринг с помощью графического процессора.
- Режим предпросмотра «Быстрый черновик».
- Быстрое блитирование на экран (OpenGL SwapBuffer).
- Параметр «По возможности использовать OpenGL» эффекта мультипликации.
- Установка «Панели "Композиция с аппаратным ускорением", "Слой" и "Видеоряд"».
Уровни поддержки функций. Существует 3 класса или уровня поддержки - от уровня с минимальными требованиям до уровня с максимальными требованиями:
Уровень 1 . Для OpenGL SwapBuffer: на этом уровне требуется графический процессор с поддержкой OpenGL 1.5 (или выше) с моделью построения теней 3.0 (или выше). Поддерживается большинство видеокарт ATI и NVIDIA и чипсеты Intel HD Graphics 3000 (доступны на MacBook Air, Mac Mini, в различных компьютерах под управлением ОС Windows и т. д.) и 4000 (только для Windows). Если ваш графический процессор не удовлетворяет этим требованиям, происходит блитирование с использованием программного обеспечения ОС, например, 5.5. В версиях After Effects CS и выше, предусмотрено улучшение блитирования с использованием программного обеспечения.
Уровень 2 . Для режима быстрого предпросмотра черновика, функции «Аппаратного BlitPipe» и мультипликационного ускорения графического процессора: включает функции уровня 1. На этом уровне требуется OpenGL 2.0 или выше (с Shader Model 4.0 или выше, для Windows), 256 МБ или больше памяти текстур. Большинство видеокарт ATI и NVIDIA, выпущенные за последние 5 лет, и чипсеты Intel HD Graphics 3000/4000, поддерживают этот уровень. Если ваш графический процессор не удовлетворяет этим требования, следующие функции будут отключены:
- Режим быстрого черновика.
- Установка «Аппаратное ускорение панелей композиции, слоя и видеоряда».
- Параметр «По возможности использовать OpenGL» эффекта мультипликации (эффект мультипликации на ЦПУ).
Уровень 3 . Для 3D-рендеринга с трассировкой лучей на графическом процессоре: включает функции уровней 1 и 2 (для компьютеров с подключенными мониторами). На этом уровне требуется поддерживаемый графический процессор NVIDIA и 512 МБ или больше памяти текстур. С актуальным списком поддерживаемых графических процессоров можно ознакомиться здесь:
https://helpx.adobe.com/ru/after-effects/system-requirements.html
Установка драйверов графического процессора . Перед началом работы с After Effects и функциями CUDA установите последнюю версию видеодрайвера для вашего графического процессора NVIDIA:
Windows: установите последнюю сертифицированную WHQL версию драйвера для своего графического процессора:
http://www.nvidia.ru/Download/index.aspx?lang=ru
Mac OS: установите драйвер NVIDIA CUDA (версии 4.0.50 или более поздней):
http://www.nvidia.ru/object/mac-driver-archive-ru.html
*Примечание: если имеющийся графический процессор не поддерживается или установлен старый драйвер, 3D-рендеринг с трассировкой лучей выполняется ЦП с использованием всех физических ядер. При наличии конфигурации, поддерживающей графический процессор в консольной среде (например, рендер-ферма), можно выполнить 3D-рендеринг композиций с трассировкой лучей с помощью ЦП, задав параметр Ray-tracing (Трассировка лучей) в диалоговом окне GPU Information (Данные ГП) (в установках предпросмотра). Рендеринг, выполненный ЦП, соответствует рендерингу, выполненному графическим процессором.
Про результаты тестирования видеокарт в различных режимах в программе After Effects.

Anisotropic filtering (Анизотропная фильтрация) - ставим значение Application-controlled (Управление от приложения). Проверьте значение в самом приложении. Желательно не более 8х.

Анизотропная фильтрация нужна для повышение четкости изображения 3д объектов относительно камеры (персонажа, машины и т.д). Выставляем значение Application-controlled (Управление от приложения) - это означает, что приложение будет автоматически выбирать нужный режим анизотропной фильтрации или же фильтрация управляется в самом приложении (программе, игре), чем выше значение фильтрации, тем четче будет изображение.

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

Antialising - Gamma correction (Сглаживание - гамма- коррекция) - ставим значение On (Вкл)

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

Antialising Mode (Сглаживание - режим) - ставим значение Application-controlled (Управление от приложения)

Очень важный параметр, включения режима сглаживания дает возможность избавления от эффекта лесенок на трехмерном объекте. Выставляем значение Application-controlled (Управление от приложения). - это означает что приложение будет автоматически выбирать нужный режим сглаживания или же сглаживание будет управляется в самом приложении (программе, игре), чем выше значение сглаживание, тем меньше эффекта лесенок будет изображение, тем ниже будет производительность приложения, тем меньше будет кадров в секунду.
Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), при этом вам станет доступен пункт Antialising Setting (Сглаживание - параметры), где вы сможете вручную задать уровень сглаживания от 2х до 16х. Даже если приложение не поддерживает сглаживание, это будет делать за него сам драйвер видеокарты.

Anti-aliasing Setting (Сглаживание - параметры) - автоматическое значение Application-controlled (Управление от приложения). Проверьте значение в самом приложении. Желательно не более 4х.

При включении предыдущего пункта Anti-aliasing Mode (Сглаживание - параметры) - Application-controlled (Управление от приложения) текущее значение будет неактивно, активно лишь в том случае если значение Anti-aliasing Mode (Сглаживание - параметры) - Enhance the application setting) (Замещение настроек приложения или увеличение настроек приложения).
Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), получив более высокое качество, если приложение не поддерживает или некорректно обрабатывает Anti-aliasing (сглаживание). Читайте пункт выше.

Anti-aliasing - Transparency (Сглаживание - прозрачность) ставим значение Off (Выкл)

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

Conformant texture clamp (Соответствующая привязка текстуры) - параметр Use hardware (Используются аппаратные средства)

Как видно из названия выбор метода текстурирования, конечно же оптимальным в качестве и производительности выбираем на уровни железа - Use hardware (Используются аппаратные средства) - что естественно производительней чем софтвенный (программный) режим.

Error reporting (Сообщения об ошибках) - значение Off (Выкл)

Бессмысленный параметры, включение которого дает возможность при случае ошибки драйвера отправлять все данные о ошибке и конфигурацию ПК разработчикам NVidia.
(Один из бессмысленных параметров, выключение которого позволит сделать безлимитный доступ драйверу к коду приложения при обработке графики, естественно все ограничения снимаем значением Off (Выкл))

mipmaps (Включение масштабируемых текстур) - значение None (Нет)

Устаревшие значение работы 3д приложений. Отключаем так как приложения уже не используют данный метод, значение - None (Нет).

Maximum pre-render frames (Максимальное количество заранее подготовленных кадров) - значение 1 или 2 (выбирайте в зависимости от мощности вашего ЦП)

Максимально количество кадров после первого, которые может подготовить ЦП, для дальнейшей обработки ГП видеокарты. При одном кадре, от 1 до 8 кадров будут подготавливаться на перед, загружаться в память, нагружая ваш ЦП во время подготовки этих кадров. Ставим значение 1 или 2, это позволит капитально увеличить скорость обработки графики в реальном времени. Кол-во кадров выберете сами, но все же рекомендую не более 3. Ориентируйтесь исходя из мощность вашего ЦП (центральный процессор, не путайте с ГП - графическим процессором).

Multi-display/mixed - GPU acceleration (Ускорение нескольких дисплеев/смешанных ГП)- значение Single display performance mode (Режим однодисплейной производительности)

Проще говоря, если выставлен режим Multi display performance mode (Режим многодисплейной производительности) - то графический процессор (ГП) вашей видеокарты отрисовывает изображение для обоих портов видеокарты. А если выставлен режим Single display performance mode (Режим однодисплейной производительности), то сигнал будет идти только на один из портов.
Так что если у вас одна видеокарта и один монитор, то ставьте в обязательном порядке Single display performance mode (Режим однодисплейной производительности).
Заметьте, что когда вы установили новые драйвера на видеокарту, по умолчанию стоит режим Multi display performance mode (Режим многодисплейной производительности) это означает,что будь у вас два монитора, то подключив его к второму видеовыходу на него тоже бы шел рендеринг изображения. Теряется производительность где то на 5-15%. В общем режим Single display performance mode (Режим однодисплейной производительности) повышает производительность за счет рендеринга на один видеовыход).

Texture filtering - Anisotropic sample optimization (Фильтрация Текстур - анизотропная оптимизация по выборке) - значение Off (Выкл)

Фильтрация текстур - Анизотропная оптимизация, данный параметр выставляется значением Off, так как данный параметр увеличивает производительность в 3D приложениях за счет ухудшения конечной картинки при рендеринге видеокартой. Но так как мы стремимся к скорости без потери качества, то нам этот параметр не нужен. (Если в параметре Texture filtering (Фильтрация текстур - качество) выставлено - Hight quality (Высокое качество), то данный параметр будет неактивен, выключен.)

Texture filtering - Negative LOD bias (Фильтрация текстур - отрицательное отклонение УД) - значение Clamp (Привязка)

Фильтрация текстур с использованием негатива с масштабируемым уровнем детализации, выставляем значение Clamp (Привязка), что позволит оптимизировать текстурные процедуры путем привязки. Это позволит получить дополнительные 2-3 ФПС в производительности рендеринга, без потери качества. Увеличивает производительности в 3д приложениях.

Texture filtering (Фильтрация текстур - качество) - значение Quality (Качество) или Hight quality (Высокое качество). (Выбирайте в зависимости от мощности вашей видеокарты)

Фильтрация текстур, позволяет улучшить качество картинки, четкость изображения без понижения производительности в рендеринге, соответственно ставим значение Hight quality (Высокое качество). На производительность практически не влияет.

Texture filtering - Trilinear optimization (Фильтрация текстур - трилинейная оптимизация) - значение Off (Выкл)

Фильтрация текстур - трилинейная оптимизация, данный параметр выставляется значением Off, если параметр Texture filtering - Quality (Фильтрация текстур - качество) стоит на значении High quality (Высокое качество), то данный параметр будет неактивен.
О параметре Texture filtering - Trilinear optimization (Фильтрация текстур - трилинейная оптимизация) хочу отметить, что он увеличивает производительность в 3д приложениях за счет ухудшения конечной картинки при рендеринге видеокартой. Но так как мы стремимся к скорости без потери качества, то нам этот параметр не нужен, к тому же Trilinear filtering (Трилинейная фильтрация) намного старше и у неё есть свои минусы, так же как и у двулинейной (билинейной) фильтрации. Тем более Anisotropic filtering (Анизотропная фильтрация) "практически" включает в себя оба этих метода фильтрации текстур с некоторой доработкой.

Threaded optimization (Потоковая оптимизация) - значение On (Вкл). (Включайте только если у вас многоядерный процессор, если нет, поставьте "Авто")

Оптимизация драйвера видеокарты под многоядерные процессоры, лакомый кусочек для обладателей 2х - 4х ядерных процессоров. По умолчание значение стоит Auto (Авто), но судя по проведенным тестам в приложениях автоматически выставлялось Off (Выкл), но так как мы стремимся увеличить производительность, то выставляем значение On (Вкл). Увеличивает производительности в 3д приложениях.

Triple buffering (Тройная буферизация) - значение Off (Выкл)

Тройная буферизация экрана, буферизирует несколько кадров при вертикальной синхронизации, что позволяет более плавно сгладить переход кадров, тем самым снижает производительность в 3д приложениях. Ставим значение Off (Выкл), тем самым отключая ненужную буферизацию. На производительность влияет негативно.

Vertical sync (Вертикальный синхроимпульс - значение Force off (Отключить)

Вертикальная синхронизация кадров, через вертикальный синхроимпульс синхронизируется количество кадров в секунду с частотой обновления вашего монитора, тем самым убирая некий эффект "разрыва картинки" (на экране это будет выглядеть, например, при резком повороте камеры, будто верхняя часть экрана чуть уехала в сторону, по отношению к нижней), при быстрой смене кадров. При этом, за частую сильно падает FPS (кол-во кадров в секунду), оно не столь значительно падает, только если у вас монитор обновляется с частотой выше 100-120 Гц в секунду, но даже при такой частоте все равно FPS снижается на 10-15%. Ставим значение Off (Выкл), тем самым отключая ненужную вертикальную синхронизацию. На производительность влияет негативно.

Ambient occlusion - Значение "Выкл"

Ambient occlusion модель затенения, используемая в трёхмерной графике и позволяющая добавить реалистичности изображению за счёт вычисления интенсивности света, доходящего до точки поверхности.
Ambient occlusion чаще всего вычисляется путём построения лучей, исходящих из точки поверхности во всех направлениях, с последующей их проверкой на пересечение с другими объектами.
Этот процесс очень прилично нагружает видеокарту , так что смотрите сами, если видеокарта мощная, можете включить. А если нет, то лучше выключить.
В целом же, на мой взгляд, не стоит этот эффект того, что поедает =) Особой разницы вы все равно не увидите, она есть, но минимальна и заметна только, если внимательно присматриваться и знать, что искать =) 02Окт

Что такое Рендер (Рендеринг)

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

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

слова «Рендер».

Слово Рендер (Рендеринг) — это англицизм, который зачастую переводится на русский язык словом “Визуализация ”.

Что такое Рендеринг в 3D?

Чаще всего, когда мы говорим о рендере, то имеем в виду рендеринг в 3D графике. Сразу стоит отметить, что на самом деле в 3D рендере нету трех измерений как таковых, которые мы зачастую можем увидеть в кинотеатре надев специальные очки. Приставка “3D” в название скорее говорит нам о способе создание рендера, который и использует 3-х мерные объекты, созданные в компьютерных программах для 3D моделирования. Проще говоря, в итоге мы все равно получаем 2D изображение или их последовательность (видео) которые создавались (рендерелись) на основе 3-х мерной модели или сцены.

Рендеринг — это один из самых сложных в техническом плане этапов в работе с 3D графикой. Чтоб объяснить эту операцию простым языком, можно привести аналогию с работами фотографов. Для того, чтоб фотография предстала во всей красе, фотографу нужно пройти через некоторые технические этапы, например, проявление пленки или печать на принтере. Примерно такими же техническими этапами и обременены 3d художники, которые для создания итогового изображения проходят этап настройки рендера и сам процесс рендеринга.

Построение изображения.

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

Основные типы рендеринга:

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

Что такое Рендеринг в реальном времени?

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

Поскольку ключевым фактором в таком типе рендеринга есть интерактивность со стороны пользователя, то изображение приходится просчитывать без задержек и практически в реальном времени, так как невозможно точно предсказать поведение игрока и то, как он будет взаимодействовать с игровой или с интерактивной сценой. Для того, чтоб интерактивная сцена или игра работала плавно без рывков и медлительности, 3D движку приходится рендерить изображение со скоростью не менее 20-25 кадров в секунду. Если скорость рендера будет ниже 20 кадров, то пользователь будет чувствовать дискомфорт от сцены наблюдая рывки и замедленные движения.

Большую роль в создание плавного рендера в играх и интерактивных сценах играет процесс оптимизации. Для того, чтоб добиться желаемой скорости рендера, разработчики применяют разные уловки для снижения нагрузки на рендер движок, пытаясь снизить вынужденное количество просчетов. Сюда входит снижение качества 3д моделей и текстур, а также запись некоторой световой и рельефной информации в заранее запеченные текстурные карты. Также стоит отметить, что основная часть нагрузки при просчете рендера в реальном времени ложиться на специализированное графическое оборудование (видеокарту -GPU), что позволяет снизить нагрузку с центрального процессора (ЦП) и освободить его вычислительные мощности для других задач.

Что такое Предварительный рендер?

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

В отличие от Рендера в реальном времени, где основная нагрузка приходилась на графические карты(GPU) В предварительном рендере нагрузка ложится на центральный процессор(ЦП) а скорость рендера зависит от количества ядер, многопоточности и производительности процессора.

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

Программы для рендеринга.

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

Как правило, рендер движки являются встроенными в крупные 3D программы для работы с графикой и имеют огромный потенциал. Среди наиболее популярных 3D программ (пакетов) есть такой софт как:

  • 3ds Max;
  • Maya;
  • Blender;
  • Cinema 4d и др.

Многие из этих 3D пакетов имеют уже идущие в комплекте рендер движки. К примеру, рендер-движок Mental Ray присутствует в пакете 3Ds Max. Также, практически любой популярный рендер-движок, можно подключить к большинству известных 3d пакетов. Среди популярных рендер движков есть такие как:

  • V-ray;
  • Mental ray;
  • Corona renderer и др.

Хотелось бы отметить, что хоть и процесс рендеринга имеет очень сложные математические просчеты, разработчики программ для 3D-рендеринга всячески пытаются избавить 3D-художников от работы со сложной математикой лежащей в основе рендер-программы. Они пытаются предоставить условно-простые для понимания параметрические настройки рендера, также материальные и осветительные наборы и библиотеки.

Многие рендер-движки сыскали славу в определенных сферах работы с 3д графикой. Так, например, “V-ray” имеет большую популярность у архитектурных визуализаторов, из-за наличия большого количества материалов для архитектурной визуализации и в целом, хорошего качества рендера.

Методы визуализации.

Большинство рендер движков использует три основных метода вычисления. Каждый из них имеет как свои преимущества, так и недостатки, но все три метода имеют право на своё применение в определенных ситуациях.

1. Scanline (сканлайн).

Сканлайн рендер — выбор тех, кто приоритет отдаст скорости, а не качеству. Именно за счет своей скорости, данный тип рендера зачастую используется в видеоиграх и интерактивных сценах, а также во вьюпортах различных 3D пакетов. При наличие современного видеоадаптера, данный тип рендера может выдавать стабильную и плавную картинку в реальном времени с частотой от 30 кадров в секунду и выше.

Алгоритм работы:

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

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

2. Raytrace (рейтрейс).

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

К сожалению, в угоду качеству, данный алгоритм рендеринга является очень медлительным и пока что не может использоваться в риал-тайм графике.

Алгоритм работы:

Идея Raytrace алгоритма заключается в том, что для каждого пикселя на условном экране, от камеры прослеживается один или несколько лучей до ближайшего трехмерного объекта. Затем луч света проходит определенное количество отскоков, в которые может входить отражения или преломления в зависимости от материалов сцены. Цвет каждого пикселя вычисляется алгоритмически на основе взаимодействия светового луча с объектами в его трассируемом пути.

Метод Raycasting.

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

Нередко бывает, что «метод трассировки лучей» (raytrace) путают с методом «бросания лучей» (raycasting). Но на самом деле, «raycasting» (метод бросания луча) фактически является упрощенным «raytrace» методом, в котором отсутствует дальнейшая обработка отбившихся или заломленных лучей, а просчитывается только первая поверхность на пути луча.

3. Radiosity.

Вместо «метода трассировки лучей», в данном методе просчет работает независимо от камеры и является объектно-ориентированным в отличие от метода «пиксель по пикселю». Основная функция “radiosity” заключается в том, чтобы более точно имитировать цвет поверхности путем учета непрямого освещения (отскок рассеянного света).

Преимуществами «radiosity» являются мягкие градуированные тени и цветовые отражения на объекте, идущие от соседних объектов с ярким окрасом.

Достаточно популярна практика использования метода Radiosity и Raytrace вместе для достижения максимально впечатляющих и фотореалистичных рендеров.

Что такое Рендеринг видео?

Иногда, выражение «рендерить» используют не только в работе с компьютерной 3D графикой, но и при работе с видеофайлами. Процесс рендеринга видео начинается тогда, когда пользователь видеоредактора закончил работу над видеофайлом, выставил все нужные ему параметры, звуковые дорожки и визуальные эффекты. По сути, все что осталось, это соединить все проделанное в один видеофайл. Этот процесс можно сравнить с работой программиста, когда он написал код, после чего все что осталось, это скомпилировать весь код в работающую программу.

Как и у 3D дизайнера, так и у пользователя видеоредактора, процесс рендеринга идет автоматически и без участия пользователя. Все что требуется, это задать некоторые параметры перед стартом.

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

Категории: , / / от

Переводим... Перевести Китайский (упрощенное письмо) Китайский (традиционное письмо) Английский Французский Немецкий Итальянский Португальский Русский Испанский Турецкий

К сожалению, мы не можем перевести эту информацию прямо сейчас - пожалуйста, повторите попытку позже.

Введение

В этом примере демонстрируется создание текстуры в OpenGL* 4.3, подчиненная область которой обновляется ядром С OpenCL™, выполняющимся на ГП Intel® Processor Graphics под управлением Microsoft Windows*. Одним из назначений такой технологии могут быть приложения компьютерного зрения в реальном времени, где необходимо запускать детектор определенных элементов изображения в OpenCL, но в реальном времени выводить готовое изображение с четко отмеченными детекторами на экран. В этом случае нужен доступ ко всем возможностям языка С ядра OpenCL, а также возможности рендеринга API OpenGL для совместимости с существующим конвейером рендеринга. Еще один пример использования такой технологии: если динамически создаваемые в OpenCL процедурные текстуры используются для рендеринга трехмерных объектов на сцене. И наконец, представьте себе постобработку изображения в OpenCL после рендеринга сцены с помощью 3D конвейера. Это может быть полезно для преобразования цветов, изменения разрешения или выполнения сжатия в определенных сценариях.

В этом примере показано обновление в OpenCL текстуры, созданной в OpenGL. Такие же рекомендации применяются для обновления объекта вертексного буфера или внеэкранного кадрового буфера, который может использоваться в автономном конвейере обработки изображений.

Расширение общего доступа к поверхностям определяется в спецификации расширений OpenCL строкой cl _ khr _ gl _ sharing . Мы также используем расширение cl _ khr _ gl _ event , которое поддерживается ГП Intel.

Мотивация

Назначение этого учебного руководства в том, чтобы ознакомить читателей с возможностью создания поверхностей, общих для OpenCL и OpenGL. Также вы сможете лучше понять работу API, соображения производительности различных путей создания текстур в API OpenGL, в частности на ГП Intel, а также разницу между таким подходом и использованием дискретных ГП.

Основной принцип

Для создания текстур OpenGL и доступа к ним как к изображениям OpenCL с наивысшей производительностью ГП Intel не следует создавать объект пиксельного буфера (РВО) OpenGL. Объекты PBO не обладают преимуществами производительности на ГП Intel. Кроме того, они создают по крайней мере одну дополнительную линейную копию данных, которые затем копируются в формат текстур, используемый в ГП для рендеринга. Во-вторых, вместо использования glFinish () для синхронизации между OpenCL и OpenGL мы можем использовать механизм неявной синхронизации, поскольку ГП Intel поддерживает расширение cl _ khr _ gl _ event .

ГП Intel® с общей физической памятью

ГП Intel® и ЦП вместе используют общую память. Их взаимоотношение показано на рисунке 1. Существует несколько архитектурных механизмов (не показанных на этом рисунке), расширяющих возможности подсистемы памяти. Например, для повышения производительности подсистемы памяти применяются иерархии кэша, сэмплеры, элементарные операции, очереди чтения и записи.

Рисунок 1. Взаимоотношения между ЦП, ГП Intel ® и основной памятью. Обратите внимание, что ЦП и ГП используют общий пул памяти (в отличие от дискретных ГП с собственной выделенной памятью, управление которой осуществляет драйвер)

Почему не следует использовать объекты пиксельного буфера (РВО) с ГП Intel

«Основное преимущество использования объекта буфера для промежуточного хранения данных текстуры состоит в том, что передача из объекта буфера в текстуру не должна обязательно происходить немедленно, если она происходит до момента, когда данные требуются шейдеру. Это позволяет осуществлять передачу параллельно с выполнением приложения. Если же данные находятся в памяти приложения, то семантика glTexSubImage 2 D () требует, чтобы перед возвратом функции была создана копия данных , благодаря чему исключается параллельная передача. Преимущество такого подхода состоит в том, что приложение может свободно изменять данные, переданные в функцию, сразу после возврата функции».

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

Использование объектов PBO на самом деле приводит к снижению производительности на устройствах, где используется общая физическая память. Во-первых, объект РВО - это дополнительная промежуточная область, что означает увеличение объема памяти, потребляемого приложением. Во-вторых, данные в РВО хранятся в линейном виде, а если данные требуются в сегментированном виде, как, например, в текстурах OpenGL или в изображениях OpenCL, то приходится преобразовывать данные в нужный формат. И наконец, копирование между двумя API занимает определенное время, что также отрицательно сказывается на производительности приложения.

В случае общего доступа с дискретным ГП использование объектов РВО вполне целесообразно: можно запустить передачу DMA, работающую асинхронно по отношению к ЦП. Без РВО семантика OpenGL требует синхронной записи и дожидается возвращения результата, что также снижает производительность. В нашем случае нет передачи данных из ЦП в подсистему памяти ГП.

В каких случаях можно использовать РВО при общем доступе к поверхностям?

Существуют сценарии, когда имеет смысл применять объекты РВО. Например, если не существует подходящего формата поверхностей, совместимого с OpenGL и OpenCL согласно таблице 9.4 в спецификации расширений OpenCL. В этом случае можно создать РВО и предоставить к нему общий доступ для API, связанных с общим доступом к буферу. Тем не менее старайтесь избегать таких сценариев, чтобы не допустить снижения производительности, о котором было сказано выше. Если это необходимо, см. пример Максима Шевцова, ссылка на который приводится в разделе справочных материалов.

Синхронизация между OpenCL™ и OpenGL*

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

«Перед вызовом объектов clEnqueueAcquireGLObjects приложение должно убедиться в завершении всех отложенных операций GL , располагающих доступом к объектам, указанным в mem _ objects . Чтобы сделать это с сохранением переносимости, можно выполнить и дождаться завершения команды glFinish для всех контекстов GL с отложенными ссылками на эти объекты. В разных реализациях могут быть доступны более эффективные методы синхронизации. Например, на некоторых платформах может оказаться достаточно вызвать glFlush , или же синхронизация может быть неявной внутри потока, или могут быть поддерживаемые данным поставщиком расширения, позволяющие разграничивать поток команд GL и дожидаться завершения каждой части в очереди команд CL . Обратите внимание, что в данный момент единственным методом синхронизации, поддерживающим перенос между различными реализациями OpenGL , является glFinish ».

Для наибольшей переносимости, согласно спецификации, нужно вызывать glFinish () , но это блокирующий вызов! На ГП Intel будет эффективнее использовать неявную синхронизацию или объекты синхронизации между OpenCL и OpenGL с расширением cl _ khr _ gl _ events . Подробнее это будет описано ниже. Использование неявной синхронизации не является обязательным. В образце кода содержатся закомментированные фрагменты, которые можно задействовать, если нужно использовать неявную синхронизацию.

Обзор общего доступа к поверхностям для OpenCL и OpenGL

Сначала опишем этапы, необходимые для поддержки общего доступа к поверхностям при инициализации, выполнении и завершении работы. Затем более подробно опишем API и синтаксис языка. И наконец, мы расскажем, как можно развить эти идеи, чтобы охватить другие форматы текстур, выходящие за рамки данного примера. Мы используем общедоступную библиотеку freeglut для управления окнами, а также библиотеку glew . Использование этих библиотек является стандартной практикой в образцах приложений OpenGL, поэтому мы не будем описывать их подробнее.

Инициализация

  1. OpenCL:
    1. Создайте контекст, передающий соответствующие параметры устройства.
    2. Создайте очередь на устройстве и контекст, поддерживающий обмен данными между OpenGL и OpenCL.
  2. OpenGL: Создайте текстуру OpenGL, доступ к которой нужно предоставить для OpenCL.
  3. OpenCL: С помощью дескриптора OpenGL, созданного на шаге 2, создайте общую поверхность посредством расширения OpenCL.

Шаги 1 и 2 можно поменять местами. Шаг 3 должен следовать за шагами 1 и 2.

Запись на общую поверхность в OpenCL

  1. Заблокируйте поверхность для монопольного доступа OpenCL.
  2. Запишите на эту поверхность через ядро C OpenCL. При работе с данными текстур необходимо использовать функции чтения или записи изображения и соответствующим образом передавать изображение.
  3. Разблокируйте поверхность, чтобы предоставить OpenGL доступ к ней на чтение или запись.

Шаги 1, 2 и 3 должны следовать в указанном порядке.

Цикл

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

Завершение работы

  1. Очистка состояния OpenCL
  2. Очистка состояния OpenGL

Подробные сведения об общем доступе к поверхностям OpenGL и OpenCL

В этом разделе приводятся подробные сведения об этапах, описанных в предыдущем разделе.

Инициализация

  1. OpenCL:
    1. Выдайте запрос, чтобы определить, поддерживаются ли расширения; завершение и выход, если не поддерживаются.

      Не все реализации OpenCL поддерживают общий доступ к поверхностям OpenCL и OpenGL, поэтому сначала нужно определить, есть ли вообще в системе нужное расширение. Мы последовательно перебираем платформы, чтобы найти строку расширения для платформы, поддерживающей общий доступ к поверхностям. Внимательное изучение спецификации показывает, что это расширение платформы, а не устройства. Затем мы создаем контекст, который нужно будет опросить, чтобы определить, какие из наших устройств в контексте поддерживают общий доступ к контексту OpenGL.

      Этот пример поддерживается только на ГП Intel, но можно без особых усилий реализовать поддержку и других ГП. Нужное нам расширение - cl _ khr _ gl _ sharing . Вот соответствующий фрагмент кода. char extension_string; memset(extension_string, "



Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png