Настройка Blender 2.83 — 2.9x
Видеоверсия от Яростного BLENDER’а в авторской озвучке:
Blender — это свободное (бесплатное) программное обеспечение с открытым исходным кодом. Программа доступна для Windows (7,8,10), Linux, MacOS на официальном сайте, Steam и Windows Store. Так же доступны PPA-репозитарии для Linux. Если ваш компьютер не соответствует системным требованиям, то все версии программы доступны на этом сайте. Самая последняя ночная сборка Blender 2.79. Самые свежие экспериментальные сборки здесь.
Системные требования.
Blender очень зависит от системных требований компьютера. Разработчики постоянно их обновляют. На данный момент минимальные ситемные требования выглядят так: Процессор: 64-bit Двухъядерные процессоры 2Ghz с поддержкой SSE2.
ОЗУ: 4 GB
Дисплей: 1280×768 display
Видеокарта: 1 GB ОЗУ, OpenGL 3.3 Если ваша видеокарта, не поддерживает нужную версию OpenGL, то появится сообщение об ошибки: Всплывающее окно, если видеокарта не поддерживает OpenGL 3.3
С новыми картами такой проблемы не будет, но у старых ноутбуков могут возникать артефакты, даже если программа запустилась. Поддержка OpenGL в Blender: 2.76 и старее — OpenGL 1.4, 2.79 — OpenGL 2.1, 2.80 — 2.82 — OpenGL 3.1, 2.82 и выше — OpenGL 3.3.
Так же у старых ноутбуков со встроенной графикой Intel могут возникать проблемы с переходом от Blender 2.82 к 2.83: Артефакты на старых видеокартах
Логика работы программы.
В Blender множество настроек. Вы можете включить и выключить кнопки, перемещать и удалять объекты и после этого сохранить это как стартовый файл: File — Defaults — Save Startup File. Он будет открываться при каждом запуске программы. Load Factory Settings — вернет первоначальные настройки программы, но для сохранения так же нужно будет сохранить как стартовый файл. Blender автоматически сохраняет только настройки программы. Сохранение стартового файла Все настройки программы хранятся в пути C:\Users\Имя Пользователя\AppData\Roaming\Blender Foundation\Blender\2.90\ config: bookmarks.txt — закладки пользователя. platform_support.txt — информация о поддерживающих устройствах. recent-files.txt — список недавних файлов, которые можно открыть в программе (File — Open Recent). startup.blend — стартовый файл. userpref.blend — настройки пользователя (preferences).
datafiles — studiolights: matcap — маткапы. studio — студийный свет (studiolight) world — hdri-ки.
scripts: presets: keyconfig — пользовательский файл хоткеев. interface_theme — пользовательские темы интерфейса. addons: пользовательские аддоны.
Быстрые настройки программы.
Рассмотрим основные настройки программы.
Далее я буду ориентироваться на Blender 2.90. Различия между 2.83 минимальны. В основном компоновка интерфейса другая. При первом запуске программы появится Splash Screen, в котором можно быстро настроить программу, либо перенести уже существующие настройки из предыдущих версий. Splash Screen при запуске Language — выбор языка программы. Shortcuts — выбор раскладки горячих клавиш. Select With — кнопка выделения. В Blender 2.79 выделение элементов по умолчанию стояло на ПКМ, а ЛКМ — перемещала 3D-курсор. В 2.80 все же перешли на ЛКМ. Left:
ЛКМ – выбор объекта.
ПКМ – контекстное меню (W).
W – смена режима Select Tools.
Right:
ЛКМ – перемещение 3D- курсора.
ПКМ – выбор объекта.
W— контекстное меню. Spacebar — действие на Пробел. Play — запуск анимации, Tools — вызов панели инструментов (дублирует боковую панель инструментов), Search — вызывает поиск (так было в 2.79), его можно вызвать, нажав F3. Theme — выбор цветовой схемы. C 2.80 — 2.82 цветовых схем было две, теперь их девять. Так же вы можете загрузить пользовательские темы. Если вы закрыли данное окно, то его можно вызвать, нажав на мини лого рядом с File. Открытие Splash Screen
Основные настройки программы.
Основные настройки находятся в меню Edit — Preferences. Blender автоматически сохраняет настройки, но если доступна кнопка со * значит автосохранения выключены. Автосохранения выключены
Interface:
Вкладка Interface
Display:
Resolution Scale — масштаб всего интерфейса. Если вы хотите увеличить масштаб только некоторых элементов, нажмите Ctrl +СКМ и не отпуская двигайте вверх и вниз.
Tooltips — показывать подсказки.
Editors:
Navigation Controls — показывает вспомогательные элементы навигации для вьюпорта справа от него (масштаб, перемещение, привязаться к камере, смена проекции)
Translation:
Language — Язык интерфейса. Применить к Tooltips (Подсказкам), Interface (Интерфейсу), New Data (К новым именам датаблоков (объектов, материалов и т.д.))
Themes:
Вкладка Themes Во вкладке Themes можно настроить интерфейс на свой вкус. Либо загрузить уже готовые темы. Рассмотрим только основные параметры.
3D Viewport:
Настройка 3D Viewport Важно: Настройки цвета. При выборе цвета появляется панелька с цветовым кругом. В цветовом круге можно выбрать цвет, ползунок рядом отвечает за яркость. RGB, HSV — цветовая модель.
Hex — значение цвета в Hex-формате.
A — Альфа канал, отвечает за прозрачность.
Grid — цвет и прозрачность сетки пола.
Wire — цвет сетки в объектном режиме (object mode) (когда объект не выделен).
Wire Edit — цвет сетки в режиме редактирования (edit mode) (когда объект не выделен).
Object Selected — выделенный объект.
Active Object — активный (последний) выделенный объект.
Vertex — цвет вершин
Vertex Selected — цвет выделенных вершин.
Edge Select — цвет выделенного ребра
Face — цвет грани.
Face Selected — цвет выделенной грани
Face Dots Select — цвет активного фейсдота (в режиме wireframe(каркасный режим)). Face Dots — это точка внутри полигона в каркасном режиме.
Active Vertex/Edge/Face — цвет активной(го) вершины, ребра, грани. Про Face Orientation Front (Back) ниже:
В Blender 2.79 вывернутые грани отображались сразу, во вьюпорте. Отоброжение граней в Blender 2.79 По умолчанию в 2.83 отображение вывернутых граней выключено. Для включения надо активировать галочку напротив Face Orientation в Overlays, но это не всегда удобно. Активируем галочку и возвращаемся в настройки.
Включение отображения вывернутых граней в Blender 2.83
Поэтому Face Orientation Back (цвет задней стороны грани) оставляем как есть или меняем на ваше усмотрение, а в Face Orientation Front (цвет передней стороны грани)ставим альфа канал на 0. Таким образом, мы будем видеть оригинальный цвет меша, а вывернутый меш в цвете. Решение проблемы с отображением граней Vertex Size — размер вершин.
FaceDots Size — размер фейсдота.
Outline Width — ширина контура для выделенного объекта.
Object Origin Size — Размер origins (центра объекта).
Theme Space:
Настройки Theme Space Здесь нас интересует Gradient Color — позволяет устанавливать градиент для вьюпорта. BackgroundType (тип градиента):
Single Color — одноцветный (без градиента).
Linear Gradient — линейный градиент
Vignette — виньетка Gradient High/Off — цвет верхнего градиента
Gradient Low — цвет нижнего градиента
Node Editor:
Настройка Node Editor Noodle Curving — настройка кривизны линий соединяющих ноды.
Grid Levels — настройка сетки в Shader Editor.
Lights:
Настройка Lights Настройка пользовательского света для меша для вьюпорта. Переключение доступно во Viewport Shading. Studio Light — более гибкая система отображения света, чем MatCaps.
MatCaps — загрузка сторонних маткапов. Теперь можно загрузить любой маткап в виде картинки. Вы можете скачать уже готовые маткапы здесь. HDRI — загрузка собственных HDRI для вьюпорта. Выбор HDRI осуществляется в режиме Material Preview вкладке Viewport Shading.
Input, Navigation, Keymap (коротко):
Вкладки Input, Navigation, Keymap
Input:
Emulate Numpad — эиулирует нумпад. Управление вьюпортом осуществляется верхними цифрами на клавиатуре от 1-0.
Emulate 3D Button Mouse — эмуляция средней кнопеи мыши. Левый Alt+ЛКМ — перемещение, Правый Alt+ЛКМ — масштабирование. Tablet API — выбор API для управления планшетом.
От себя: Если ваш планшет введет себя не корректно в Windows 10, рекомендую отключить Windows Ink через реестр. Отключение через драйвер не всегда помогает. Это касается не только Blender, а так же Zbrush и Photoshop.
Navigation:
Orbit Around Selection — вращение выбронаго объекта.
Auto Perspective — автоперспектива. Автоматическое включение перспективы при вращении из ортогонального вида. Рекомендую выключать при скульптинге.
Keymap:
Select All Toggles — Данная опция позволяет нажимать один раз А для снятия выделения. По умолчанию в 2.80 для снятия выделения нужно нажать два раза А, либо Alt+A. В 2.79 нужно нажать один раз.
System, Save & Load, File Paths:
Вкладки System, Save & Load, File Paths
System:
Undo Steps — количество шагов отмены.
Global Undo — должна быть включена. При выключении пропадает возможность менять настройки примитивов. Они неактивны.
При выключенном Global Undo
Save & Load:
Save Version — количество версий. При сохранении файла Blender автоматически создает файлы бекап с расширением .blend1
Recent Files — длина списка недавно открытых файлов.
Auto Run Phyton Scripts — включить, если вы работаете с чужим файлом, и там требуется активировать скрипты.
File Paths
Установка различных путей. Крайне рекомендую указать папку отдельную Temp для blend-файлов. Это спасет ваши нервы, если нужно будет восстановить файлы.
Общие настройки программы.
Statistics — В Blender 2.9 статистика отображается слева (как в Maya), а не в нижней панели как в 2.83 и ниже. По умолчанию выключена. Отображении информации об объектах. Но есть возможность включить статистику внизу. Нажмите ПКМ на версии Blender и выберите необходимое. Опции Status Bar.
В настройках фильтра Outliner активировать галочки для выбора объекта и показ рендера. Настройка отображения. В N-панели (N) установите значение Clip Start на 0.001. Этого достаточно для мелких объектов. Настройка Clip Start После проделанных действий сохраните как стартовый файл File — Defaults — Save Startup File, иначе не сохранится.
Вопросы производительности¶
Оптимизация производительности визуализации¶
«Кто над чайником стоит, у того он не кипит» – старая поговорка, но вы можете задаться вопросом, почему визуализация занимает так много времени до своего завершения, или ещё того хуже, падает на половине пути! Ну, во время визуализации происходит много вещей и большинство из них вы можете ускорить, либо включить в сложную визуализацию, чтобы дождаться её завершения. Кроме того, можно отрисовать очень сложную сцену на посредственном ПК, если проявить некоторую смекалку. Вот список вещей из «горячей десятки», которые следует или не следует делать, чтобы ускорить визуализацию или избежать падения во время визуализации. Некоторые параметры могут снизить качество визуализации, но в случае с черновыми визуализациями вы можете не беспокоиться об этом.
Если вы получаете сообщение «Malloc returns nil» («Malloc вернул ноль»), на чистом английском это означает, что аллокатор памяти попытался запросить для Blender больше физической памяти, но вернулся с пустыми руками. Это значит, что у вас не достаточно памяти для визуализации сцены, и Blender не может продолжить работу. Чтобы всё-таки завершить визуализацию, вам нужно будет воспользоваться одним или несколькими советами с этой страницы.
Усовершенствования оборудования¶
- Установите больше системной памяти.
- Обновите ваш центральный процессор до многоядерного/многопроцессорного.
- Обновите свои драйвера OpenGL.
- Поставьте более быструю память, вплоть до предела, который поддерживает ваша материнская плата.
- Используйте или настройте ферму визуализации, используя все имеющиеся компьютеры в вашем доме, либо воспользуйтесь готовой фермой визуализации.
Конфигурация операционной системы¶
- Увеличьте приоритет процесса Blender в вашей ОС.
- Увеличьте область подкачки, используемую ОС для подкачки памяти, также называемой размером файла подкачки виртуальной памяти, вплоть до размера вашей физической памяти.
- Используйте системный монитор для проверки того, что никакие другие процессы не используют значимое количество ресурсов процессора или оперативной памяти и закройте их в случае необходимости.
- Визуализация в фоновом режиме (из командной строки) сохранит немного дополнительной памяти.
Параметры Blender’а¶
- Увеличьте параметр «Ограничение кэша в памяти» в настройках Blender на вкладке «Система» в разделе «OpenGL».
- Переключитесь на ортографическую камеру и визуализируйте «части» сцены в отдельные изображения, а затем соберите их вместе в GIMP. Здесь работает старый трюк с созданием собственной панорамы с реальной камеры, когда вы делаете несколько фотографий очень широкой (закат на пляже) сцены: делаете один снимок, поворачиваетесь направо, делаете другой, потом ещё раз и так далее; и когда вы сделаете все эти фотографии, вы накладываете их друг на друга для получения очень широкого изображения ландшафта. Сделайте то же самое в Blender’е: визуализируйте один снимок в файл, направьте камеру на другую область сцены и сделайте второй снимок. Каждый снимок будет меньшей площади и, таким образом, содержать меньше полигонов/граней. Убедитесь, что, когда вы устанавливаете камеру, вы перекрываете кусочек предыдущего снимка, чтобы потом вы смогли их сопоставить. Если вы не хотите использовать GIMP, вы можете использовать для сопоставления узлы композитора Blender’а, в частности, узел «Перемещение».
- Minimize the render window (and the Blender window, if the UV/Image editor is used). ATI users report dramatic speed-up on a per-frame basis, which adds up over the frame range.
- Используйте скрипт Big Render для визуализации частей общего изображения, а затем объедините их вместе.
Сцена и определённые объекты¶
- Remove lamps, or move them to unrendered layers, or group them into layers.
- Отключите тени от каких-нибудь ламп, для отбрасывания теней используйте только одну или две основных лампы-солнца. Несколько дающих тени ламп будут отрисовываться быстрее, чем если бы каждая лампа давала тень.
- Используйте буферные тени вместо теней от трассировки лучей.
- Запекайте свои тени при помощи запекания полной визуализации на неподвижные поверхности. Используйте получившуюся текстуру для полисетки и отключите тени для её материала.
- Упростите полисетки (удалите полигоны). Чем больше вершин находится в камере, тем больше времени требуется на визуализацию.
- Удалите двойные вершины или используйте функцию редактирования полисетки модификатора «Аппроксимация».
- Удалите модификаторы «Подразделение поверхности» и «Мультиразрешение».
- Удалите задние грани полисеток (невидимую геометрию).
- Визуализируйте за раз только несколько объектов; в начале вашего проекта отрисуйте фоновые объекты и наборы объектов, которые не будут меняться и всегда будут на фоне.
- Поместите строения на отдельный слой, и скройте их от визуализации через слои визуализации. Затем объедините их с остальным изображением на этапе композитинга.
- Сделайте камеру статичной, чтобы лучше выполнить две вышеуказанные идеи.
- Избегайте использования ламп-областей.
- Отключите затенение для материалов.
- Запеките AO и текстуры, а затем отключите затенение для соответствующих материалов.
- Уменьшите расстояние отсечения для ламп-прожекторов.
- Уменьшите расстояние отсечения для камеры.
- Отключите AO окружающей среды.
- Отключите подповерхностное рассеивание материала.
- Используйте текстуры меньшего размера. Изображение размерами 256×256 занимает всего 1% от памяти, требуемой для 2k-изображения и часто в конечной визуализации вообще не происходит потери качества.
- Уменьшите количество подразделений в модификаторе «Подразделение поверхности». Каждый уровень подразделения учетверяет (4x) количество граней по сравнению с предыдущим уровнем.
- Уменьшите мультиразрешение.
- Сделайте маску с отрисованными фоновыми объектами, например, зданиями, и поместите в сцену плоскость с этим изображением вместо самих объектов. Это позволит уменьшить количество вершин/граней.
- If you have lots of linked instances of an object, use DupliFaces, as these are instanced. If you have 100 of them, Blender will only store the geometry for one. (Instances themselves take a small amount of memory).
Параметры визуализации¶
- Отключите визуализацию Рёбер.
- Сохраняйте буферы.
- Render to a UV/Image Editor , not a pop-up. Render Window .
- На многоядерных процессорах используйте несколько Потоков (с разбиением изображения на несколько Частей).
- Decrease the frame count of the animation (and use a lower frame rate for the same duration of animation). For example, render 30 frames at 10 frames per second for a 3-second animation, instead of 75 frames at 25 frames per second.
- Визуализируйте только интересующие вас слои.
- Визуализируйте все источники света как один простой прожектор (введите его имя в поле Освещение).
- Визуализируйте с переопределением на один материал (введите его имя в поле Материал).
- Отключите ненужные проходы визуализации, например Z, либо отрисовывайте только нужный проход, например, диффузный.
- Отключите тени.
- Отключите карты окружения.
- Отключите панорамную визуализацию.
- Turn off Ray tracing.
- Отключите подповерхностное рассеивание.
- Отключите или уменьшите параметры сглаживания.
- Отключите или уменьшите параметры размытия при движении.
- Производите визуализацию по частям. Также этот совет поможет вам отрисовать очень большие изображения на слабых ПК. На многоядерных ПК можно каждой части назначить своё ядро.
- Увеличьте разрешение октодерева.
- Визуализируйте в процентах от размера вашего окончательного разрешения (например, 25%).
- Отключите визуализацию Полей.
- Используйте Границы визуализации для визуализации только некоторого подмножества полного изображения.
- Bake Full Render creates a UV texture that colors the objects based on materials, and then uses that UV texture shadeless instead of the material.
- Запекайте только Ambient Occlusion.
- Запекайте текстуры для объектов.
- Запекание нормалей и смещений не ускоряет визуализацию и используется для других вещей.
- Визуализируйте в меньшем разрешении. Маленькие изображения требуют меньше времени на визуализацию.
- Выберите более быстрый кодек или настройки кодека.
- Визуализируйте в оттенках серого (кнопка BW).
- При использовании формата FFMPEG не активируйте параметр Multiplex audio (Мультиплексирование звука).
- При использовании формата FFMPEG включите параметр Авторазделение вывода (на панели Кодирование).
- Визуализируйте только RGB, если вам просто нужны цвета; канал прозрачности A (кнопка RGBA) потребляет дополнительную память и не используется при сохранении файла фильма.
Многопроходный композитинг¶
Другой стратегией, которую можно использовать для решения проблемы длительной (повторной) визуализации, является структурирование с нуля вашего рабочего процесса, заключающееся в агрессивном использовании композитинга, который описан в разделе «Пост-обработка». При использовании этого подхода вы разбиваете каждую картинку на компоненты, которые могут быть визуализированы отдельно, а затем объединяете эти отдельно отрисованные элементы в готовый фильм. К примеру:
- If the camera is not moving, then neither is the background: only a single frame is needed. (The same is true of any non-moving object within the frame). These individual elements, having been generated once, can be reused as many times as necessary over as many frames as necessary.
- И тени, и блики могут быть захвачены отдельно от освещаемых или затеняемых объектов, поэтому их интенсивность, цвет и силу эффекта можно скорректировать позже без прибегания к повторной визуализации.
- Начните с использования источников света, не отбрасывающих тень (расчёты теней сильнее всего бьют по производительности). Затем используйте источники света «только с тенями» (которые отбрасывают тень, но не излучают свет) для создания теней только там, где вы думаете, что они действительно необходимы (очень часто бывает так, что лишь немногие из теней, которые могут существовать в сцене, нужны на самом деле, а остальные так и вообще просто незаметны).
- Запутанных ситуаций с освещением можно избежать, обрабатывая каждый объект отдельно от остальных, с последующим объединением фрагментов и «подправкой» результата.
Это очень знакомая идея. Например, в современной звукозаписи всегда используется «мульти-трековый» подход. Отдельные компоненты песни записываются отдельно и изолированно, а затем «сводятся» вместе. «Окончательное сведение» затем проходит через этапы дополнительной обработки, называемой мастеринг, для производства готового продукта (на самом деле, возможности и дизайн современного программного обеспечения для обработки звука прямо аналогичны «узловому» композитору Blender’а).
У такого подхода есть убедительные преимущества:
- If something is «not quite right», you do not necessarily have to start over from scratch.
- In practice, the deadline-killer is re-rendering, which ordinarily must be done (in its entirety) just because «„one little thing“ about the shot is wrong». Compositing helps to avoid this, because (ideally…) only the specific parts that are found to be in error must be repeated (or, maybe, the error can be blocked out with a «garbage matte» and a corrected version can be inserted in its place).
- Sometimes you might find that it is almost what you wanted, but now you would like to add this and maybe take away that. A compositing-based approach enables you to do just that, and furthermore, to do so non-destructively. In other words, having generated the «addition» (or the «mask») as a separate channel of information, you can now fine-tune its influence in the overall «mix», or even change your mind and remove it altogether, all without permanently altering anything.
- By and large, these stages work two-dimensionally, manipulating what is by that time «a raster bitmap with R, G, B, Alpha and Z-depth information», so they are consistently fast.
- Поскольку каждая отдельная задача визуализации была упрощена, компьютер может выполнять их, используя гораздо меньше ресурсов.
- Задачи могут быть распределены среди нескольких разных компьютеров.
- «After all, the scene does not actually have to be physically perfect, to be convincing». A compositing-based approach lets you take full advantage of this. You can focus your attention (and Blender’s) upon those specific aspects of the scene which will actually make a noticeable difference. It is possible to save a considerable amount of time by consciously choosing to exclude less-important aspects which (although «technically correct») probably will not be noticed.
Of course, this approach is not without its own set of trade-offs. You must devise a workable asset management system for keeping track of exactly what material you have, where it is, whether it is up-to-date, and exactly how to re-create it. You must understand and use the «library linking» features of Blender to allow you to refer to objects, nodes, materials, textures and scenes in a carefully-organized collection of other files. You need to have a very clear notion, in advance, of exactly what the finished shot must consist of and what the task breakdown must be. You must be a scrupulous note-taker and record-keeper. But sometimes this is the best way, if not the only way, to accomplish a substantial production.
© Copyright : This page is licensed under a CC-BY-SA 4.0 Int. License.
Как оптимизировать блендер для слабых пк
Оптимизация производительности графики
Хорошая производительность критична для многих игр. Ниже даны простые советы по увлечению скорости рендеринга в вашей игре.
Какова стоимость графики
Графическая часть вашей игры нагружает в первую очередь две системы компьютера: GPU (графический процессор) и CPU (центральный процессор). Первое правило любой оптимизации: найти, где возникает проблема, так как стратегия оптимизации для GPU и CPU имеет существенные различия (иногда даже возникает ситуация, когда при оптимизации для GPU больше нагрузки ложится на CPU и наоборот).
Типичные узкие места и их проверка:
- GPU часто ограничен филлрейтом (fillrate) или пропускной способностью памяти.
- Запуск игры с более низким разрешением экрана увеличивает производительность? Тогда вы скорее всего ограничены филлрейтом GPU.
- CPU часто ограничен количеством вещей, которые должны быть отрисованы, также известно, как “draw calls”.
- Проверьте показателль “draw calls” в окне Rendering Statistics; если он составляет больше нескольких тысяч (для PC) или нескольких сотен (для мобильных устройств), то вам может потребоваться оптимизация количества объектов.
- GPU обрабатывает слишком много вершин. Какое количество вершин является нормальным, определяется GPU и набором вертексных шейдеров. Можно посоветовать использовать не более 100 тысяч для мобильных устройств и не более нескольких миллионов для PC.
- The CPU has too many vertices to process. This could be in skinned meshes, cloth simulation, particles, or other game objects and meshes. As above, it is generally good practice to keep this number as low as possible without compromising game quality. See the section on CPU optimization below for guidance on how to do this.
- Рендеринг не создаёт проблем ни для GPU, ни для CPU. Проблема может быть, к примеру, в скриптах или физике. Используйте профайлер для поиска источника проблемы.
CPU optimization
В процессе визуализации любого объекта на экране CPU должен немного потрудиться: выяснить, какие источники света влияют на объект, настроить шейдер и его параметры, отправить коменды отрисовки графическому драйверу, который подготовит команды для отправки на видеокарту. Все эти операции могут быть не очень дешёвыми в своей сумме, если у вас есть много видимых объектов.
All this “per object” CPU usage is resource-intensive, so if you have lots of visible objects, it can add up. For example, if you have a thousand triangles, it is much easier on the CPU if they are all in one mesh, rather than in one mesh per triangle (adding up to 1000 meshes). The cost of both scenarios on the GPU is very similar, but the work done by the CPU to render a thousand objects (instead of one) is significantly higher.
Reduce the visible object count. To reduce the amount of work the CPU needs to do:
- Объединяйте близко расположенные объекты: вручную или используя инструмент draw call batching в Unity.
- Используйте меньше материалов, объединяйте текстуры в большие текстурные атласы.
- Используйте меньше объектов, которые должны визуализироваться несколько раз (отражения, тени, попиксельные источники света и т. п., смотрите ниже).
Объединяйте объекты так, чтобы каждый меш содержал хотя бы несколько сотен треугольников и использоват только один Материал . Важно понимать, что объединение двух объектов, использующих разные материалы, не даст увеличения производительности. Основная причина, по которой два меша используют разные материалы, состоит в том, что они использують разные текстуры. Для оптимизации производительности CPU нужно убедиться, что объекты, которые вы объединяете, используют одну текстуру.
Однако, когда вы используете много пиксельных источников света при Forward rendering path, бывают ситуации, в которых не имеет смысла объединять объекты, это более подробно описано ниже.
GPU: Оптимизация геометрии моделей
There are two basic rules for optimizing the geometry of a model:
- Не используйте треугольников больше, чем необходимо
- Старайтесь держать количество швов на UV-карте и количество жёстких рёбер (удваивающих вершины) как можно более низким
Следует отметить, что количество вершин, которое обрабатывает видеокарта, обычно не совпадает с количеством, показываемым 3D-приложением. Приложения для моделирования обычно показывают геометрическое количество вершин, то есть, количество угловых точек, составляющих модель. Для видеокарты некоторые геометрические вершины необходимо разбить на несколько логических вершин для корректной визуализации. Вершина может быть разбита на несколько, если она имеет несколько нормалей, UV-координат или вертексных цветов. Следовательно, количество вершин в Unity неизменно выше, чем количество вершин в 3D-приложении.
В то время как количество геометрии в моделях оказывает влияние в первую очередь на GPU, некоторые функции Unity предполагают обработку моделей и на CPU, например mesh skinning.
Самое быстрое освещение — это то, которое не рассчитывается. Используйте карты освещения для запекания статичного освещения вместо расчёта освещения в каждом кадре. Процесс создания карт освещения требует много времени, чем простое размещения источников света в сцене, но:
- Это намного быстрее работает (в 2–3 раза по сравнению с 2 пиксельными источниками света)
- Это выглядит лучше, так как вы можете запечь глобальное освещение и с более высоким качеством
Во многих случаях можно заменить размещение источников света правильной настройков шейдеров и контента. Для примера, вместо размещения источника света прямо перед камерой для получения эффекта “подсветка краёв модели” (rim lighting), проще добавить расчёт этого эффекта прямо в шейдере.
Освещение в forward rendering
Освещение в forward rendering
Пиксельное динамическое освещение добавит затраты на визуализацию каждого пикселя и может привести к появлению объектов, визуализируемых в несколько проходов. На маломощных устройствах, таких как мобильные устройства или дешёвые PC, следует избегать использования более чем одного пиксельного источника света , освещающего каждый отдельный объект, и стараться использовать карты освещения. Вершинное динамическое освещение может добавить затраты для случаев вершинных трансформаций. Старайтесь избегать ситуаций, когда несколько источников света освещают один объект.
Если вы используете пиксельное освещение, то каждлый меш будет визуализирован столько раз, сколько пиксельных источников света его освещает. Если вы объедините два меша, находящихся далеко друг от друга, то это увеличит габариты меша. Все пиксельные источники света, освещавшие каждую часть объединённого меша, будут освещать теперь этот меш, поэтому количество проходов визуализации, необходимое для этого меша, увеличится. Как правило, число проходов для объединённого меша равно сумме проходов для составивших его частей, в результате чего нет выигрыша от объединения. По этой причине не стоит объединять меши, которые достаточно далеко друг от друга, чтобы быть освещёнными разными пиксельными источниками света.
В процессе визуализации Unity находит все источники света вокруг меша и рассчитывает их важность для данного меша. В настройках Quality Settings можно задать, сколько источников света в конце концов может использоваться для освещения каждого меша. Для каждого источника света его приоритет вычисляется на основании расстояния до меша и яркости этого источника света. Также имеет значение параметр Render Mode внутри компонента Light, который может принимать два значения: Important или Not Important . Источники света, помеченные как Not Important имеют более низкий приоритет.
Для примера рассмотрим игру, где игрок управляет автомобилем, движущимся в темноте со включёнными фарами. Скорее всего, передние фары будут наиболее важным источником света в игре и параметр Render Mode будет установлен для них в значение Important . Задние огни будут менее важны, не оказывая значительного влияния на конечное изображения, так что для них Render Mode можно установить в Not Important , сэкономив тем самым аппаратные ресурсы.
Оптимизация пиксельного освещения сохраняет ресурсы и CPU и GPU: CPU делает меньше draw calls, а GPU обрабатывает меньше вершин и растеризует меньше пикселей для каждого дополнительного объекта.
GPU: сжатие текстур и мипмапы
Использование сжатых текстур уменьшает размер ваших текстур (в результате они быстрее загружаются и занимают меньше памяти), а также может значительно повысить производительность. Сжатые текстуры используют малую часть пропускной способности памяти, в сравнении с 32-битными RGBA-текстурами.
Использование мипмап для текстур
Как правило, параметр импорта Generate Mip Maps включён для текстур, используемых в 3D-сцене. В этом случае сжатие текстур поможет ограничить количество текстурных данных, транспортируемых в GPU при визуализации. Мимпапы позволяют GPU использовать для маленьких треугольников текстуры пониженного разрешения.
Есть исключение из этого правила: когда один тексель (пиксель текстуры) соответствует одному пикселю экрана, что встречается в элементах пользовательского интерфейса и в 2D-играх.
LOD и послойное задание дистанции для сulling
Culling objects involves making objects invisible. This is an effective way to reduce both the CPU and GPU load.
В некоторых играх целесообразно обрезать мелкие объекты более агрессивно, чем крупные, чтобы снизить разницу между нагрузкой на CPU и GPU. Для примера, маленькие камни и трава могут обрезаться на меньшей дистанции, чем большие здания.
There are a number of ways you can achieve this:
- Use the Level Of Detail system
- Manually set per-layer culling distances on the camera
Это может быть достигнуто использованием системы Level Of Detail или ручной настройкой дистанции обрезки для камеры по слоям. Вы можете поместить мелкие объекты в отдельный слой и задать ему дистанцию обрезки, используя свойство Camera.layerCullDistances.
Тени в реальном времени
Тени в реальном времени хорошо выглядят, но они могут сильно снижать производительность, одновременно добавляя дополнительные draw calls для CPU и дополнительную обработку для GPU. Подробности даны на странице Shadows.
GPU: советы для написания высокопроизводительных шейдеров
Different platforms have vastly different performance capabilities; a high-end PC GPU can handle much more in terms of graphics and shaders than a low-end mobile GPU. The same is true even on a single platform; a fast GPU is dozens of times faster than a slow integrated GPU.
Имейте в виду, что производительность GPU на мобильных устройствах и PC начального уровня скорее всего будет намного ниже, чем на PC, который вы используете для разработки. Как правило, шейдеры нужно вручную оптимизировать, чтобы уменьшить количество расчётов и чтений текстуры для получения высокой производительности. Для примера, некоторые встроенные в Unity шейдеры имеют “мобильные” эквиваленты, которые работают намного быстрее за счёт некоторых ограничений и упрощений.
Ниже приведены рекомендации, которые важны для GPU в мобильных устройствах и PC низкого уровня:
Сложные математические операции
Transcendental mathematical functions (such as pow , exp , log , cos , sin , tan ) are quite resource-intensive, so avoid using them where possible. Consider using lookup textures as an alternative to complex math calculations if applicable.
Avoid writing your own operations (such as normalize , dot , inversesqrt ). Unity’s built-in options ensure that the driver can generate much better code. Remember that the Alpha Test ( discard ) operation often makes your fragment shader slower.
Операции с плавающей точкой
While the precision ( float vs half vs fixed ) of floating point variables is largely ignored on desktop GPUs, it is quite important to get a good performance on mobile GPUs. See the Shader Data Types and Precision page for details.
Подробности о производительности шейдеров можно прочитать на странице Shader Performance.
Список шагов для увеличения производительности вашей игры
- Сохраняйте количество вершин между 200 000 и 3 000 000 в каждом кадре, если целевая платформа — PC
- Если вы используете встроенные шейдеры, проверьте категории шейдеров Mobile и Unlit. Они прекрасно работают и на немобильных платформ, но являются упрощёнными версиями более сложных шейдеров.
- Уменьшите количество различных материалов в сцене — используйте один материал для нескольких объектов, где это возможно.
- Установите свойство Static для неподвижных объектов, чтобы использовать внутреннию оптимизацию static batching.
- Only have a single (preferably directional) pixel light affecting your geometry, rather than multiples.
- Bake lighting rather than using dynamic lighting.
- Используйте сжатие текстур, когда это возможно, а также отдавайте предпочтение 16-битным текстурами перед 32-битными.
- Avoid using fog where possible.
- Узнайте преимущества технологии Occlusion Culling и используйте её для снижения количества видимой геометрии и количества draw calls в случаях со сложными статичными сценами с большим количеством перекрывающих друг друга объектов. Планируйте свои игровые уровни с учётом этой технологии.
- Используйте скайбоксы для имитации далеко расположенной геометрии.
- Используйте пиксельные шейдеры или инструменты для совмещения текстур, чтобы смешивать текстуры вместо многопроходной визуализации.
- Use half precision variables where possible.
- Сводите к минимуму количество сложных математических операций в пиксельных шейдерах: pow , sin , cos и т. п.
- Используйте меньше текстур.
- Unity Profiler Window. Производительность освещения
4 способа увеличить скорость рендеринга в Cycles
Знаете ли Вы, что разработка внутреннего движка рендеринга Blender была прекращена более 2-х лет назад? Разработчики только закрывают в нем критические ошибки, а все основные силы были брошены на улучшение Cycles.
Перевод урока с сайта BlenderGuru.com
Те, кто давно работает в blender, заметили тот факт, что движок Cycles значительно медленнее родного движка blender. В 2012 году на конференции Thomas Dinges (разработчик) сказал, примерно, следующее:
Внутренний движок был создан для скорости, и если Вам необходим реализм, то придется подождать. Cycles, наоборот, создавался для реализма, и если необходимо увеличить скорость, то придется им пожертвовать.
Вот эти обещанные 4 способа ускорения процесса рендеринга в Cycles:
Переключиться на GPU-рендеринг

