Учимся самостоятельно редактировать шейдеры в Unity. Шаг 2
Откройте ваш шейдер в MonoDevelop и обратите внимание на выделенную часть кода. Этот блок называется Блоком свойств.
На данный момент в нём присутствует лишь одно свойство – _MainTex. Что он делает? Если вы посмотрите на вкладку Shader в окне Inspector материала MyMaterial, который ис пользует этот шейдер, то заметите, серое окошечко для назначения текстуры. Это поле было автоматически создано из его описания в блоке свойств.
Удалите:
_MainTex ("Base (RGB)", 2D) = "white" {}
И пропишите вместо него:
_EmissiveColor ("Emissive Color", Color) = (1,1,1,1)
_AmbientColor ("Ambient Color", Color) = (1,1,1,1)
_MySliderValue ("This is a Slider", Range(0,10)) = 2.5
Теперь наш Блок свойств выглядит так:
А вкладка Shader окна Inspector свойств материала, приняла такой вид:
Как работает Блок свойств
Блок свойств имеет слейдующую структуру:
Variable Name - имя переменной
Inspector GUIName - имя, которое появится в окне Inspector материала
Type - тип данных:
Имущественные типы Surface Shader
|
Range (min, max)
|
Диапазон значений типа float от min до max, в инспекторе отобразится как слайдер
|
Color
|
Значение типа цвет, значение по-умолчанию должно быть RGBA float от 0 до 1. В инспекторе отобразится как color picker
|
2D
|
Описывает текстуру. В инспекторе будет как текстура
|
Rect
|
Описывает текстуру с размером не 2n. В инспекторе будет как текстура
|
Cube
|
Описывает Cubemap текстуру. В инспекторе будет как текстура
|
Float
|
Просто float, в инспекторе будет как поле ввода с цифрой
|
Vector
|
Создает св-во из 4 float, что позволяет задавать направление или цвета
|
Default Value - Значение по-умолчанию (def_col) для типов Rect, 2D и Cubemap может быть пустой, либо: «white», «black», «gray», «bump». Оно указывает какого цвета пиксели будут по-умолчанию внутри текстуры.
В фигурных скобках таких свойств как 2D, Cube, Rect можно указывать дополнительные параметры.
TexGen texgenmode: автоматически генерирует текстурные координаты. Есть такие режимы: ObjectLinear, EyeLinear, SphereMap, CubeReflect, CubeNormal.
Записывается следующим образом:
_MainTex ("Base (RGB)", Cube) = "" { TexGen EyeLinear }
LightmapMode: при per-rendere использует lightmap параметры. Таким образом, используемая текстура может быть не в материале но взята из настроек рендера.
|