Как сделать шейдеры в юнити 3д

Добавил пользователь Валентин П.
Обновлено: 05.10.2024

Приветствую всех друзья! В прошлой статье я рассказал о настройках редактора в окне настроек проекта. Сегодня я продолжу цикл статей о настройках проекта, и на очереди у нас вкладка настройки графики.

Для настройки графики в вашем проекте, необходимо пройти по пути Edit\Project Settings и выбрать вкладку Graphics .

Scriptable Render Pipeline Settings.

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

Camera Settings.

Эта группа настроек управляет различными видами рендеринга.

  • Transparency Sort Mode – определяет порядок отображения объектов по их расстоянию вдоль определенной оси. Рендеринг в Unity сортируется по нескольким критериям, таким как номер слоя или расстояние до камеры. Обычно это полезно для 2D разработки: например, сортировка спрайтов по высоте или вдоль оси Y .
  1. Default – сортировка объектов в зависимости от режима камеры.
  2. Perspective – сортировка объектов на основе вида перспективы.
  3. Orthographic – сортировка объектов на основе ортографического вида.
  4. 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 .
  1. FP16 – формат, использующий 16 бит с плавающей точкой на канал.
  2. R11G11B10 – формат, использующий по 11 бит с плавающей точкой на каналы R и G , и 10 бит с плавающей точкой на канал B .
  • Rendering Path – выберите как Unity должен отображать графику. Различные пути рендеринга влияют на производительность вашей игры, а также на то, как рассчитываются освещение и затенение. Некоторые пути больше подходят для различных платформ и оборудования, чем другие. Отложенный ( Deferred ) рендеринг не поддерживается при использовании ортогональной проекции. Если режим проекции камеры установлен на ортогональный, то эти значения переопределяются, и камера всегда использует прямой ( Forward ) рендеринг.
  1. Forward – Традиционный путь рендеринга. Он поддерживает все типичные графические функции Unity (карты нормалей, попиксельное освещение, тени и так далее). Однако в соответствии с настройками по умолчанию только небольшое количество самых ярких источников света рендерят свет в попиксельном режиме. Остальные источники света вычисляются на вершинах объекта или на каждом объекте.
  2. Deferred – отложенное затенение обладает наибольшей точностью освещения и теней, и лучше всего подходит, если у вас есть много источников света в реальном времени. Это требует определенного уровня аппаратной поддержки.
  3. Legacy Vertex Lit – это путь рендеринга с самой низкой точностью освещения и отсутствием поддержки теней в реальном времени. Это подмножество пути прямого ( Forward ) рендеринга.
  4. Legacy Deferred (light prepass) – Отложенный рендеринг (устаревший) похоже на его собрата отложенное затенение, просто использует другую технику с различными компромиссами. Он не поддерживает стандартный шейдер Unity 5 на основе физики ( PBR шейдер появился с 5 версии Unity).
  • Realtime Global Illumination CPU Usage – выберите какой объем использования ЦП следует назначить для расчетов освещения во время выполнения. Увеличение этого показателя заставляет систему быстрее реагировать на изменения освещения за счет использования большего количества процессорного времени. Некоторые платформы позволяют всем процессорам быть занятыми рабочими потоками, тогда как на других применяют максимумы. К примеру, Xbox One и PS4 позволяют использовать не более 4 процессорных ядер. Для устройств Android , если это архитектура bigLittle , используются только маленькие процессоры. В противном случае максимум на один меньше, чем общее количество процессоров.
  1. Low – 25% потоков ЦП используются в качестве рабочих потоков.
  2. Medium - 50% потоков ЦП используются в качестве рабочих потоков.
  3. High - 75% потоков ЦП используются в качестве рабочих потоков.
  4. 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 :

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

  • Strip Unused (Default value) – когда Unity создает билд, он включает в себя только те варианты шейдеров, которые по меньшей мере имеют хотя бы один материал с ссылкой на шейдер и включенным Enable instancing . Unity удаляет все шейдеры, на которые не ссылаются материалы с отключенными Enable instancing .
  • Strip All – удаление всех экземпляров вариантов шейдера, даже если они используются.
  • Keep All – сохраняет все варианты экземпляров шейдеров, даже если они не используются.

Shader preloading.

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

На сегодня это все. Следующая статья будет посвящена вкладке Physics в окне настроек проекта в Unity. Спасибо всем, кто дочитал эту статью до конца, подписывайтесь на канал, ставьте лайки, а для тех, у кого появились вопросы - спрашивайте в комментариях! А если вы хотите помочь данному каналу в развитии – делитесь этой статьей с друзьями в социальных сетях!

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


Разработка шейдеров в Unity традиционно была вотчиной тех, кто имеет опыт программирования. Shader Graph открывает эту сферу художникам и другим сотрудникам студии, упрощая создание шейдеров. Просто объедините узлы в сеть графов — вы увидите результат изменений сразу же. Средство можно использовать как с High Definition Render Pipeline, так и с Universal Render Pipeline.


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


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

