Приветствую всех друзья! В прошлой статье я рассказал о настройках редактора в окне настроек проекта. Сегодня я продолжу цикл статей о настройках проекта, и на очереди у нас вкладка настройки графики.
Для настройки графики в вашем проекте, необходимо пройти по пути Edit\Project Settings и выбрать вкладку Graphics.
Scriptable Render Pipeline Settings.
Данный параметр позволяет вам определить ряд команд, чтобы точно управлять очередью отрисовки в сцене (вместо использования конвейера отрисовки по умолчанию, который использует Unity). Это очень большая тема, о которой еще выйдет серия статей.
Camera Settings.
Эта группа настроек управляет различными видами рендеринга.
- Transparency Sort Mode – определяет порядок отображения объектов по их расстоянию вдоль определенной оси. Рендеринг в Unity сортируется по нескольким критериям, таким как номер слоя или расстояние до камеры. Обычно это полезно для 2D разработки: например, сортировка спрайтов по высоте или вдоль оси Y.
- Default – сортировка объектов в зависимости от режима камеры.
- Perspective – сортировка объектов на основе вида перспективы.
- Orthographic – сортировка объектов на основе ортографического вида.
- Custom Axis – сортировка объектов на основе режима сортировки, определённого с помощью Transparency Sort Axis.
- Transparency Sort Axis – определяет пользовательский режим сортировки прозрачности.
Tier Settings.
Эти настройки позволяют вносить специфические для платформы корректировки в рендеринг и компиляцию шейдеров, путем настройки встроенных определений. Например, это можно использовать для включения каскадных теней на высокоуровневых IOS устройствах, но отключить их на низкопроизводительных устройствах, таким образом увеличив производительность игры. Уровни (Tiers) определены в библиотеке Rendering.GraphicsTier.
- Standard Shader Quality – установите качество стандартного шейдера (о нем еще будет отдельная статья) на высокий, средний или низкий уровень.
- Reflection Probes Box Projection – включает проекцию для отражения UV карт на Reflection Probes (о них также будет отдельная статья).
- Reflection Probes Blending – включает смешивание Reflection Probes.
- Detail Normal Map – включает Detail Normal Map если она назначена.
- Enable Semitransparent Shadows – включает полупрозрачные тени. Это также добавляет или удаляет определение для компилятора шейдеров UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS.
- Enable Light Probe Proxy Volume – включает рендеринг 3D сетки из интерполированных Light Probes (по ним также будет отдельная статья).
- Cascaded Shadows – включает использование каскадных карт теней. Это также добавляет или удаляет определение компилятора шейдеров UNITY_NO_SREENSPACE_SHADOWS.
- Prefer 32 bit shadow maps – включите 32 битную карту теней, когда вы нацелены сделать билд на PS4, или использовать платформы, которые используют DX11 или DX12. Большинство платформ имеют фиксированный формат карты теней, который вы не можете настроить. Они отличаются по формату и могут быть 16,24 или 32 битными, а также могут быть либо с плавающей точкой, либо целочисленными. 32 битные теневые карты дают более качественные тени, чем 16 битные, но используют увеличенное количество памяти и пропускную способность на графическом процессоре. Также при использовании 32 битных карт теней не забудьте проверить чтобы буфер глубины был установлен на 32 разрядный.
- Use HDR – включает рендеринг с высоким динамическим диапазоном для этого уровня.
- HDR Mode – выберите формат, который будет использоваться для буфера HDR, когда HDR включен для текущего графического уровня. По умолчанию используется FP16.
- FP16 – формат, использующий 16 бит с плавающей точкой на канал.
- R11G11B10 – формат, использующий по 11 бит с плавающей точкой на каналы R и G, и 10 бит с плавающей точкой на канал B.
- Rendering Path – выберите как Unity должен отображать графику. Различные пути рендеринга влияют на производительность вашей игры, а также на то, как рассчитываются освещение и затенение. Некоторые пути больше подходят для различных платформ и оборудования, чем другие. Отложенный (Deferred) рендеринг не поддерживается при использовании ортогональной проекции. Если режим проекции камеры установлен на ортогональный, то эти значения переопределяются, и камера всегда использует прямой (Forward) рендеринг.
- Forward – Традиционный путь рендеринга. Он поддерживает все типичные графические функции Unity (карты нормалей, попиксельное освещение, тени и так далее). Однако в соответствии с настройками по умолчанию только небольшое количество самых ярких источников света рендерят свет в попиксельном режиме. Остальные источники света вычисляются на вершинах объекта или на каждом объекте.
- Deferred – отложенное затенение обладает наибольшей точностью освещения и теней, и лучше всего подходит, если у вас есть много источников света в реальном времени. Это требует определенного уровня аппаратной поддержки.
- Legacy Vertex Lit – это путь рендеринга с самой низкой точностью освещения и отсутствием поддержки теней в реальном времени. Это подмножество пути прямого (Forward) рендеринга.
- Legacy Deferred (light prepass) – Отложенный рендеринг (устаревший) похоже на его собрата отложенное затенение, просто использует другую технику с различными компромиссами. Он не поддерживает стандартный шейдер Unity 5 на основе физики (PBR шейдер появился с 5 версии Unity).
- Realtime Global Illumination CPU Usage – выберите какой объем использования ЦП следует назначить для расчетов освещения во время выполнения. Увеличение этого показателя заставляет систему быстрее реагировать на изменения освещения за счет использования большего количества процессорного времени. Некоторые платформы позволяют всем процессорам быть занятыми рабочими потоками, тогда как на других применяют максимумы. К примеру, Xbox One и PS4 позволяют использовать не более 4 процессорных ядер. Для устройств Android, если это архитектура bigLittle, используются только маленькие процессоры. В противном случае максимум на один меньше, чем общее количество процессоров.
- Low – 25% потоков ЦП используются в качестве рабочих потоков.
- Medium - 50% потоков ЦП используются в качестве рабочих потоков.
- High - 75% потоков ЦП используются в качестве рабочих потоков.
- Unlimited - 100% потоков ЦП используются в качестве рабочих потоков.
Built-in shader settings.
Используйте эти параметры, чтобы указать, какой шейдер следует использовать для каждой из перечисленных функций.
- Deferred – используйте эту функцию с отложенным затенением.
- Deferred Reflection - используйте эту функцию с Reflection Probes вдоль отложенного освещения.
- Screen Space shadows - используйте эту функцию с каскадными теневыми картами для направленного освещения на платформах ПК/Консолях.
- Legacy deferred - используйте эту функцию с устаревшим отложенным освещением.
- Motion vectors – используется для расчета вектора движения на основе объекта.
- Lens Flare - используйте эту функцию с Lens Flare (о них будет отдельная статья).
- Light Halo - используйте эту функцию с Light Halo (о них будет отдельная статья).
Для каждой из этих функций можно выбрать, какой тип шейдера будет использоваться:
- No Support – отключает эти расчеты. Используйте этот параметр, если вы не используете отложенное затенение или освещение. Это позволит сэкономить некоторое пространство во встроенных файлах игровых данных.
- Built-in Shader – для выполнения вычислений используются встроенные шейдеры Unity. Это значение по умолчанию.
- Custom Shader – для выполнения вычислений используется ваш собственный совместимый шейдер. Это позволяет выполнять глубокую настройку отложенного рендеринга.
Когда вы выбираете пункт Custom Shader, начинает отображаться свойство reference под свойством feature, в котором можно задать ссылку на шейдер, который вы хотите использовать.
Always-included Shaders.
Укажите список шейдеров, которые всегда хранятся вместе с проектом, даже если они фактически не используются в вашей сцене. Важно добавить шейдеры, используемые в AssetBundles в этот список, чтобы обеспечить к ним доступ.
Чтобы добавить шейдер в список, увеличьте его значение Size. Для удаления наоборот уменьшите свойство Size. Чтобы удалить шейдер, который не является последним в списке, можно установить ему значение None.
Shader stripping.
Уменьшите размер данных сборки и увеличьте время загрузки, удалив некоторые шейдеры. По умолчанию Unity смотрит на ваши сцены и настройки lightmapping, чтобы выяснить, какие варианты тумана и lightmapping не используются, и пропускает соответствующие варианты шейдеров. Однако вы можете выбрать определенные режимы, если вы создаете бандлы ассетов (asset bundles), чтобы гарантировать, что режимы, которые вы хотите использовать, включены.
По умолчанию свойство Lightmap modes имеет значение Automatic, что означает, что Unity решает, какие варианты шейдера пропустить.
Чтобы указать, какие режимы использовать самостоятельно, измените этот параметр на пользовательский и включите или отключите следующие режимы lightmapping:
- Baked Non-Directional
- Baked Directional
- Realtime Non-Directional
- Realtime Directional
- Baked Shadowmask
- Baked Subtractive
Та же история касается и тумана, поэтому для указания режима использования самостоятельно, измените параметр на пользовательский и включите или отключите следующие режимы fog:
- Linear
- Exponential
- Exponential Squared
Unity удаляет экземпляры вариантов шейдеров, если инстанциирование GPU не включено ни на одном игровом объекте на сцене. Вы можете использовать инстанциирование вариантов, чтобы переопределить стандартное поведение шейдера.
- Strip Unused (Default value) – когда Unity создает билд, он включает в себя только те варианты шейдеров, которые по меньшей мере имеют хотя бы один материал с ссылкой на шейдер и включенным Enable instancing. Unity удаляет все шейдеры, на которые не ссылаются материалы с отключенными Enable instancing.
- Strip All – удаление всех экземпляров вариантов шейдера, даже если они используются.
- Keep All – сохраняет все варианты экземпляров шейдеров, даже если они не используются.
Shader preloading.
Укажите список вариантов шейдеров из коллекции ассетов для предварительной загрузки во время загрузки игры. Указанные в этом списке варианты шейдеров загружаются в течении всего срока жизни приложения. Используйте его для предварительной загрузки очень часто используемых шейдеров.
На сегодня это все. Следующая статья будет посвящена вкладке Physics в окне настроек проекта в Unity. Спасибо всем, кто дочитал эту статью до конца, подписывайтесь на канал, ставьте лайки, а для тех, у кого появились вопросы - спрашивайте в комментариях! А если вы хотите помочь данному каналу в развитии – делитесь этой статьей с друзьями в социальных сетях!