Свойства.

Введение.

Когда мы пишем шейдеры, мы обычно хотим иметь возможность изменять параметры в материале. Свойства позволяют нам сделать это в Unity. В этом простом примере мы собираемся сделать цвет нашего неосвещенного (unlit) шейдера регулируемым.


Для этого урока вы должны знать, как сделать супер базовый unlit шейдер, вы можете найти урок для этого здесь.

Свойства.

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

   fixed4 _Color; 

   fixed4 frag(v2f i) : SV_TARGET{
    return _Color
   }
 
 
Затем мы добавим раздел «Свойства» (Properties) в начало шейдера, вне нашего подшадера. И мы добавляем наше свойство _Color, сообщая Unity, что нужно показать его как цвет в инспекторе, определить тип как цвет и установить значение по умолчанию черным.

Shader "Tutorial/03_Properties"{
 Properties{
  _Color("Color", Color) = (0, 0, 0, 1)
 }...
 

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


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


Исходный код можно найти здесь: https://github.com/ronja-tutorials/ShaderTutorials/blob/master/Assets/003_Properties/properties.shader


Перевод Беляев В.А. ака seaman

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

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