суббота, 8 июня 2019 г.

Руководство Amplify Shader Editor v.1.6.7


Установка

1. Откройте AmplifyshaderEditor###.unitypackage
2. После загрузки Unity отобразится окно “Importing package” выберите All, и нажмите Import
3. Теперь Amplify Shader Editor установлен в вашем проекте Unity, и он должен иметь следующую структуру каталогов:
YourProject\Assets\AmplifyshaderEditor\
YourProject\Assets\AmplifyshaderEditor\Plugins\
YourProject\Assets\AmplifyshaderEditor\Resources\
YourProject\Assets\AmplifyshaderEditor\Samples\
YourProject\Assets\AmplifyshaderEditor\Templates\
YourProject\Assets\AmplifyshaderEditor\Textures\ 

Редактор


Откройте холст Amplify Shader Editor (Window<Amplify Shader Editor<Open Canvas) закрепите его, используя в отдельном окне или даже на другом мониторе. Редактор открывается автоматически при двойном щелчке на материале или шейдере ASE.


Шейдеры ASE можно создавать непосредственно на вкладке Project или через Меню Assets > Create > Shader > Amplify Surface Shader.


1. Дважды щелкните на шейдере ASE, чтобы открыть его на холсте ASE. Кроме того, вы можете открыть шейдер непосредственно на вкладке Инспектора, нажав кнопку Open в Shader Editor.
2. Назовите свой шейдер непосредственно на вкладке Node Properties, вы можете добавить свою собственную категорию, используя разделитель косой черты (/). Имейте в виду, что имена файлов шейдеров являются уникальными и должны быть установлены вручную на вкладке Project Explorer. Вы можете использовать разные имена для файла и фактического шейдера.
3. В этой области отображается текущий шейдер, щелкнув по нему, вы найдете и выберите шейдер на вкладке Project Explorer. Обратите внимание на зеленый контур, это визуальный помощник, который позволяет узнать, что в настоящий момент открыт только шейдер..


1. Дважды щелкните на материале, который использует шейдер ASE, чтобы открыть шейдер и материал на холсте ASE. Кроме того, вы можете открыть его непосредственно на вкладке инспектора материалов, нажав кнопку Open в Shader Editor.
2. При открытии материала активный шейдер и материал отображаются в нижней области холста. Как и в случае с шейдером, щелкнув по нему, вы найдете и выберите материал на вкладке Project Explorer. Обратите внимание на синий контур, это визуальный помощник, который позволяет узнать, что в настоящий момент открыты и материал, и шейдер.

Взаимодействие Холста и Интерфейса



1. Свойства ноды можно настроить на левой вкладке. Выберите любую ноду или ноду Output, чтобы раскрыть его параметры. Некоторые значения могут быть скорректированы непосредственно в ней самой. Свойства Output всегда отображаются на этой вкладке, если ни одна нода не выбрана. Вкладку Output Node Properties можно свернуть, нажав кнопку «минус» в правом верхнем углу вкладки.
2. Минималистичные кнопки Save/Update/Clear/Edit. Серого цвета, когда недоступны или отключены, зеленого, если актуальны, желтого, если устарели.
Кнопка 1: Обновление шейдера вручную (Сохранить и Обновить)
Кнопка 2: Переключить обновление шейдера LIVE (Автоматическое Сохранить и Обновить)
Кнопка 3: Удалить не подключенные ноды
Кнопка 4: Открыть шейдер в Text Editor
3. Категория и имя шейдера.
4. Настройка холста.
Кнопка 1: Выбрать и сфокусироваться на ноде Output
Кнопка 2: Сфокусироваться на выбранных нодах, сфокусироваться на всей коллекции нод, если ничего не выбрано. Автоматическое увеличение также выполняется двойным нажатием кнопки или двойным нажатием клавиши «F».
5. Вкладка Node Palette это список нод с возможностью поиска, где вы можете их выбирать и перетаскивать непосредственно в область холста. Вкладку Node Palette можно свернуть, нажав кнопку «минус» в верхнем левом углу вкладки.
6. Щелкните правой кнопкой мыши в любом месте на холсте, чтобы вызвать список нод с возможностью поиска, нажмите на имя ноды, чтобы создать ее.
7. Удерживайте клавишу быстрого доступа и щелкните в любом месте холста, чтобы создать новую ноду. Сочетания клавиш отображаются внутри [ ] и располагаются перед соответствующими именами нод на вкладке Palette. Например: клавиша «1» для Float и клавиша «5» для ноды Color.



Данные передаются слева направо  – Input Port > Processed Data > Output Port. Только ноды, прямо или косвенно связанные с нодой Output, анализируются и используются для генерации окончательных инструкций шейдера. Если нода содержит неподключенные входные порты, ASE будет использовать внутренние данные на этапе обработки. Внутренние значения данных можно редактировать через вкладку Node Property.


