Я пытаюсь создать пользовательские фильтры с помощью Phaser, но я не понимаю, как конкретно используются форма и vTextureCoord
. Here's a JSFiddle (EDIT: Игнорируйте изображение, минимальный случай укладывает в квадрате градиента):Написание фрагментарных шейдеров: не могу понять, как формируются униформы
- Почему не верхний правый угол белый? Я установил как разрешение фильтра, так и размер спрайта до 256, но
vTextureCoord
только идет от [0,0] до [.5, .5] (или так кажется) - Попробуйте перетащить спрайт: кажется, быть заблокирован стеной в верхней и левой границах. Это связано только с шейдером, поскольку сам игровой объект правильно перетаскивается. Как так?
Я вытащил мои волосы на этом во время последнего Ludum Dare, пытаясь выяснить позицию пикселя в спрайт (т.е. [0,0] в нижнем левом углу и [sprite.w, sprite.h ] в верхнем правом углу) ... Но я не мог найти надежный способ вычислить, что независимо от позиции и размера спрайта.
Благодарим за помощь!
EDIT: Как emackey отметил, похоже, либо Phaser или Pixi (не уверен, на каком уровне она обрабатывается?) Использует промежуточную структуру. Из-за этого uSampler
я получаю не оригинальную текстуру, а модифицированную, то есть, например, сдвинутую/обрезанную, если спрайт находится за верхним левым углом экрана. uSampler
и vTextureCoord
работают хорошо, так что, пока я делаю простые вещи, такие как настройки цвета, все выглядит хорошо, но для просмотра с координатами текстуры это просто ненадежно.
Может ли гуру Phaser/Pixi объяснить, почему он работает именно так, и что я должен делать, чтобы получить четкие координаты и работать с моей фактической текстурой источника? I managed to hack a shader «фиксирование vTextureCoord
» и подключение моей текстуры в iChannel0
, но это немного взломано.
Спасибо.
О втором пункте: Кажется, что перетаскивание будет ограничено всякий раз, когда фильтр применяется к спрайту. Я пробовал с несколькими фильтрами и просматривал документы, но не мог найти что-либо в соответствии с ним. Возможно, это был бы лучший способ спросить кого-нибудь в их команде разработчиков, что это такое. – Loilo