ПрограммированиеФорумГрафика

Быстро запаковать и распаковать 5 чисел в четыре байта (glsl vertex)

#0
9:24, 24 мая 2024

Будут пять чисел по шесть бит, распаковка будет в вертексном шейдере

Мне кажется наиболее эффективным: первые четыре числа хранятся в первых шести битах четырех байт, извлекаются одной операцией с помощью маски. Пятое числа хранится в последних двух битах первых трех байт, извлекается дольше всего - нужно будет два сдвига и две маски.

xxxxxxxx   xxxxxxxx    xxxxxxxx     xxxxxxxx
11111155   22222255    33333355     444444

Есть ли способ эффективнее с точки зрения скорости выполнения?

#1
9:52, 24 мая 2024

это муть какая то, а не вопрос, легче и быстрее лишний атрибут вертексный добавить, чем 2 операции в шейдере проводить на каждый атрибут. У видеокарты достаточно памяти, у любой, затраты только на то, что считается в шейдере, на каждую вершину и фрагмент Так что добавка 1 атрибута, то есть 5 6 битных чисел в 5 8b атрибутов- будет всего быстрее

#2
10:00, 24 мая 2024

Morkovkin
> это муть какая то, а не вопрос, легче и быстрее лишний атрибут вертексный добавить
В текстуре rgba хранится, четыре байта максимум, больше нельзя.

#3
10:12, 24 мая 2024

MikeNew
вопрос был про скорость выполнения вертексного шейдера, так? Не про текстуры.

#4
17:28, 24 мая 2024

Какую задачу ты решаешь таким образом?

#5
17:43, 24 мая 2024

MikeNew
> В текстуре rgba хранится, четыре байта максимум, больше нельзя.
Может можно RGBA16 Half или RGBA32 Float, распаковать в шейдере легко (почти бесплатно)

#6
20:55, 24 мая 2024

А если просто хранить последовательно и получать каждое значение единообразно (маска+сдвиг)?

xxxxxxxx    xxxxxxxx    xxxxxxxx    xxxxxxxx
11111122    22223333    33444444    555555--
#7
21:02, 24 мая 2024

MikeNew
> В текстуре rgba хранится, четыре байта максимум, больше нельзя.
Texture Array можно использовать

#8
21:30, 24 мая 2024

Blueprint
> Texture Array можно использовать
Кубемапу еще

#9
22:27, 24 мая 2024

Сначала собери один инт из своих четырех байт (а лучше заведи r32 int текстуру), а потом из этого Инта собери свои 5 шестибитных значений.

#10
9:09, 25 мая 2024

Используйте Атлас текстур

#11
9:11, 25 мая 2024

Не надо быстро ...лучше сделай пару новых фифектов

ПрограммированиеФорумГрафика

Тема в архиве.