Ноды Ноды можно выбрать, щелкнув по ним левой кнопкой мыши или левой кнопкой мыши, перетащив выделенную область над ними. Они могут быть добавлены или удалены из выбора, удерживая клавишу «Shift» и нажимая на нее. Нажмите ‘CTRL/CMD+A’, чтобы выбрать все. Отмените выбор всего, щелкнув левой кнопкой мыши по пустому месту на холсте. Переместите выбранные ноды, удерживая левую кнопку мыши над ними и перетаскивая.
Провода Удалите провод, удерживая клавишу «Alt» и щелкнув на порт ноды, или перетащите провод в пустое пространство холста и щелкнув левой кнопкой мыши. Провода, подключенные к выбранным нодам, выделяются для обозначения потока данных от самой левой ноды к самой правой ноде.
Соединения Создайте соединение, щелкнув левой кнопкой мыши и перетащив провод либо из выходного порта ко входному, либо из пустого входного порта в порт выхода. Удерживая левую кнопку мыши на уже подключенном входном порте, он удаляет конец провода и привязывает его к курсору мыши, чтобы вы могли перетащить его на другой порт. Перетащите провод на пустое пространство холста, и автоматически появится контекстное меню, и если выбран тип узла, устанавливается соединение с первым действительным портом.
Порты Выходные порты могут быть подключены к нескольким входным портам, но входные порты принимают только один вход. Провода автоматически привязываются к портам рядом с курсором мыши. Для более легкого использования активная область порта довольно обширна, вы даже можете подключить свои провода непосредственно к имени порта..
Вид Правая или средняя кнопка мыши служит для панорамирования вида. Холст будет прокручиваться автоматически при выборе или перемещении выделенных нод из видимой области рабочей области. Вы можете увеличить/уменьшить масштаб с помощью колесика прокрутки мыши. Степень уменьшения определяется динамически из расположения нод на холсте.
Вкладки Оба окна Node Properties и Node Palette автоматически сворачиваются при уменьшении ширины окна ASE ниже 750 пикселей. Вы всегда можете увеличить их, нажав прямоугольную кнопку.

Режимы Материала и Шейдера



Вы можете работать с ASE в одном из двух режимов, шейдера или материала, в зависимости от того, загружаете ли вы файл шейдера из ассета шейдера или материала. Граница холста служит визуальным индикатором активного режима, зеленый контур отображается в режиме шейдера, а синий контур - в режиме материала.


Значения, установленные в шейдере, обычно называются Default Values(Значения по-умолчанию). Любые изменения, внесенные в Default Values для любого данного шейдера, автоматически влияют на все материалы, использующие его. При одновременном редактировании материала и шейдера обратите особое внимание на то, какие значения изменяются.



В отличие от Default Values шейдера, значения материала могут быть уникальными. Значения материала отображаются только при работе в режиме материала (с открытым материалом и шейдером). Только ноды, которые представляют переменные (Color, Float, Int, Vector, Matrix), имеют раскрывающийся список «Parameter Type» и могут быть установлены в «Property». Default Values  всегда копируются в значения материала при выборе свойства или параметра Property или Uniform. Каждый материал может быть изменен для создания неограниченного количества вариаций, при чем, используя один и тот же шейдер. Вы можете рассматривать свои материалы как экземпляры своего шейдера, каждый экземпляр уникален, но создается с использованием одного набора Default Values.


Copy Values и Paste Values позволяют копировать значения свойств между материалами , используя один и тот же шейдер ASE. Кнопка Open in Shader Editor позволяет быстро открыть как материал, так и шейдер, используемый в Amplify Shader Editor.


Шейдеры также можно открыть непосредственно через вкладку «Inspector», нажав кнопку Open in Shader Editor. Либо нажмите Open in Text Editor чтобы открыть его в текущем редакторе кода.

Нода Output 


Части этого раздела были получены непосредственно из справочной документации по Unity Shader.
Узнать больше:  Unity Shader Reference

Общее

  • Shader Name:  редактируемое текстовое поле, определяющее имя и путь шейдера. Используйте косую черту "/", чтобы определить его категорию и имя; например UserSamples/EnvironmentGradient. Обратите внимание, что имя, отображаемое в этом поле, не совпадает с именем файла, они должны быть установлены индивидуально.
  • Shader Type: в этой области отображается используемый тип шейдера. К ним относится шаблон, который у вас есть в проекте. ASE поставляется с пресетами, эффекты: постобработки, частиц, спрайтов, UI и неосвещенного шейдера. По умолчанию установлен Surface Shader.
  • Light Model: определяет, как поверхности отражают свет, обычно называемый тип используемого шейдера. В настоящее время ASE предлагает Standard(Metallic), Standard Specular, Lambert, Blinn Phong и Custom Lighting  позволяющее создать уникальную модель освещения на основе нодов.
  • Shader Model: при написании в Surface Shaders или других Программах Шейдера, источник HLSL может быть скомпилирован в разные шейдер модели. олее высокие цели компиляции шейдеров позволяют использовать более современные функциональные возможности графического процессора, но могут заставить шейдер не работать на старых графических процессорах или платформах.
  • Precision: Определяет максимальную точность внутренних вычислений, использование более низких типов обеспечивает дополнительное повышенную производительность в обмен на некоторую точность; по умолчанию установлено значение Float - это значение ограничивает все существующие свойства, помещенные на холст.
  • Cull Mode: Front - Не отображается геометрия, обращенная к зрителю, Back - Не отображается геометрия, направленная в сторону от зрителя, Off - Отключение отбраковки - все грани нарисованы (двухсторонний материал); по умолчанию установлено значение Back.
  • Render Path: позволяет вам определить, какой режим (Forward/Deferred) iподдерживается шейдерами; по умолчанию установлено All(все).
  • Cast Shadows: определяет, генерирует ли шейдер проход тени, чтобы иметь возможность отбрасывать тени; все еще могут быть отключены для каждого объекта в компоненте рендеринга материала.
  • Receive Shadows: Определяет, получат ли объекты, использующие шейдер, тени; это включает в себя самозатенение (только с рендерингом вперед) и могут быть отключены для каждого объекта в компоненте рендеринга материала.
  • Queue Index: Значение смещения очереди Рендера, принимает положительные (позже) и отрицательные (раньше) целые числа.
  • Vertex Output: Relative по умолчанию, может быть установлен на absolute;  входной Local Vertex Offset автоматически изменит на Local Vertex Position.
  • LOD: по умолчанию допустимый уровень LOD бесконечен, то есть могут использоваться все шейдеры, поддерживаемые устройством пользователя. Однако в некоторых случаях вы захотите удалить детали шейдера, даже если оборудование может их поддерживать. Справочник по шейдерам Unity
  • Fallback: Устанавливает резервный шейдер из доступных в проекте шейдеров, которые будут использоваться всякий раз, когда определенный проход либо отсутствует, либо не поддерживается основным шейдером.
  • Custom Editor: Пользовательские инспекторы позволяют использовать пользовательский инспектор материалов, по умолчанию используется ASE пользовательский инспектор материалов.