Для многих это покажется очевидным, но есть масса людей незнающих всех возможностей своего железа. Возьмем эту сцену для примера:
- На CPU время рендеринга заняло 9 минут 34 секунды.
- На GPU (GeForce GTX 560) время рендеринга заняло 46 секунд.

Простым изменением одной настройки мы увеличили скорость в 12 раз! Этот способ самый эффективный, и при этом он никак не отражается на качестве финального результата.
Чтобы его активировать нужно перейти в меню File -> User Preferences -> System и в меню Compute Device выбрать CUDA. После этого на панели рендеринга у Вас появится возможность выбрать в качестве вычислительного устройства Вашу видеокарту.
Полноценную поддержку получили видеокарты серий 4xx, 5xx, 6xx, 7xx и выше (CUDA 2.0 и выше). На моделях серий 8xxx, 9xxx, 2xx (CUDA 1.x) присутствует масса ограничений, и для рендеринга их использовать не рекомендуется.
Уменьшить количество отражений света
Одной из основных причин, по которым рендеринг в Cycles занимает много времени, является просчитывание отражения света от поверхностей. Благодаря данной функции сцена наполняется светом таким образом, как это происходит в реальности, и за счет этого выглядит очень реалистично. К сожалению, за реализм и качество нужно платить, поэтому приходится искать компромисс.

