Используя игровой движок Defold, он заставляет текстуры в атласе иметь степень 2 (384x216 -> 512x256).
Функция «Развернуть» не поддерживает фон параллакса, доступны только следующие варианты:
- Управление позиционированием нескольких спрайтов с кодом
- Управление шейдером на одном спрайте.
Первый вариант не является элегантным и оптимизированным способом, поэтому я выбрал вариант №2.
У меня есть довольно простой код шейдера, который принимает масштаб и смещение исходного спрайта. Это работает, если спрайт имеет степень степени 2. Но я практически ничего не знаю, кроме этого, поэтому я не знаю, как выложить часть текстуры (оригинал не имеет степени 2). Я могу вычислить и дать форму, которая имеет пропорции vec2 (384/512, 216/256).
varying mediump vec2 var_texcoord0;
uniform lowp sampler2D texture_sampler;
uniform lowp vec4 tint;
uniform lowp vec4 scale;
uniform lowp vec4 offset;
void main()
{
// Pre-multiply alpha since all runtime textures already are
lowp vec2 uv = vec2(var_texcoord0.x *scale.x +offset.x, var_texcoord0.y *scale.y +offset.y);
gl_FragColor = tint * texture2D( texture_sampler, uv);
}
Я ожидаю получить плиточный фон, но у него пустое пространство из-за принудительной мощности 2.