Потому-что растворение можно делать не только по маске, не знаю кому это понадобиться, но выглядит иногда прикольно. Да и маска не обязательно же чёрно белая, вдруг кому радугу захочется использовать?
Мне как человеку, который интересуется Unity, но нихрена не понимает в шейдерах тут вообще ничего не понятно. Ну т.е. я почитал официальный мануал по шейдерам у них на сайте, но есть такие моменты, про которые хотелось бы узнать подробней. Например что такое #include «UnityCG.cginc» и нафиг оно нужно? Зачем IgnoreProjector?
Рассчитана на людей которые более-менее ориентируются в шейдерах и могут повтыкать в справку, но всё ещё с трудом пишут что-то своё.
Инклуд должен был навести вас на мысль. В данном случае UnityCG.cginc нужен для получения глобальной переменой с синусоидальным временем (_SinTime). IgnoreProjector нужен для игнорирования проектора, так-как местами могут появляться артефакты. Но в справку написано что игнорировать проектор нужно на полупрозрачных объектах, в нашем случае он полностью прозрачен и проблем возникнуть не должно, но я обычно всегда добавляю этот тег когда работаю с альфой.
А еще бы в статье краткий референс как эти «шейдеры-шмейдеры» к GameObject или мешам прикручиваюццо ;)
PS: я понимаю, что такое шейдеры… зачем они, но вот как раз сегодня искал простенький мануал про то, как это все прикручивается к объектам в сцене. Искал по дороге, с мобилы и не нашел пока. Был бы признателен за мануал на хабре.
Оффтопик: не подскажете чем дешевле с точки зрения ресурсов рисовать плоские полигоны (100500 полигональных плиток, см. рис. ниже) на GameObject: шейдером полигонов или плоскими процедурно сгенеренными мешами?
Я вот не много не понял про шейдер полигонов. Имеется ввиду один здоровый полигон и сгенерированая на нём текстура? И с точки зрения рисования, я бы сгенерировал цельный меш который бы повторял форму того что на рисунке. В целом при хорошем батчинге и грамотно управлении материалами отрендерить 100500 полигонов не проблема.
Этот шейдер просто делает заливку одним цветом. В вашем случае я бы порекомендовал генерировать цельный и оптимизированный меш. Это поможет снизить количество DrawCall.
А недорого потом будет удалять отдельные кусочки? В принципе закэшировать вертексы и соответствующие треугольники не рокет-сцайенс, но как движок будет реагировать на удаление части вертексов каждые, скажем 1-2 секунды.
Спасибо, попробую. Еще хотел в фоне ландшафт из таких вот процедурных столбцов попробовать реализовать (типа двумерного эквалайзера, как в визуализациях вин-ампа), но чую это мне будет дорого стоить
Пишем Dissolve Shader