А как ты вычесляешь вторые текстурные координаты?
Я думаю тут нужно вычислять вторые координаты в фрагментном шейдере, исходя из смещения и скейла маски в атласе маск.
Тебе нужно передать данные о смещении и скейле, например:
Смещение на 25% влево и вверх, также размер 50% от оригинала. По сути тебе нужно знать % смещение и % размера между регионом маски и самим атласом маски. Эти 4 переменные передать в шейдер (maskX, maskY, maskW, mashH).
На примере картинки выше это будет:
maskX = 0.25;
maskY = 0.25;
maskW = 0.5;
maskH = 0.5;
Далее формула будет такой:
vec2 v_textCoordMask = (v_texCoordImage - vec2(maskX, maskY)) / vec2(maskW, maskH);
Ну ты конечно передашь эти 4 данных одним vec4, но для наглядности они по отдельности. Будет у тебя что-то типо:
vec2 v_textCoordMask = (v_texCoordImage - maskCoords.xy) / maskCoords.zw;