Настройка видеокарты Nvidia для игр. Настройки "глобальных параметров" драйвера для видеокарт NVidia на максимальную производительность, без потери в качестве

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

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

Введение

В этом примере демонстрируется создание текстуры в 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, "

Небольшой обзор по типах 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.

Производительность любой видеокарты можно увеличить не только изменением аппаратной части, но и программной. В первом случае речь идет о ее разгоне, однако это может плохо закончиться для самой карты. Поэтому изменение программного обеспечения как является самым оптимальным вариантом. Он позволяет "безболезненно" для чипа повысить его производительность. Но перед тем как настроить видеокарту Nvidia, нужно точно узнать ее модель.

Определение модели графики

Определить модель используемой в системе видеокарты можно разными способами. Самый простой из них:

  1. Кликам по рабочему столу правой кнопкой мышки, выбираем самый нижний пункт "Разрешение экрана".
  2. Жмем на "Дополнительные параметры".
  3. В появившемся окне будет выведена информация о видеокарте. Вкладка "Адаптер" покажет название модели.

Также точно определить модель позволит программа Aida64. Она распространяется платно в интернете, но есть и бесплатная версия с урезанными функциями. Нам бесплатная версия вполне подойдет. Скачайте ее с официального сайта и установите. Запустите, и во вкладке "Графический процессор" будет указана модель вашей карты.

Установка правильного драйвера

Перед тем как настроить видеокарту Nvidia, обязательно нужно установить соответствующий драйвер. Мы узнали модель нашей графики, поэтому теперь сможем скачать для нее нужный драйвер. Обязательно качать его нужно с официального сайта. Где, выбрав раздел "Поддержка", необходимо кликнуть на "Драйверы". Там нужно указать "Тип продукта" (в нашем случае GeForce), операционную систему, а также серию и семейство. Все это мы знаем из названия видеокарты, которое только что определили.

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

Как настроить драйверы видеокарты Nvidia?

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

Обычно центр управления Nvidia открывается с рабочего стола. Жмем правой кнопкой по рабочему столу и выбираем "Панель управления Nvidia". Там нам необходимо выбрать пункт "Управление 3D-параметрами". В этом разделе находятся ключевые такие как фильтрация текстур, буферизация, синхронизация и т. д.

Анизотропная оптимизация

Самый первый параметр называется "Анизотропная оптимизация", и при его активации повышается четкость 3D-объектов. Чем выше будет значение фильтрации, тем будет выше четкость объектов в приложении 3D (игре), однако это будет требовать немного больше ресурсов графики. Обычно данный параметр настраивается в самой игре, однако можно его отключить в настройках видеокарты, и тогда он будет игнорироваться в играх.

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

Фильтрации и оптимизации

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

Также обращаем внимание на опцию Она имеет настройку: 2x, 4x, 8x, 16x. Чем выше будет значение, тем более естественно будут выглядеть текстуры в игре. Но, как уже поняли, более высокое значение предполагает больший ресурс графики.

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

В опции "Фильтрация текстур" будут доступны варианты выбора "Качество" и "Производительность". Выбираем "Производительность" - это снизит качество фильтрации текстур, но прибавит в скорости обработки.

Это самые основные настройки, которые позволяют добиться более высокой скорости обработки данных видеокартой. Есть и второстепенные:

  1. Вертикальный синхроимпульс - выбираем значение "Адаптивный".
  2. PhysX - ЦП.
  3. Управление электропитанием - выбираем режим для максимальной производительности.
  4. Сглаживание - выключено.
  5. Потоковая оптимизация - включено.

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

Заключение

Да, качество картинки в играх сильно упадет, но чем-то приходится жертвовать. Пользователи, которые знают, как настроить видеокарту Nvidia GeForce, никогда не отрубают все опции сразу. И вы тоже сразу не отключайте все указанные выше параметры. Испытывайте их по одному и смотрите, насколько сильно поднимается FPS в игре, исчезают ли "фризы" и "тормоза". Если после отключения двух-трех параметров вы сможете добиться нормальной работы игры без зависаний, то отключать остальные параметры в ущерб графике не стоит.

