Будут пять чисел по шесть бит, распаковка будет в вертексном шейдере
Мне кажется наиболее эффективным: первые четыре числа хранятся в первых шести битах четырех байт, извлекаются одной операцией с помощью маски. Пятое числа хранится в последних двух битах первых трех байт, извлекается дольше всего - нужно будет два сдвига и две маски.
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx 11111155 22222255 33333355 444444
Есть ли способ эффективнее с точки зрения скорости выполнения?
это муть какая то, а не вопрос, легче и быстрее лишний атрибут вертексный добавить, чем 2 операции в шейдере проводить на каждый атрибут. У видеокарты достаточно памяти, у любой, затраты только на то, что считается в шейдере, на каждую вершину и фрагмент Так что добавка 1 атрибута, то есть 5 6 битных чисел в 5 8b атрибутов- будет всего быстрее
Morkovkin
> это муть какая то, а не вопрос, легче и быстрее лишний атрибут вертексный добавить
В текстуре rgba хранится, четыре байта максимум, больше нельзя.
MikeNew
вопрос был про скорость выполнения вертексного шейдера, так? Не про текстуры.
Какую задачу ты решаешь таким образом?
MikeNew
> В текстуре rgba хранится, четыре байта максимум, больше нельзя.
Может можно RGBA16 Half или RGBA32 Float, распаковать в шейдере легко (почти бесплатно)
А если просто хранить последовательно и получать каждое значение единообразно (маска+сдвиг)?
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx 11111122 22223333 33444444 555555--
MikeNew
> В текстуре rgba хранится, четыре байта максимум, больше нельзя.
Texture Array можно использовать
Blueprint
> Texture Array можно использовать
Кубемапу еще
Сначала собери один инт из своих четырех байт (а лучше заведи r32 int текстуру), а потом из этого Инта собери свои 5 шестибитных значений.
Используйте Атлас текстур
Не надо быстро ...лучше сделай пару новых фифектов
Тема в архиве.