#unity3d #shader #shaderlab
Вопрос:
Я знаю, что при объявлении свойств шейдера существует несколько типов «ввода»: float, диапазон, цвет, 2D. но когда я пытаюсь настроить операцию трафарета в качестве свойства. как это сделать? Я имею в виду то, что я знаю, что операция трафарета входит в этот список (Больше, ГЕквал, Меньше, ЛЕквал, Равно, Не равно, Всегда, никогда), так как же указать, какая операция в редакторе.
Я видел такую строчку:
_StencilOp («Операция трафарета», С плавающей точкой) = 0
так что же означает «0»?
Ответ №1:
Названия операций соответствуют целому числу, но было бы утомительно запоминать все числа, поэтому у нас есть имена. Но вы все равно можете назначить целое число с помощью переменной.
В C# вы устанавливаете int в шейдере, используя CompareFunction
перечисление (которое является просто int
)
MyMaterial.SetInt("_MyStencilOp", (int)CompareFunction.Always);
И в шейдере вы размещаете переменную вот так
Stencil {
Ref [_PlayerStencilRef]
Comp [_MyStencilOp]
Pass Replace
}
(пример изменен здесь)