Какой шейдер использовать?

143
15 декабря 2018, 14:20

Шейдеры только начинаю изучать. Задача такая: у объекта есть полностью прозрачные и полностью непрозрачные части. Хочу через скрипт менять цвет непрозрачной части с помощью gameObject.GetComponent().material.color = Color.цвет; Какой для этого нужно использовать шейдер?

Answer 1

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

В зависимости от выбранного шейдера пути у нас 2:

  1. Standard shader
  2. Legacy Transparent Cutout

Standard shader

Просто создаем новый материал - Unity сам добавит к нему необходимый шейдер, все, что нам останется - указать, что нам нужен Cutout шейдер:

Далее создадим cutout маску и наложим на нее текстуру:

Вернемся к нашему материалу и укажем все настройки, в Albedo положим наше изображение выше и поменяем цвет на, к примеру, красный. После всех этих махинаций применим данный материал к стандартному Quad`у и получим такую картину:

Legacy Transparent Cutout

Тут уже посложнее, создаем новый материал и вручную выбираем нужный нам шейдер:

Тут уже сами смотрите, какой конкретно Cutout шейдер вам нужен. В данном примере я выбрал Cutout Diffuse - самый "стандартный" шейдер, если его так можно назвать. Все остальное - навороты со всякими вкусностями, которые к вопросу не относятся.

Осталась мелочь - настроить наш материал:

Применим материал все к тому же Quad`у и получим следующее:

READ ALSO
Оригинальный размер изображения

Оригинальный размер изображения

Программно добавляю картинку, но как устанавливать ей оригинальный размер как у источника, а не auto или от себя ?

124
OutOfMemoryException в GDI+

OutOfMemoryException в GDI+

Время от времени ловлю OutOfMemoryException при вызове этого метода: BitmapClone (Rectangle, PixelFormat), хотя памяти у меня много

111