Какие аргументы получает шейдер от SpriteRenderer?
Доброй ночи! Хочу написать шейдер, который бы брал из текстуры альфа-канал и превращал его в переданный цвет. Шейдер используется внутри материала, который в свою очередь используется внутри компонента SpriteRenderer. Цвет пробую менять через переменную color SpriteRenderer-a:
private SpriteRenderer spriteRenderer;
void OnColorChanged (Color color) {
spriteRenderer.color = color;
}
Но беда в том, что шейдер не получает цвет из SpriteRenderer-a. И вроде бы создал свойство _Color, а цвет всегда тот, что по-умолчанию или тот, что задан в материале. Подскажите возможные проблемы, пожалуйста.
Ответы (1 шт):
Нашёл. Точнее я нашел не все, но нужный точно! Рассказываю алгоритм действий.
Сперва настраиваем свой Renderer, даём ему материал, который сейчас в разработке. Среди стандартных шейдеров ищем те, которые содержат нужный эффект. Например я искал шейдер, который меняет оттенок текстуры в зависимости от выбранного цвета в SpriteRenderer.
Найдя нужный шейдер кликаем правой кнопкой по нему прямо в материале, выбираем пункт "Edit Shader":
В некоторых случаях сразу откроется код, а в некоторых нужно кликнуть "Compile and show code":
Дальше методом смекалки и научного тыка выбираем нужный property. В моём случае это был _FaceColor, тогда как я долго думал, что должно быть просто _Color.
Конечно хотелось бы как-то сразу узнавать какие свойства задаёт тот или иной Renderer. Но то ли я документацию плохо читал, или ещё что, а найти ответ на свой вопрос не мог. К счастью случайно заметил возможность редачить стандартные шейдеры, что ускорило поиск необходимого в разы.