По умолчанию значение максимального числа отражений света установлено 8. Во многих ситуациях это излишне. Для большинства сцен будет достаточно установить значение равным 4.
Чтобы изменить количество отражений, перейдите на вкладку Render и в меню Light Paths установите минимальное значение 0, а максимальное настолько низким, насколько позволяет уровень реализма Вашей сцены. Регулируйте данные значения под каждую сцену для достижения лучшего реализма, но не в ущерб времени рендеринга. Для еще более точной настройки можете регулировать значения diffuse, glossy и transmission.
Изменить размер плитки
Следующим способом, повышающим скорость работы Cycles, является уменьшение/увеличение размера плитки. Что за плитки? Это те квадратики, которые появляются во время рендеринга в Blender.
Изменить размер плиток можно на вкладке Render в меню Perfomance.
Плитки хороши тем, что позволяют процессору сосредоточиться на небольшом участке изображения и экономить память. Проделав тесты в сцене с фруктами получились следующие результаты: 
Следует заметить, что данные результаты не являются окончательными! Скорость рендеринга зависит от типа ОС (х86-х64), модели видеокарты, процессора, текущей сцены и т.д. Подбирайте размер плитки конкретно под Ваш компьютер.
Уменьшить количество образцов (samples)
Как бы логично это не звучало, но «семплы» являются наибольшими пожирателями времени в Cycles. Чем их меньше, тем больше шума будет присутствовать на изображении. Поэтому, установив большее их значение, Вы значительно повышаете качество изображения, но наступает момент, когда цель перестает оправдывать средства. Взгляните на данный пример:


Вы действительно считаете, что эти 3000 семплов были здесь необходимы? Если не вдаваться в подробности и не выискивать с лупой какие-либо дефекты, то становится очевидным, что во втором примере 12 минут времени процессора были потрачены впустую (как бы грубо это не звучало). Иногда лучше небольшой шум убрать при помощи, всем известного, Photoshop, что будет значительно быстрее, нежели добиваться идеально чистой картинки с помощью рендеринга.
Как итог подойдет одна хорошая пословица: «Не стреляйте из пушки по воробьям». Во многих ситуациях лишние старания никто не заметит. Лучше сэкономленное время потратить на создание чего-нибудь нового, чем часами созерцать появление плиточек на мониторе.
