Хотя технически вы могли бы создать шейдер, который вычисляет угол к каждому пикселю с учетом центра объекта, лучше всего было бы развернуть тор таким образом, чтобы направление перемещения вашего перехода отображалось на ось X в УФпространство (см. изображение).Затем вы можете выставить свойство в диапазоне от 0 до 1, которое представляет точку отсечения в процентах.Наконец, в вашей функции фрагмента или поверхности вы можете сделать это:
if (i.uv.x - _Cutoff > 0) {
// Material A
col = tex2D(_TextureA, i.uv);
roughness = _RoughnessA;
// etc.
} else {
// Material B
col = tex2D(_TextureB, i.uv);
roughness = _RoughnessB;
}
Затем вы можете анимировать свойство _Cutoff через скрипт C #.Что еще круче, так это то, что вы можете использовать текстуру маски для описания перехода и сместить ее координату uv.x с помощью переменной смещения, а затем использовать значение цвета для перехода между двумя свойствами материала.