Система Shader Graph:

  • Предназначена для работы с функцией Scriptable Render Pipeline. Главные узлы, которые работают с Universal Render Pipeline и High Definition Render Pipeline (HDRP), входят в стандартный комплект установки.
  • Поддерживает расширение для работы с любым процессом рендеринга.
  • Позволяет задать собственное поведение узла непосредственно в шейдерном графе или через файлы HLSL.


Теперь вы можете создавать шейдеры в графическом интерфейсе Shader Graph и использовать их в Visual Effect Graph для изменения внешнего вида и методов отрисовки качественных визуальных эффектов.

Модуль Blackboard теперь можно использовать для присвоения ключевых слов шейдерам, создавая таким образом статичные ветки в графе. Это позволяет оптимизировать шейдеры с помощью таких систем, как Shader Level of Detail (LOD).

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

В этом выпуске также реализована поддержка привязки скелета к вершинам для анимации на основе DOTS — это возможность создавать более реалистичные эффекты для воды и растений.

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

Смотрите наши официальные доклады и обучающие материалы по созданию шейдеров


Что нового в Shader Graph: готовность к профессиональному использованию

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


Шейдер Distortion в Unity 2019 с помощью Shader Graph! (обучающий материал)

Из этого видео вы научитесь создавать шейдер Distortion с помощью Shader Graph в Unity 2019, узнаете, как сделать работу удобнее, и сможете управлять производительностью рендеринга.


Разработка шейдера со смещением вершин в Unity 2018.3

В этом видео мы покажем метод создания интерактивного эффекта смещения вершин с помощью Unity Shader Graph и Universal Render Pipeline.


Порталы в Unity с помощью Shader Graph! (обучающий материал)

Узнайте о том, как создать эффект портала с помощью Unity Universal Render Pipeline и Shader Graph. Загрузите проект и испытайте его в деле.


Наилучшие методики работы в Shader Graph

В этом докладе рассматриваются принципы работы системы, способы обхода распространенных ошибок и возможности Shader Graph.


Введение в Shader Graph

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

Создавайте продвинутые эффекты


Настройки освещения в Shader Graph: расширение возможностей графов в Unity 2019

С выпуском Unity 2019.1 пакет Shader Graph официально получает статус готового к использованию! Unity 2019.2 предлагает новые функции и возможности, а также пример проекта.


Введение в Shader Graph: создавайте собственные шейдеры в визуальном редакторе

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


Создание интерактивного вершинного эффекта в Shader Graph

Мы создали пример эффекта с интерактивным смещением вершин с помощью Shader Graph и LWRP, который поможет вам использовать данные функции для создания эффектов. В этой статье рассматривается процесс разработки эффекта.


Обновление Shader Graph в Unity 2018.3: узел Lit Master

В Unity 2018.3 появится новый мастер-узел HDRP для Shader Graph. Он называется Lit Master и открывает доступ к большинству улучшенных функций шейдинга HDRP в Shader Graph.


Движущиеся картины: создание анимированных материалов с Shader Graph

В Unity 2018.2 мы добавили вход Vertex Position в Shader Graph, реализовав возможность настраивать и анимировать меши. Узнайте о способах разработки шейдеров с анимацией вершин и о типичных вариантах реализации, например, шейдерах ветра и воды.


Обновления Shader Graph и пример проекта

В Unity 2018.1 появился новый инструмент Shader Graph, который позволяет создавать собственные шейдеры с помощью графического интерфейса. С тех пор мы добавили много новых и интересных функций. Познакомьтесь с примерами использования в демонстрационном проекте.

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

Во-вторых, принцип реализации

1. Первый канал, пусть вершина объекта простирается вдоль нормали как точка штриха;

2. Второй канал показывает исходный цвет и текстуру объекта;

3. Два канала вместе образуют эффект контура объекта;

Три вопроса, требующие внимания

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

3. Учтите, что этот метод обводки не рекомендуется для острых предметов, эффект будет неправильным, например кубиками и т. Д.

В-четвертых, предварительный просмотр эффекта

Пять этапов реализации

1. Создайте новый проект Unity, импортируйте модель в проект, создайте новый скрипт шейдера и создайте новый соответствующий материал.


2. Напишите скрипт шейдера следующим образом.





3. Когда скрипт шейдера "Queue" = "Geometry" и канал обводки не закрывается для записи глубины (и ZWrite off не добавляется), эффект будет следующим.



5. При использовании шейдера на острых объектах эффект следующий.


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

Unity3D

Написание шейдеров для Unity3D (Туториалы, руководства, статьи, информация)

Подборка ссылок на различные материалы и статьи по данной теме:

Unity3D

Малов Алексей Николаевич
ст. преподаватель каф. ИиСП
МарГТУ
Лекция записана в Марийском Государственном Техническом Университете, г. Йошкар-Ола, 2009 г. В лекции рассказывается об использовании шейдеров и языка программирования шейдеров GLSL, предоставляющих программисту возможность управления процессом обработки вершин и фрагментов.

Unity3D

Unity3D

Очень полезная и наиболе полная книга по шейдерам!
(К сожалению на английском. )

Читайте также: