В архитектурах Nvidia и AMD память разделена на банки по 128 бит.Зачастую чтение одного значения типа float3 или float4 будет быстрее для контроллера памяти, чем чтение трех отдельных значений типа float.
Когда вы читаете значения с плавающей точкой из последовательных адресов памяти, вы в большой степени полагаетесь на компилятор для объединениячитает для вас.Нет гарантии, что posX, posY и posZ находятся в одном банке.Объявление его как float3, как правило, приводит к тому, что расположения компонентных поплавков попадают в один и тот же банк.
То, как графические процессоры обрабатывают векторные вычисления, зависит от поставщика, но доступ к памяти на обеих платформах выиграет от векторизации.