Damus
Тр3тий Сергеевич · 1w
#ТретийСергеевичПротивГеонодов Решил крайне важную проблему с перемещением текстур по UV без случайного за...
Тр3тий Сергеевич profile picture
Думаю, explanations are in order.

Дано: текстура с компиляцией спрайтов (например, зрачки), из которой нужно будет выбрать один спрайт (через масштабирование/смещение UV-карты под плоскость). Этот спрайт будет перемещаться в пределах одной плоскости через смещение UV-карты.

Проблема: При смещении UV-карты на плоскости появляются соседние спрайты. Clip-интерполяция* при этом работает только за пределами карты.

* Имеется в виду зануление альфа-каналов за пределами оригинальной структуры, в противовес Repeat (повторению) и Mirror (отражению).

Решение: К альфа-каналу шейдера дополнительно домножается белая текстура-маска с Clip-интерполяцией, служащая окошком для выбранного спрайта и имеющая ту же UV-карту (без поправок на выборку спрайта). При перемещении спрайта маска перемещается вместе с ним, что создаёт эффект, будто бы мы перемещаем только один спрайт, а не всю компиляцию.

Возможно, не слишком эффективно с т.з. расчетов и ресурсов, но дело свое делает.

1
mittorn · 1w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpq5en5c920n47gvugdpdfmgm89spfnryg6kxfdfdhf7pwx68nw82wq9ymqam при паковке спрайтов под линейную интерполяцию нужно делать границу в 2 пикселя. Все полностью прозра...