Я пишу шейдер, в котором мне нужно определить, насколько близко я к краям моего 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]?
В качестве альтернативы, есть ли другой способ, которым я могу определить, насколько близко к краю моего объектаЯ рисую, не полагаясь на координаты текстуры?