Полезное
Мы Вконтакте
Discord канал
В этой статье рассказывается как же работают манипуляции текстур в TextureSample благодаря UV соеденению и TexCoord. Сам TexCoord часто используется в манипуляции текстурами или изображением в пост обработке. Очень важно понимать работу этого всего для того, что бы можно было самому создавать какие-либо эффекты и при этом не играя в угадывание того, какой эффект будет от того или иного действия.
Сам TextureSample с UV входом, который и определяет, какая текстура получится на выходе из этого TextureSample.
Вы наверняка видели блок TexCoord, со странной зелено-желто-красной текстурой. Он и помогает TextureSample блоку, вывести текстуру с соответствующей манипуляцией.
Эта карта 2х мерная, поэтому у неё есть следующие свойства (у каждого пикселя): положение пикселя по X, положение пикселя по Y, значение пикселя по каналу Red и по каналу Green. Положение определяет, где на выходе получается пиксель из подаваемого изображения, а значение определяет, какой именно пиксель отображается на этом положении.
Давайте представим, что у вас есть текстура 5х5, и TexCoord карту мы тоже разберем на таком же разрешении, что бы было понятнее, как оно работает.
Сама текстура, на примере которой будет разбирать предмет:
TexCoord — 2х мерная карта, состоящая только из красного канала и зеленого.
Красный канал определяет, какой пиксель по X будет отображаться на этом месте. Зеленый канал будет брать по Y. Размера у TexCoord как такового нету, он всегда от 0 до 1 от края до другого края. То есть если изображение у вас размером 1000 на 1000, то в последних координатах все равно будет значение 1 на каждый канал.
Давайте теперь определим, что же означает «какой пиксель будет отображаться на этом месте». Я хочу, что бы вы сейчас мысленно умножили карту на размер текстуры, то есть на 5 в нашем случае. Это значит, что теперь координатная карта у нас будет идти не в пределах 1, а в пределах 5-ти. То есть первый пиксель = 1, второй = 2 и так далее. Это поможет вам лучше понять, как именно распределяются пиксели в зависимости от карты. И я в дальнейшем тоже буду использовать подобные значение, хотя все равно учтите, что там на самом деле от 0 до 1.
Возьмем самый первый пиксель. На координатной карте там 1 и 1 по красном и зеленому каналам. Это значит, что в том месте будет показываться именно первый пиксель от текстуры. В нижнем правом месте значения 5 и 5, то есть там будет показываться 5-й пиксель по X и 5й пиксель по Y. То есть шейдер берет текстуру, берет координатную карту, смотрит на этой карте, какой пиксель на это место положить и выдаст нам результат.
Теперь давайте немного изменим нашу координатную карту. Например развернем её к верх ногами.
Достаточно легко запутаться, однако если присмотреться, то можно понять. Давайте на словах посмотрим.
Теперь в позиции 0 0 на координатах находится значение 5 по красному и 5 желтому каналам. Это значит, что шейдер посмотрит, какой пиксель оригинальной тестуры находится на этом месте (X: 5, Y:5) и поместит его на позицию, где это значение находится на координатной карте, то есть в 0 0. А вот в последней позиции на координатной карте теперь наоборот значение 1:1, это значит, что он возьмет пиксель текстуры с 1:1 и положит его на это место.
Поскольку мы всю карту перевернули, то и пиксели теперь выстраиваются в другом порядке. Так, как говорит им координатная маска.
Если же вы сделаете всю карту со значениям 1:1, то и текстура в результате вся выйдет только с первым пикселем.
То есть получается, что координатная карта в таком случае ссылается только на первый пиксель текстуры, из-за чего в результате выходит, что значение этого пикселя отрисовывается в каждом пикселе конечного изображения.
Таким образом, через математику, вы можете производить какие-либо действия над TexCoord, в результате получая другие координаты для пикселей.
Вы должны войти, что бы оставлять комментарии.