Входы Стандартного Шейдера
  • Albedo: параметр Albedo контролирует основной цвет поверхности шейдера, принимая либо значения цвета, либо карт текстуры.
  • Normal: Карты нормалей - это особый вид текстуры, который позволяет добавлять детали поверхности, такие как информация о затенении, передаваемая из высокополигональных мешей, bumps, grooves и scratches. Вы можете здесь подключать карты нормалей или пользовательские векторы нормалей .
  • Emission: Контролирует цвет и интенсивность света, излучаемого с поверхности, независимо от условий освещения; принимает полные значения RGB.
  • Metallic (рабочая среда только Metallic): При работе в Metallic отражательная способность и световой отклик поверхности изменяются на оба уровня Metallic и Smoothness; оба оттенка серого. Вы можете использовать диапазон значений от 0 до 1, влияющих на всю поверхность, или даже подключить текстуру, которая будет управлять значениями Metallic, предоставляя различные значения для разных областей поверхности; 0 диэлектрический (неметаллический) и 1 полный Metallic.
  • Specular (рабочая среда только  Specular):  При работе в режиме Specular цвет RGB в параметре Specular контролирует силу и цветовой оттенок зеркальной отражательной способности.
  • Smoothness (Обе рабочая среда): Концепция Smoothness применима как к Specular так и Metallic рабочим средам, и работает почти одинаково в обоих; также в оттенках серого. Полностью гладкая поверхность со значением 1 обеспечивает четкие отражения, в то время как шероховатая поверхность, установленная на 0, создает размытый цвет без четких отражений; Это также упоминается как  "Roughness" в некоторых движках.
  • Ambient Occlusion: Вход Occlusion принимает карту текстуры окклюзии или пользовательское значение, которое используется для предоставления информации о том, какие области модели должны отображать высокое или низкое непрямое освещение, которое исходит от окружающего освещения и отражений. Карта occlusion это изображение в градациях серого, где белый цвет указывает на области, которые должны получать полное непрямое освещение, а черный - на непрямое освещение.
  • Transmission: вход Transmission - это высоко оптимизированный способ приближения рассеяния света. Другими словами, он определяет, сколько света проходит через поверхность при освещении сзади, что идеально подходит для менее детализированных объектов, таких как листья, ткань или даже восковые объекты; принимает полные входы RGB.
  • Translucency: вход Translucency позволяет вам аппроксимировать эффекты SSS (Подповерхностное рассеяние) простым и оптимизированным способом, управляя смещением спада угла нормалей света. Обычно используется для эффектов кожи, но достаточно гибок для других целей; принимает полные входы RGB..
  • Refraction (Transparent Render Type): для входа рефракции требуется шейдер с его Render Type установленным на Transparent и используется для имитации эффекта деформации объектов, видимых через среду, например стекло или воду, что достигается с помощью смещения UV на экране который преломляет пиксели фона; принимает полные входы RGB. Этот метод представляет собой простое приближение к световому явлению, которое часто происходит, когда волны распространяются из среды с данным показателем преломления в среду с другой под косым углом.
  • Opacity (Transparent Render Type): вход Opacity требуется шейдер с установленным для него Render Type как Transparent, который отвечает за настройку прозрачности поверхности в целом, используя диапазон значений от 0 до 1, от полностью прозрачного до полностью непрозрачного соответственно; принимает полные входы RGB.
  • Opacity Mask ( Transparent Render Type ): вход Opacity Mask требуется шейдер с установленным для него Render Type set to Transparent или Masked Blend Mode, который работает аналогично Opacity в том смысле, что принимает значение от 0 до 1, от полной прозрачности до полная непрозрачность, но без учета промежуточных значений, что приводит либо к полностью видимым, либо к полностью невидимым поверхностям в определенных областях. Это идеальное решение для материалов, которые определяют сложные твердые поверхности, такие как проволочный меш или звено цепи, поскольку непрозрачные участки будут по-прежнему учитывать освещение; принимает входные данные в оттенках серого..
  • Local Vertex Offset ( Relative Vertex Output ): вход Local Vertex Offset  может использоваться для изменения формы поверхности путем манипулирования вершинами, где координата XYZ будет определять, как каждая вершина будет смещаться относительно своего относительного положения.
  • Local Vertex Position ( Absolute Vertex Output ): вход Local Vertex Position работает аналогично входу Local Vertex Offset, однако вместо смещения каждой вершины относительно ее относительного положения она вместо этого сместит вершины в абсолютном направлении мирового пространства.
  • Local Vertex Normal: вход Local Vertex Normal  позволяет корректировать направление нормали любых смещенных поверхностей, так как Mesh Normals  позволяет корректировать направление нормали любых смещенных поверхностей, так как Normal Reconstruction.
  • Tessellation: вход Tessellation позволяют подразделять треугольники меша, разбивая их на более мелкие треугольники во время выполнения, чтобы увеличить детализацию поверхности любого меша.
  • Debug: вход Debug генерирует шейдер предварительного просмотра, который игнорирует все другие активные входы, рисуя только то, что подключено к его входному порту, без учета освещения. Обратите внимание, что не все ноды или конкретные комбинации можно предварительно просмотреть в режиме отладки.