Теперь вы знаете, как правильно настроить видеокарту Nvidia, и сможете это сделать самостоятельно.

  • Перевод

Привет, меня зовут Тони Элбрект (Tony Albrecht), я один из разработчиков новой команды Render Strike Team под управлением Sustainability Initiative в League of Legends . Моей команде поручили внести усовершенствования в движок рендеринга LoL , и мы с радостью принялись за работу. В этой статье я расскажу, как движок работает сейчас . Надеюсь, она заложит хороший фундамент, на основании которого я позже смогу рассказывать об вносимых нами изменениях. Эта статья станет для меня хорошим предлогом самому поэтапно изучить процесс рендеринга, чтобы мы, как команда, полностью понимали, что же происходит внутри.

Я подробно объясню, как LoL выстраивает и отображает каждый отдельный кадр игры (не забывайте, что на самых мощных машинах это происходит более 100 в секунду). Рассказ в основном будет техническим, но я надеюсь, что его легко будет усвоить даже тем, кто не имеет опыта в рендеринге. Для ясности я пропущу некоторые сложные моменты, но если вы захотите узнать подробности, то напишите об этом в комментариях [к оригиналу статьи].

Сначала я немного расскажу об имеющихся у нас графических библиотеках. League должна работать как можно эффективнее на широком диапазоне платформ. На самом деле, сейчас Windows XP является четвёртой по популярности версией ОС, в которой запускают игру (популярнее только Windows 7, 10 и 8). На Windows XP ежемесячно играют в десять миллионов сессий игры, поэтому для сохранения обратной совместимости нам нужно поддерживать DirectX 9 и приходится использовать только функции, которые он предоставляет. Также мы используем сопоставимый набор функций OpenGL 1.5 на машинах с OS X (скоро положение изменится).

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

Рендеринг для начинающих

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

Давайте рассмотрим пример. Вот изображение Гарена (Garen), состоящее из 6 336 треугольников, составляющих «проволочный» каркас и сплошную бестекстурную модель. Эта модель создана нашими художниками и экспортирована в формат, который движок League может загружать и анимировать. (Заметьте, что у Гарена неплоское затенение: это ограничение приложения, используемого для исследования рендеринга).

Эта модель без текстуры не только скучная, но и не отображает узнаваемого Гарена. Чтобы вдохнуть в Гарена жизнь, нужно нанести текстуру.

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

У нас уже начинает что-то получаться. Шейдер, рендерящий наши сетки со скиннингом, не просто наносит текстуру, но мы рассмотрим это позже.

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

Этап рендеринга 0: туман войны

Прежде чем начинать прорисовку частей сцены, нужно сначала подготовить туман войны и тени (у-у-у, «туман и тени», как зловеще!). Туман войны хранится центральным процессором как сетка размером 128x128, которая потом масштабируется до квадратной текстуры 512x512 (подробнее об этом можно почитать в статье «A Story of Fog and War»). Затем мы размываем эту текстуру и наносим её для затемнения соответствующих областей игры и мини-карты.


Этап рендеринга 1: тени

Тени - неотъемлемая часть 3D-сцены. Без них объекты будут казаться плоскими. Для создания теней, которые выглядят, как отбрасываемые миньоном или чемпионом, нам нужно рендерить их из точки источника света. Расстояние от источника света до отбрасывающего тень персонажа хранится для каждого пикселя в компонентах RGB, и мы обнуляем компонент альфа-прозрачности. Это можно увидеть ниже. Слева у нас есть поле высоты теней в RGB осаждаемой башни, миньонов и двух чемпионов. Справа у нас есть только компонент альфа-прозрачности. Эти текстуры обрезаны для более чёткого отображения деталей теней - миньоны внизу, башня и чемпионы - наверху.


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

Этап рендеринга 2: статичная геометрия

Имея подготовленные текстуры тумана войны и теней, мы начинаем отрисовывать в кадре остальную часть сцены. В первую очередь статичную геометрию (она называется так, потому что неподвижна). Эта геометрия сочетает информацию тумана войны и теней со своей основной текстурой, что даёт нам следующую сцену:

