В webgl 1.0 как я понял есть ограничение на количество текстур GL_TEXTURE0, .. , GL_TEXTURE8 и того около 8 текстур, это я по памяти. Из-за этого приходится лепить карты текстур, типо атласа. Из-за этого неудобно разрабатывать приложение, если что то добавить надо что не было запланировано, то придётся переписывать текстурные координаты. С другой стороны переключение между текстурами на слабых устройствах типо смартфонов glbindtexture вызывает лаги, задержки. Если кто знает есть ли данное ограничение в webgl 2.0? И как решать задачу с особенностями что я описал
Gokilla
> Из-за этого неудобно разрабатывать приложение, если что то добавить надо что не было запланировано, то придётся переписывать текстурные координаты.
Так а какое это отношение к разработке имеет? Имеется в виду, к webgl.
Художник лепит модели и текстурирует их из атласа. Ты на вход получаешь готовую геометрию с текс.координатами и атлас. Используй это в разработке.
Если что-то нужно добавить, то это уже проблемы художника, пусть перерисовывает свой атлас, переразворачивает модель.
План Б. Текстурировать отдельной текстурой, а потом лить ее в атлас уже, а с геометрией хранить смещение и размер в атласе. Тогда в шейдере сможешь вычислить текс.координаты в атласе. Если шейдеров там нет, то тоже самое но через трансформ текс.коорлинат.
Gokilla
> есть ограничение на количество текстур
это не ограничение на количество текстур, а на количество активных текстурных слотов, если у тебя тормозит их переключение то ты делаешь что-то не так. Обычно для простой графики хватает 1-4 слота. Затраты на переключения меньше чем на переключение шейдеров. Минимизируй переключения шейдеров, затем текстур. Bindless в webgl 1.0 нет, поэтому оптимизируй по старинке.
Gokilla
> GL_TEXTURE0, .. , GL_TEXTURE8
только до GL_TEXTURE7
это ограничение количества текстур, которые можно использовать в одном шейдере, самих текстур в игре может быть любое количество
update: на мобилках биндинг текстур может быть медленным, это особенность платформы, для этого как раз используются атласы, батчинг, рендер спрайтов по принадлежности к атласу, все чтобы снизить переключения текстур.
Атласы должны собираться утилитой, можно на этапе сборки проекта, реализация должна быть такой, что условно - спрайт не знает что он рисуется из отдельной текстуры или из атласа.
Gokilla
> Если кто знает есть ли данное ограничение в webgl 2.0?
Там есть массив текстур.
leonardo98
Подскажи утилиту
Gokilla
я использовал самописный, который был интегрирован в редактор , можно найти готовые Google -> "упаковщик в атлас текстур",
можно попросить нейросеть написать "свой"
AMM1AK
> проблемы художника
Я тут в роли всех - и художника и разработчика и ставлю сам себе задачи