Blend Mode
  • Режим смешивания: выбранный режим автоматически регулирует доступные параметры; Opaque, Masked, Transparent, Translucent, Alpha Premultiplied or Custom.
  • Render Type: тег RenderType разделяет шейдеры на несколько предопределенных групп; opaque shader(непрозрачный шейдер), или alpha-tested(шейдер с альфа-тестированием) и т. д. Доступные теги: Opaque, Transparent, Transparent Cutout, Background, Overlay, Tree Opaque, Tree Transparent Cutout, Tree Billboard, Grass и Grass Billboard.
  • Render Queue:  очередь рендеринга геометрии оптимизирует порядок рисования объектов для лучшей производительности. В очереди рендеринга, объекты сортируются по расстоянию, начиная рендеринг с самых дальних и заканчивая ближайшими. Доступные параметры: Background, Geometry, Alpha Test, Transparent and Overlay. Каждая последующая очередь обрабатывается после предыдущей, создавая многоуровневую систему.
  • Mask Clip Value: значение по умолчанию для сравнения с непрозрачностью альфа. 0 полностью непрозрачный, 1 полностью замаскированный; по умолчанию 0 Обычно используется в прозрачных материалах.
  • Refraction Layer: когда указанные grabpasses(проходы)  будут смещены на это значение, эффективно создаст многоуровневую систему для эффектов преломления.
  • Alpha To Coverage: включает внутренние возможности MSAA для смешивания альфа-объектов с использованием слоев непрозрачных объектов; доступно только для прямого рендеринга с включенным MSAA.
  • Blend RGB и Blend Alpha: при визуализации графики, после выполнения всех шейдеров и применения всех текстур пиксели записываются на экран. Как они сочетаются с тем, что уже есть, контролируется командой Blend. В настоящее время ASE предлагает режимы Custom, Alpha Blend, Premultiplied, Additive, Soft Additive, Multiplicative и 2x Multiplicative.
    • Blend Factors (SrcFactor & DstFactor): се следующие свойства действительны как для SrcFactor, так и для DstFactor в команде Blend. Источник относится к вычисленному цвету, пункт назначения - это цвет, уже находящийся на экране. Коэффициенты наложения игнорируются, если BlendOp использует логические операции.
      • One The value of one - используйте, чтобы полностью передать исходный или целевой цвет.
      • Zero: значение ноль - используйте это, чтобы удалить либо исходные, либо целевые значения.
      • SrcColor: значение этого этапа умножается на значение исходного цвета.
      • SrcAlpha: значение этого этапа умножается на значение исходного цвета.
      • DstColor: значение этого этапа умножается на значение цвета исходного кадрового буфера.
      • DstAlpha: значение этого этапа умножается на альфа-значение источника буфера кадра.
      • OneMinusSrcColor: значение этого этапа умножается на (1 - исходный цвет).
      • OneMinusSrcAlpha: значение этого этапа умножается на (1 - альфа-источник).
      • OneMinusDstColor: значение этого этапа умножается на (1 - цвет назначения).
      • OneMinusDstAlpha: значение этого этапа умножается на (1 - целевая альфа).
    • Blend Op RGB & Blend Op Alpha: Add, Sub, Rev Sub, Min и Max
  • Color Mask: Устанавливает маску цветового канала, OFF делает ее невидимой.
Stencil Buffer
Трафаретный буфер может использоваться в качестве общего назначения для каждой пиксельной маски для сохранения или удаления пикселей. Обычно это 8-битное целое число на пиксель. Значение может быть записано, увеличено или уменьшено. Последующие draw calls могут проверить это значение, чтобы решить, следует ли отбрасывать пиксель перед запуском пиксельного шейдера. Когда режим Cull установлен на OFF  это меню показывает дополнительный набор вариантов сравнения для использования буфера отдельно от передних и задних граней.
  • Reference: значение для сравнения (если Comp - это что-то другое, чем всегда) и / или значение для записи в буфер (если для замены задано Pass, Fail или ZFail). 0–255 целое число.
  • Read Mask: 8-битная маска в виде целого числа от 0 до 255, используется при сравнении эталонного значения с содержимым буфера (referenceValue & readMask) По умолчанию: 255.
  • Write Mask: 8-битная маска в виде целого числа от 0 до 255, используется при записи в буфер. По умолчанию: 255.
  • Comparison (front and back): функция, используемая для сравнения эталонного значения с текущим содержимым буфера. По умолчанию: всегда.
  • Pass (front and back): что делать с содержимым буфера, если проверка трафарета (и проверка глубины) пройдена. По умолчанию: сохранить.
  • Fail (front and back): что делать с содержимым буфера, если проверка трафарета не пройдена. По умолчанию: сохранить.
  • ZFail (front and back): что делать с содержимым буфера, если трафаретный тест пройден, но тест глубины не пройден. По умолчанию: сохранить.

