Я экспериментирую с шейдерами с обработкой 2.0. Как простой Excersise в понимании точки шейдеры немного лучше, я реализовал систему, при которой в классе Sprite:Как создать несколько PointSprites в разных состояниях?
- я поставил spritesheet как единая sampler2D в пиксельный шейдер. 2048x 2048 (12 x 12 кадров с квадратом 128 пикселей)
- Я создаю точку.
- Я устанавливаю координаты uv в вершинном шейдере для точки.
- я смещение УФ-координата в шейдере вершин целого числом переданного в качестве единой переменного, чтобы выбрать «кадры» в spritesheet
- Я обновить целое число (с использованием модуля к петле и) увеличивающейся УФ смещениям каждые 5 кадров в приложении.
Это означает, что я могу выполнять основные последовательности анимации из вершинного шейдера. Я понятия не имею, если это желательно, но я подозреваю, что он будет работать лучше, чем устанавливать новый унифицированный sampler2D в шейдере фрагментов каждый раз, когда я хочу менять кадры.
Мой вопрос: как я могу использовать этот шейдер для нескольких экземпляров? Если я хочу, чтобы два из спрайтов на экране в то же время каждый с разными значениями (т. Е. Играли разные кадры анимации), как это достигается без каждого из них, имеющего свой собственный pointShader и, следовательно, свою собственную копию единого Sampler2D в памяти?
Надеюсь, вы сможете помочь.
Спасибо - я работаю, так просто. –