Фразы, которые вы можете попробовать найти: «преобразование из мирового пространства в ультрафиолетовое пространство», «преобразование ультрафиолетовых координат», «ультрафиолетовая математика». UV - это название координат в текстурах, из которых берется шейдер, и если вы берете уже существующий код шейдера, вы можете делать интересные вещи, изменяя используемые им UV. Одна из этих вещей позволяет вам «растянуть» его.
В вашем примере куба 2x3 вы могли бы сказать каждому кубу, что его значение U следует рассматривать как значение от 0 до 0,5 или от 0,5 до 1, а значение V - от 0 до 0,33 или от 0,33 до 0,67 или от 0,67 до 1, в зависимости от того, где он находится вместо того, чтобы каждый из них переходил от 0 до 1. Вы можете сделать это, установив свойство в шейдере, чтобы указать ему, где запускать ультрафиолет (a
) и где закончить его уф (b
), и вы скачок от (0,0) - (1,1) до a
- b
.
В моем ответе на другой вопрос используется некоторая логика c, аналогичная той, в которой сравнивается мировое положение пикселя с диапазоном мировых положений для получения УФ. Соответствующий код шейдера:
fixed4 colorizedMapUV = (IN.worldPos.xz-_WorldSpaceRange.xy)
/ (_WorldSpaceRange.zw-_WorldSpaceRange.xy);
Другой вариант - смотреть только на мировую позицию и полностью игнорировать представление о том, где должны быть «углы» ультрафиолета. Метод под названием «трипланарное отображение» может помочь вам найти решение, которое делает это