Tessellation
  • Phong: изменяет положение разделенных граней так, чтобы результирующая поверхность немного повторяла нормали меша; по умолчанию OFF(Выключен).
    • Strength: Сила эффекта 0-1.
  • Type: определяет используемую технологию; Distance Based, Fixed, Edge Length и Edge Length Cull.
  • Tess: коэффициент Тесселяции; 1-32.
  • Min: Минимальное расстояние Тесселяции.
  • Max: Максимальное расстояние Тесселяции.
  • Edge Length: Максимальная длина, которую может иметь край до начала тесселяции.
  • Max Disp: Максимальное смещение за пределы границ усеченного конуса, где участки полигона все еще находятся в тесселяции.


Outline Создает настраиваемый эффект контура, используя технику обратного каркаса
  • Mode: Вершина в режиме offsets смещает каркас на величину, а значение while vertex scale увеличивает на процент.
  • Color: позволяет определить цвет контура.
  • Width: значение, на которое должно быть произведено смещение или масштабирование.
Billboard
  • Type: цилиндрический Billboard будет вращаться только по оси Y, в то время как сферический будет поворачиваться к камере независимо от ее вращения.
  • Ignore Rotation: установка этого параметра будет игнорировать трансформацию вращения Billboard.
Depth
  • ZWrite Mode: Управляет записью пикселей из этого объекта в буфер глубины (по умолчанию On). Если вы рисуете твердые объекты, оставьте его включенным. Если вы рисуете полупрозрачные эффекты, переключитесь на ZWrite Off. Для более подробной информации читайте ниже.
  • ZTest Mode: как проводить глубинное тестирование. По умолчанию LEqual (рисует объекты на расстоянии или на расстоянии как существующие объекты; скрывает объекты за ними). ASE предоставляет ZTest Less, Greater, LEqual, GEqual, Equal, NotEqual и Always.
  • Offset: позволяет указать смещение глубины с двумя параметрами. фактор и единицы. Коэффициент масштабирует максимальный наклон Z по отношению к X или Y многоугольника, а единицы - к минимальному разрешаемому значению буфера глубины. Это позволяет принудительно нарисовать один многоугольник поверх другого, хотя они фактически находятся в одной и той же позиции. Например, Offset 0, –1 притягивает многоугольник ближе к камере, игнорируя наклон полигона, тогда как Offset –1, –1 будет подтягивать многоугольник еще ближе, если смотреть под углом падения.
    • Factor: масштабирует максимальный наклон Z относительно X или Y полигона.
    • Units: Единицы измерения масштабируют минимально разрешаемое значение буфера глубины.
Rendering Options
Здесь можно активировать или деактивировать определенные функции шейдеров, по умолчанию большинство из них будет включено, чтобы имитировать стандартный шейдер Unity.
Rendering Platforms
Определяет, какие платформы поддерживаются; по умолчанию установлено All.
Additional Includes
Позволяет определить относительный путь из шейдера для файла включения cg. Если файл отсутствует или неправильный путь, он не сможет скомпилировать шейдер. «../» можно использовать для перехода в папку.
Additional Pragmas
Позволяет добавлять отдельные прагматические директивы для управления компиляцией и рендерингом шейдера.
Custom SubShader Tags
Позволяет добавлять пользовательские теги подшейдеров для управления рендеринга пользовательских шейдеров.
Material Properties
Material Properties
В этом разделе будут перечислены переменные, для которых установлено Property. Вы изменяете их положение, перетаскивая их.

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

Определенные параметры шейдера, такие как Cull Mode или Stencil, также могут быть настроены с помощью свойств шейдера, Ints и Floats, которые будут специфичными, вместо их обычных предопределенных значений.



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

Функции Шейдеров


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

Хотите поделиться своими творениями с сообществом ASE? Поспособствуйте здесь!


Характеристики

  • Работает со всеми нодами ASE.
  • Настраиваемые ноды Input/Output.
  • Copy&Paste ноды между шейдерами и SF.
  • Поддерживает все типы переменных, включая Material Properties.
  • Многоразовые и уникальные ассеты, не привязанные ни к одному шейдеру или проекту.
  • Беспрепятственный рабочий процесс редактора, drag&drop в любой открытый шейдер или добавление их из Node list.

Сравнение


