Использование UV для нарезанной текстуры - PullRequest
0 голосов
/ 29 сентября 2018

Я пишу шейдер, в котором мне нужно определить, насколько близко я к краям моего 2D-объекта.Моя идея выяснить это - определить, насколько я близок к краю моей текстуры, используя UV текстуры.Например, я хочу сделать что-то вроде этого:

struct v2f
{
   float4 vertex : SV_POSITION;
   fixed4 color  : COLOR;
   float2 uv     : TEXCOORD0;
};

...

fixed4 frag(v2f in) : SV_Target
{
   // This is what I want to be able to do
   if (in.uv.x < 0.1)
   {
      // do something
   }
}

Проблема в том, что моя текстура представляет собой одну ячейку нарезанного изображения (режим спрайта = несколько).Это означает, что мои UV не идут от 0 до 1. Например, если мое нарезанное изображение имеет размер 128x256 и оно разделено на срезы 64x64, то UV может перейти от (0,5, 0) до (1, 0,25) для среза, которыйЯ использую в качестве текстуры моего объекта.Поэтому я не могу использовать 0 и 1 в качестве левого / правого / нижнего / верхнего краев текстуры, когда пытаюсь определить, насколько близко к краю находится мой текущий фрагмент.

Есть ли способчтобы справиться с этим в шейдере, например, преобразование моего текущего UV в UV в диапазоне [0, 1]?

В качестве альтернативы, есть ли другой способ, которым я могу определить, насколько близко к краю моего объектаЯ рисую, не полагаясь на координаты текстуры?

...