Заметьте, что тени миньонов и туман войны заползают на края сцены. Рендерер Ущелья призывателей (Summoner"s Rift) не рендерит динамических теней для статичной геометрии. Поскольку основной источник света не перемещается, мы запекаем тени статичных сеток на их текстурах. Это даёт художникам больше контроля над внешним видом карты, а также позволяет повысить производительность (не требуется рендеринг теней статичных сеток). Тени отбрасывают только миньоны, башни и чемпионы.

Этап рендеринга 3: сетки со скиннингом

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

Каждая анимированная сетка состоит из скелета (каркаса из иерархически соединённых костей) и из сетки треугольников (см. выше изображение Гарена). Каждая вершина каждого треугольника привязана к одной-четырём костям, поэтому при перемещении костей вершины перемещаются с ними как кожа (skin). Поэтому их называют «сетками со скиннингом». Наши талантливые художники создают анимации и сетки для всех объектов, а потом экспортируют их в формат, который загружается в League при запуске игры.


На изображениях выше показаны все кости сетки Гарена. На изображении слева показаны все его кости (с названиями). На изображении справа голубым показаны выбранные вершины, а жёлтыми линиями показаны связи с костями, управляющие их положением.

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

Этап рендеринга 4: контуры (очерчивание)

По умолчанию очерчивание для сеток со скиннингом включено, что обеспечивает более чёткие контуры. Это позволяет выделить сетки со скиннингом на фоне, особенно в областях с низким контрастом. На изображениях ниже очерчивание отключено (слева) и включено (справа).


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

Этап рендеринга 5: трава

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

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

Заметьте, что тени травы уже являются частью текстуры статичного рельефа и не рендерятся динамически. Затем мы добавляем траву:

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

Этап рендеринга 6: вода

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

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

Выделив всю рябь как «проволочные» каркасы, мы получим:

Теперь мы чётко можем видеть эффекты воды по берегам реки, а также вокруг камней и кувшинок.

При нормальном рендеринге и анимации вода выглядит следующим образом:

Этап рендеринга 7: декали

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

Этап рендеринга 8: особые контуры

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

Этап рендеринга 9: частицы

Следующая стадия - одна из самых важных: частицы. Я уже писал о частицах в этой статье . Каждое заклинание, бафф и эффект - это система частиц, которую нужно анимировать и обновлять. В рассматриваемой нами сцене не так много действия, как, например, в командном бою «5 на 5», но всё равно здесь довольно много отображаемых частиц.

Если мы рассмотрим только частицы (отключив всю фоновую сцену), то получим следующую картину:

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

Если отрисовывать частицы нормально, то мы получим более знакомый вид.

Этап рендеринга 10: эффекты постобработки

Итак, базовые части сцены уже отрендерены и мы можем придать ей немного больше «блеска». Делается это в два этапа. Сначала мы выполняем проход сглаживания (anti-alias, AA). Он помогает сгладить зазубренные края, делая весь кадр более чётким. В статичном изображении этот эффект почти незаметен, но он сильно помогает в устранении «мерцания пикселей», которое может возникать при перемещении высококонтастных граней по экрану. В LoL мы используем алгоритм сглаживания с быстрой аппроксимацией Fast Approximate Anti-Aliasing (FXAA).

Изображение слева - это миньон до FXAA, а справа - после сглаживания. Заметьте, как сглаживаются края объекта.

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

Этап рендеринга 11: урон и полоски здоровья

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

Этап рендеринга 12: интерфейс

И, наконец, отрисовывается интерфейс пользователя. Все тексты, значки и предметы отрисовываются на экране как отдельные текстуры, перекрывая всё, находящееся под ними. В анализируемом нами случае на отрисовку интерфейса потребовалось примерно 1 000 треугольников - около 300 на мини-карту и 700 - на всё остальное.

Собираем всё вместе


И мы получаем полностью отрендеренную сцену. Во всей сцене содержится около 200 000 треугольников, 90 000 из них используется под частицы. 28 миллионов пикселей отрисовываются за 695 вызовов отрисовки. Чтобы в игру можно было играть, вся эта работа должна выполняться как можно быстрее. Чтобы достичь 60 и более кадров в секунду, все этапы нужно пройти менее чем за 16,66 миллисекунд. И это только расчёты на стороне графического процессора: вся игровая логика, обработка ввода игрока, столкновения, обработка частиц, анимации и отправка команд на рендеринг тоже должны выполняться за это же время в центральном процессоре. Если вы играете с 300 fps, то всё происходит меньше чем за 3,3 миллисекунды!

Зачем выполнять рефакторинг рендерера?

Теперь вы должны представлять сложности, связанные с рендерингом единственного кадра игры League . Но это только сторона вывода данных: то, что вы видите на экране - это результат тысяч вызовов функций нашего движка рендеринга. Он постоянно изменяется и эволюционирует, чтобы лучше соответствовать современным потребностям рендеринга. Это привело к тому, что в базе кода League сосуществуют разные формы кода рендеринга, потому что нам нужно учитывать новое и поддерживать старое оборудование. Например, Ущелье призывателей (Summoner’s Rift) выполняет рендеринг немного иначе, чем Воющая бездна (Howling Abyss) и Проклятый лес (Twisted Treeline). Существуют части рендерера, оставшиеся от старых версий League , и части, которые пока так и не раскрыли весь свой потенциал. Задача команды Render Strike Team - взять весь код рендеринга и произвести его рефакторинг , чтобы весь рендеринг выполнялся через один и тот же интерфейс. Если мы хорошо выполним свою задачу, то игроки совершенно не заметят разницы (кроме, возможно, небольшого увеличения скорости в разных моментах). Но после того, как мы закончим, у нас появится отличная возможность вносить одновременные изменения во все игровые режимы rendering Добавить метки

Средство отслеживания масок преобразует маску в соответствии с траекторией перемещения одного или нескольких объектов в фильме. Выбранный для отслеживания объект на протяжении всего фильма должен сохранять одну и ту же форму, однако может менять расположение, масштаб и/или перспективу, поскольку такие изменения не препятствуют отслеживанию.
При выделении маски панель «Отслеживание» переключается в режим отслеживания маски и отображает следующие элементы управления:

  • Выполните отслеживание в направлении вперед или назад применительно к одному кадру во времени или до конца слоя
  • Метод, с помощью которого можно изменить расположение, масштаб, поворот, наклон и перспективу маски

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

Отслеживание маски .

Эффект Увеличение с сохранением уровня детализации предоставляет возможность значительно увеличить изображение, сохранив при этом его мелкие элементы, а также резкость линий и кривых. Например, можно масштабировать кадры из формата SD в формат HD или из формата HD в формат кадра для цифрового кино.

Дополнительные сведения см. в разделе Эффект «Увеличение с сохранением уровня детализации» .

Средства просмотра содержимого HiDPI для экранов Retina на компьютерах Mac

After Effects отображает содержимое на экранах Retina компьютеров Mac таким образом, чтобы каждый пиксель содержимого в средстве просмотра отображался в качестве отдельного пикселя на экране.

Это влияет на содержимое следующих элементов:

  • Панель «Видеоряд»
  • Панель «Слой»
  • Панель «Композиция», в том числе видеосодержимое и некоторые элементы интерфейса в области содержимого

Эта особенность не влияет на курсоры, кнопки и другие панели пользовательского интерфейса After Effects.

Обновленные функции Cineware

В диалоговом окне Параметры в разделе эффектов Cineware появились два новых параметра. С их помощью можно настроить экземпляр Cinema 4D, который будет использоваться в сочетании с After Effects.
Путь рендеринга Cinema 4D: выбор версии Cinema 4D (R14 или R15), которая будет применяться для рендеринга при работе в After Effects.
Путь к исполнимому файлу Cinema 4D : выбор версии Cinema 4D, которая будет использоваться при открытии файла .c4d в After Effects, например с помощью команды Редактировать оригинал .

Дополнительные сведения см. в разделе Обновления Cinema 4D .

Новая библиотека OptiX для 3D-рендеринга с трассировкой лучей

After Effects CC теперь использует новую библиотеку OptiX 3.0. В предыдущих версиях After Effects применялась библиотека OptiX 2.0.

Основные преимущества новой библиотеки OptiX перед старой библиотекой Optix 2.0:

  • Устранены причины сбоя в Mac OS X v10.9 (Mavericks)
  • Более высокая производительность, в том числе в среде с несколькими ГП

Обход белого списка для ускорения ГП в случае 3D-рендеринга с трассировкой лучей

В диалоговом окне «Данные ГП» представлено меню с параметрами трассировки лучей, в котором пользователь может выбрать ГП или ЦП.

В предыдущих версиях After Effects при отсутствии установленного оборудования в списке протестированных и поддерживаемых ГП соответствующий пункт в меню ГБ блокировался (выделялся серым), а под меню отображалось сообщением «GPU недоступно - несовместимое устройство или драйвер дисплея».

Теперь пользователям доступен новый параметр для настройки ГП, представленный в меню Правка > Установки > Предпросмотр > Данные ГП : «Использовать непроверенный, неподдерживаемый ГП для ускорения 3D-рендеринга с трассировкой лучей CUDA».

Если этот флажок установлен, After Effects использует ускоренный графический 3D-рендеринг с трассировкой лучей с применением любого ГП, соответствующего минимальным требованиям.

Список новых карт в белом списке CUDA для OptiX

В белый список CUDA для OptiX (для графического ускорения 3D-рендеринга с трассировкой лучей) были добавлены следующие карты:

  • GTX 675MX (Windows и Mac OS)
  • GTX 680MX (Windows и Mac OS)
  • GTX 590 (Windows)
  • GT 650M (добавлена в список карт для Windows; уже представлена в списке Mac OS)
  • GTX 760 (Windows)
  • GTX 770 (Windows)
  • GTX 780 (Windows)
  • GTX TITAN (Windows)
  • Quadro K6000 (Windows)
  • Quadro K4000 (Windows)
  • Quadro K2000 (Windows)
  • Quadro K5000M (Windows)
  • Quadro K4000M (Windows)
  • Quadro K3000M (Windows)
  • Quadro K5100M (Windows)
  • Quadro K4100M (Windows)
  • Quadro K3100M (Windows)
  • Quadro K2100M (Windows)

Повышена производительность на этапе анализа для функции 3D Camera Tracker и стабилизатора деформации

Значительно ускорен фоновый процесс анализа видеоряда для функции 3D Camera Tracker и стабилизатора деформации. В зависимости от сведений о видеоряде и других факторов полученные показатели увеличения скорости обработки на этапе анализа (отслеживания) составляют от 60 % до 300 %.

Улучшенные и измененные свойства

Показать свойства с ключевыми кадрами

Изменились команды для отображения измененных свойств в панели Таймлайн ; теперь в меню Анимация представлены три команды для отображения свойств:

  • Показать свойства с ключевыми кадрами (клавиша U) - отображение любого свойства, с которым связан ключевой кадр. Если со свойством одновременно связаны и ключевые кадры, и выражения, данное свойство отображается, но не отображается связанное с ним выражение.
  • Показать свойства с анимацией - отображению любого свойства, с которым связан ключевой кадр или выражение.
  • Показать все измененные свойства (комбинация клавиш: UU) - отображение ключевых кадров, выражений или всех измененных свойств (включая ключевые кадры и выражения), которые не анимированы.

Создание ссылок на свойства

  1. Выберите любое свойство или набор свойств.
  2. Выберите Правка > Копировать со ссылками свойства.
  3. Вставьте свойства в любой слой любой композиции.

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

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


Новые свойства в меню «Язык выражения»

Исправленные звуковые волны

В After Effects звуковые волны представлены как «исправленные» звуковые волны. Это означает, что амплитуда звука отображается только в одном направлении по горизонтальной оси на логарифмической шкале. Данный метод отображения упрощает расчет восприятия громкости звука.
Чтобы переключиться на старый метод отображения звуковых волн, снимите флажок Исправленные звуковые волны в меню панели «Таймлайн».

Изменения метода привязки слоев 2D и 3D

Рядом с флажком «Привязка» в панели «Инструменты» добавлены два новых параметра:


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

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

Включение предпросмотра видео для внешних устройств (Mac OS)

Чтобы активировать предпросмотр видео на внешних устройствах в Mac OS, выберите новый параметр Включить предпросмотр видео QuickTime в категории установок Предросмотр видео . При установке данного флажка After Effects запросит у QuickTime список внешних устройств для предпросмотра видео.

Внимание! Активация этого параметра может привести к отказу Adobe QT32 Server, что в свою очередь приведет к сбою After Effects.

Более ранние версии After Effects автоматически запрашивают в QuickTime список внешних устройств для предпросмотра видео.

Изменения и улучшения функций для работы со слоями

Центральная опорная точка

Опорную точку, которая станет центром содержимого слоя, можно задать следующими способами:

  1. Слой > Трансформировать > Расположить опорную точку в содержимом слоя по центру
  2. В ОС Windows используйте комбинацию клавиш Ctrl+Alt+Home , в Mac OS - комбинацию клавиш Command+Option+Home .
  3. Также можно использовать комбинацию Ctrl+двойной щелчок (Windows) или Command+двойной щелчок (Mac OS) для активации инструмента Панорамирование назад (опорная точка) .

Сведения об опорных точках см. в разделе Свойства опорных точек .

Создание нового слоя



Настройка длительности предварительной композиции

В диалоговом окне Предварительная композиция появился новый параметр: Настройте продолжительность композиции к временному диапазону выделенных слоев .

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

В предыдущих версиях After Effects длительность новой композиции совпадает с длительностью исходной вне зависимости от длительности слоев, вошедших в предварительную композицию.


Бикубическая выборка эффекта «Преобразовать»

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

Включить ведение журнала

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

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


Автоматическое открытие папок панели «Проект» при перетаскивании

.
  • Фиксация сегментации для эффекта «Кисть для ротоскопии» и «Уточнить края» применяется ко всем интервалам вне зависимости от рабочей области, а не только в пределах рабочей области
  • Каркасы для камер и источников освещения отображаются по умолчанию, даже если соответствующие слои не выбраны
  • Файлы PNG с индексированными цветами и файлы PNG с оттенками серого и настройками прозрачности можно импортировать
  • Файлы в формате Photoshop Large Document (.psb) можно импортировать.
  • Файлы CMYK JPEG можно импортировать.
  • Штрихи и пробелы теперь явным образом нумеруются (штрих 2, пробел 2 и т. д.), если в обводку слоя-фигуры добавляется несколько штрихов и пробелов. Благодаря этому на них будет проще ссылаться с помощью выражений.
  • Эффект Яркость и контрастность улучшен и теперь соответствует одноименному фильтру в Photoshop. Также можно выбрать прежний алгоритм, поддерживающий HDR.
  • Центр .
  • Установки операций Отменить удалены из меню Установки . Изменить число операций из категории «Отменить» можно в текстовом файле установок. Теперь параметр числа операций из категории «Отменить» по умолчанию всегда имеет значение 99.
  • При первой установке After Effects 12.1 установка Записать идентификаторы XMP в файлы при импорте в категории установок Носитель и кэш диска по умолчанию отключена. При обновлении до After Effects 12.1 данная установка по умолчанию включена. Чтобы отключить ее, снимите соответствующий флажок.
  • Теперь привязка определяет уровень увеличения (масштаб) и пропорции пикселя (PAR) изображения в средстве просмотра.
  • Эффекты Ключ яркости и Цветовой ключ перемещены в категорию «Устаревшие эффекты» и заменены другими эффектами, например Эффект «Направленный свет» .



  • Статьи по теме