Прежде всего, сети нодов производят одинаковый эффект прожига. Original не использует шейдерные функции. Version 1 используется SF, который содержит исходную сеть узлов, используемую для создания эффекта прожига, он получает 1 нода Texture Object для маски записи, 1 нода Texture Object для текстуры огня и 1 нода Texture Coordinate. Version 2 проще, чем в предыдущем примере, все генерации эффекта прожига и узлы текстур включены в SF, единственное исключение - нода Texture Coordinate который позволяет пользователям настраивать его поведение. Имейте в виду, что SF не нужно получать какие-либо входные данные, при необходимости выходные данные могут быть полностью сгенерированы на его графике.

Version 1 Пример Функции Шейдера
 

Создание и Использование


Создайте новый Shader Function Asset в Assets > Create > Shaders > Amplify Shader Function.

Ваша вновь созданная Shader Function будет автоматически открыта в редакторе ASE после переименования.
1. Добавьте описание Shader Function здесь. Вы также можете изменить порядок ваших Function Inputs/Outputs и Material Properties перетащив их в нужное положение. Порядок, установленный в вашей SF, будет таким же, как на вкладке инспектор Material.
2. Создайте 2 нода Input или больше. По умолчанию всегда есть 1 нода Output но вы можете добавить столько, сколько необходимо. Вы также можете использовать другие SF-узлы внутри своего активного SF, но, чтобы избежать Shader Function Loops, вы не можете добавить функцию на свой холст.
3. Выберите  ноду Inputчтобы установить используемый тип, или переключите параметр Auto Cast чтобы автоматизировать процедуру непосредственно на левой вкладке, как если бы вы использовали другие свойства ноды.
4. Соедините полученные output(s) напрямую с нодой(ами) Output.
5.  Сохраните изменения и нажмите Return чтобы вернуться к ранее открытым Шейдерам или Материалам, если таковые имеются.
1. Добавьте созданную Shader Function в свой шейдер, выбрав ее непосредственно из Node List. Ноды SF можно использовать так же, как и любые другие узлы ASE, их можно дублировать, копировать или удалять.
2. Кроме того, вы можете перетаскивать Shader Functionsпрямо на холст вашего редактора.
3. Дважды щелкните по ноде SF, чтобы открыть ее.

Горячие клавиши

Режим  Colored Line



Нажмите [W], чтобы переключиться на него

Node Previews



Нажмите [ P ] чтобы переключиться на node previews

Режим Multi-line

Нажмите [ CTRL + W ] чтобы переключиться в режим multi-line.

Полный список Горячих Клавиш

Редактор

  • [Double Click Wire]: создание контрольной точки на проводе.
  • [F1]: Открыть для Выбранной Ноды Страницу Вики.
  • [C]: Создать комментарий
  • [F]: фокус на выборе
  • [B]: новый мастер Нод
  • [Space]: Открыть Node Palette
  • [W]: Переключиться в Режим Colored Line
  • [Control + W]: Переключиться в Режим Multi-Line
  • [P]: глобальный предварительный просмотр
  • [Delete]: удалить выбранные Ноды
  • [Backspace]: удалить выбранные Ноды

Ноды

  • [Alpha5]: Color
  • [Alpha0]: Int
  • [Alpha1]: Float
  • [Alpha2]: Vector2
  • [Alpha3]: Vector3
  • [Alpha4]: Vector4
  • [L]: Lerp
  • [N]: Normalize
  • [O]: One Minus
  • [E]: Power
  • [A]: Add
  • [D]: Divide
  • [M]: Multiply
  • [S]: Subtract
  • [R]: World Reflection
  • [T]: Texture Sample
  • [U]: Texture Coordinates

Полупрозрачность

Вход Translucency обеспечивает быстрый способ представления рассеяния света. Это не самый реалистичный доступный метод, но это гибкое и быстрое приближение. В нашем примере (AmplifyShaderEditor\Examples\Official\Translucency) мы используем простую красную Depth Textureдля представления эффекта подповерхностного рассеяния, но вам не обязательно использовать ту же настройку, вы вполне можете подключить полную RGB-текстуру к  входу Translucency для получения некоторого изменения цвета или стилизованных результатов.


Material Properties  ниже автоматически добавляются в ваш шейдер, когда вы подключаете свои значения Translucency Input Port.
Translucency.jpg
  • Strength: сила эффекта полупрозрачности, вы можете думать о ней как о ползунке множителя.
  • Normal Distortion: Определяет величину искажения нормалей на эффект полупрозрачности.
  • Scattering Falloff: величина рассеяния для эффекта полупрозрачности.
  • Direct: Прямое влияние света на эффект полупрозрачности.
  • Ambient: влияние GI ambient light на эффект полупрозрачности.
  • Shadow: влияние самозатенения на эффект прозрачности, уменьшает эффект прозрачности в затененных областях.

Ваш Первый шейдер


1.Откройте редактор, создайте новый материал и новый шейдер на вкладке Project Explorer. Во вновь созданном материале выберите новый шейдер и нажмите кнопку Open в Shader Editor чтобы открыть шейдер и материал.

2. В качестве примера выберите ноду Output Nodeи измените его Light Model на specular.

3. Щелкните правой кнопкой мыши на холсте, чтобы открыть список доступных для поиска узлов, и введите “Lerp”. Нажмите на Lerp и подключите выходной порт узла к входному порту Albedo.

4. Удерживая клавишу 5, нажмите на холст, чтобы создать новую ноду Color. Кроме того, вы можете использовать список поиска, который использовался ранее, или перетащить ноду из Node Palette с правой стороны; Constants > Color [5].

5. Выберите новую ноду Color и нажмите ‘CTRL/CMD+D’ чтобы скопировать ее. Соедините обе ноды с входным портом ноды Lerp. Установите в первой ноде серый цвет и а второй на более живой цвет.

6. Создайте ноду Float перетащив его из Node Palette, подключите его к порту Alpha ноды Lerp. В свойствах узла только что созданного Float установите для его Minimum значение на 0 и Maximum на 1. Обратите внимание, что теперь Float можно управлять с помощью ползунка. Не забудьте установить для Parameter Type значение Property,так что вы сможете изменить его непосредственно в материале. Вы также можете назвать ноду и изменить его положение в инспекторе материалов, отрегулировав значение индекса. В качестве примера, давайте назовем его Color Mix.

7. Создайте новый Float и подключите его к входному порту Smoothness из ноды Output, установите его Minimum значение на 0 и Maximum на 1, как вы делали ранее. Установите его Type на Property и назовите его Smoothness Value. Создайте еще один объект Float и подключите его к входному порту Specular, установите его Minimum значение на 0 и Maximum на 1. Установите его Type на Property и назовите Specular Value.

8. В заключение, перетащите текстуру Normal Map из вашего Project Explorer прямо на холст. В качестве примера мы использовали текстуру Brushed Metal. Подключите его к входному порту Normal ноды Output и все готово. Вы только что создали свой первый шейдер, не забывайте регулярно сохранять свою работу, нажав кнопку Update расположенную в верхнем левом углу. В качестве альтернативы, вы можете редактировать шейдер с включенным режимом LIVE любые изменения немедленно сохраняются и обновляются. В зависимости от сложности шейдера, режим LIVE может занять около секунды для обновления. Вопреки значениям шейдера по умолчанию, любые изменения, внесенные в свойство материала, сразу видны.


Совместимость с Другими Программами

Aura 2

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

Поддержка Substanc

Поддержка Substances в Unity 2018 и выше была добавлена в ASE.


Исходный пример Substance необходимо было упаковать в пакет Unity, поскольку файлы .sbsar теперь вызывают ошибку импорта в Unity 2018, так как собственная поддержка Substance была заброшена.

Если вы используете версии до Unity 2018, в которых встроенная поддержка Substance еще не устарела, вы можете найти пример Substance ниже:
  • Перейдите в папку AmplifyShaderEditor\Examples\Official\Substance
  • Извлеките пакет LegacySubstanceExample.unitypackage

Если вы используете Unity 2018, вам необходимо убедиться, что вы устанавливаете плагин Allegorithmic Substance, прежде чем извлекать соответствующий пакет ASE:
  • Скачать, импортировать и настроить Substance in Unity
  • Перейдите в папку AmplifyShaderEditor\Examples\Official\Substance2018
  • Извлеките  Substance2018.unitypackage

ASE позволяет использовать вещества прямо или косвенно из редактора. Самый простой способ использования Substance это буквальное перетаскивание объекта Substance в редакторе. Будет создана новый нода Substance Sample с различными текстурами внутри, которые можно использовать где угодно.
Можно настроить Substance для генерации всех текстур и перетаскивать каждую из них независимо, как обычную текстуру. Они сохранят свои ссылки и будут обновляться соответствующим образом, даже если вы регенерируете текстуры.
Также возможно создать общий шейдер, который используется непосредственно в шейдере. Единственное предостережение для этого - дополнительная конфигурация, необходимая в  ассете Substance  чтобы связать каждый образец текстуры с созданной текстурой. Если требуется более автоматический процесс, то для узла образца текстуры можно настроить использование имени свойства, которое соответствует именам Unity по умолчанию (например: _MainTex for albedos, _SpecGlossMap for specular maps, _MetallicGlossMap for metallic maps, _Glossiness for smoothness maps, _BumpMap for normal maps, _OcclusionMap for occlusion maps, _EmissionMap for emission maps,  и т. Д.) Таким образом, ассет Substance обнаружит свойство и автоматически назначит им правильную текстуру без дополнительного вмешательства.

MegaSplat

Встроенная поддержка ASE включена в MegaSplat

Шейдеры Curved World

Это руководство покажет вам, как интегрировать Curved World с редактором Amplify Shader.
Вы можете скачать простой пример здесь.


1. Для первого шага мы собираемся включить файл curvedworld.cginc. На изображении выше обратите внимание, как мы добавили include со строкой: "../cginc/CurvedWorld_Base.cginc", это потому, что наш файл шейдера находился в папке рядом с папкой cginc, где находится файл, поэтому "../" часть строки идет вверх по одной папке, часть "/cginc/" pзаглядывает внутрь папки cginc, а последняя часть - сам файл. Вы можете просто использовать "CurvedWorld_Base.cginc", ЕСЛИ ваш файл шейдера был рядом с этим файлом.
Примечание: Вы должны быть осторожны с этим включением, потому что Unity не позволяет вам автоматически определять, где находится файл по имени, вы должны указать путь к файлу. Если вам случится переместить файл в другую папку, вам придется исправить путь к файлу и перекомпилировать шейдер снова, иначе файл не будет включен. (В качестве альтернативы вы также можете использовать основанный на проекте абсолютный путь: "Assets/VacuumShaders/Curved World/Shaders/cginc/CurvedWorld_Base.cginc". В этом случае вам нужно будет только исправить путь в случае перемещения папки Curved World Shader .)'

2. Во-вторых, чтобы применить эффект Curved World к объекту с помощью своего шейдера, вам нужно вызвать его собственную функцию, которая находится в файле, который мы включили в первый шаг. Чтобы достичь этого, вы должны создать и подключить ноду пользовательского выражения к выходу  "local vertex offset" и он должен вызвать Function, которую вы хотите вызвать, в поле кода, которое в данном случае равно  "V_CW_TransformPointAndNormal(v.vertex, v.normal,v.tangent);". Обратите внимание на флажок "Call Mode" на панели параметров, его необходимо включить, чтобы этот шаг работал без каких-либо проблем.
Примечание. Если вам необходимо выполнить какое-либо преобразование вершины, вы все равно можете подключить его к входу узла Function.
Это оно! Теперь вы можете использовать все остальное, как в обычном шейдере ASE, и это должно работать в Curved World!

VertExmotion

Пакет VertExmotion включает в себя встроенные узлы для ASE.
1.Распакуйте файл 'VertExmotion/Addon/VertExmotion_AmplifyShaderEditorNodes.unitypackage'.
2. Добавьте узел VertExmotion и подключите его к порту входа Local Vertex Offset.

3. Установите для параметра Vertex Output значение «Relative» в параметрах ноды Output.

4. Добавьте файл VertExmotion cginc (Assets/VertExmotion/Shaders/VertExmotion.cginc) в разделе Additional Directives, Includes.


5.Если вы используете тесселяцию, обязательно добавьте ноду VertExmotion (Advanced NC); подключите и Vertex Offset, и Normal к входам ноды Output. (Необязательно)

6.HD SRP вариант включен. (Необязательно)


Общие советы

Мобильные шейдеры

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

Rendering Options

Часто игнорируемые параметры рендеринга позволяют отключить некоторые ключевые функции системы освещения Unity. Например, вам может показаться, что вам достаточно отключить систему Unity GI, но при этом поддерживать рабочий процесс PBR.
.
В этом крайнем примере этого изображения все специальные функции освещения отключены и даже тени отключены. Это может быть не то, что нужно, но это хорошая отправная точка.

Custom Lighting Model

Модель освещения на заказ

ASE позволяет создавать индивидуальные модели освещения шейдеров. Это все еще шейдеры с единой поверхностью, которые позволяют заменять функции единого освещения. В ASE это означает, что вы можете настроить свою модель освещения шейдера на собственное освещение. Выполнение этого преобразует основной выходной узел в тот, который имеет только порты эмиссии и непрозрачности. При этом можно использовать существующие узлы с некоторыми дополнительными легкими узлами для создания оптимизированного и адаптированного шейдера для конкретной цели.
На следующем рисунке показано, как можно создать простой wrapped шейдер Ламберта, который должен быть очень производительным для машин нижнего уровня.
Nodes used: Texture Sample, World Normal, World Space Light Dir, Dot, Multiply Float, Add
Объедините это с предыдущими вариантами рендеринга для дополнительной экономии и обратите внимание на то, как в общих опциях некоторые из них были выключены или выключены для лучшей производительности (например: Shader Model, Precision, Cast Shadows)
В качестве шага обучения, возможно, было бы неплохо проверить образец Toon Ramp, предоставляемый пакетом ASE, в котором более сложным образом используется настраиваемое освещение для создания эффекта Toon Ramp с поддержкой света и теней..

Мобильные дружественные шаблоны

Иногда требуется конкретный вершинный / фрагментный шейдер, который выполняет очень простую работу, например, частицы, спрайты, пользовательский интерфейс и т. Д. В этих и других случаях ASE позволяет внедрить код шейдера в уже существующие шейдеры, которые мы называем " шаблоны». Это обычные вершинные / фрагментирующие шейдеры, которые были модифицированы путем добавления некоторых тегов, которые редактор может прочитать, чтобы знать, куда внедрить новый код и какой код уже существует в шаблоне.

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

Причина, по которой они могут быть важны для мобильных шейдеров, заключается в том, что эти шаблоны могут быть чрезвычайно простыми практически без кода. Если идея заключается в том, чтобы сохранить производительность, общий неосвещенный шаблон может служить основой для построения, поскольку они доступны для редактирования внутри редактора, а дополнительные функции могут быть добавлены либо путем построения более сложного дерева графиков, либо путем редактирования исходного шаблона. Единственное предостережение в том, что пользователь должен иметь немного знаний о шейдере, чтобы редактировать или создавать оригинальный шаблон шейдера. К счастью, ASE уже предоставляет несколько шаблонов, которые любой пользователь может выбрать и использовать как любой другой шейдер.
Nodes used: Template Parameter, Texture Sample, Grayscale, Float, Lerp
Эта функция все еще находится в разработке, и в будущем будет предоставлено больше этих шаблонов для реализации более сложных или специфических эффектов, когда они станут доступны.

Android

При использовании узла Texture Sampler в ASE, а целевой платформой является Android, он игнорирует параметр масштабирования, который является предполагаемым поведением, поскольку Unity не масштабирует карты нормалей для платформ, которые не поддерживают формат DXT5nm, то есть формат, сжимаемый Unity. нормальные карты в.

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

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

Normal Scale in Android
 

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.