4D вектор
В информатике — 4D-вектор это 4-компонентный векторный тип данных . Использование включает однородные координаты для трехмерного пространства в компьютерной графике и красного, зеленого, синего альфа ( RGBA значения ) для растровых изображений с цветом и альфа-каналом (как таковые они широко используются в компьютерной графике). Они также могут представлять кватернионы (полезно для вращений), хотя алгебра, которую они определяют, другая.
Поддержка компьютерного оборудования
[ редактировать ]Некоторые микропроцессоры имеют аппаратную поддержку 4D-векторов с инструкциями, работающими с 4- полосными инструкциями с одной командой и несколькими данными ( SIMD ), обычно со 128-битным путем данных и с плавающей запятой . 32-битными полями [1]
Конкретные инструкции (например, скалярное произведение 4 элементов ) могут облегчить использование одного 128-битного регистра для представления 4D-вектора. Например, в хронологическом порядке: Hitachi SH4 , PowerPC VMX128, расширение [2] и Intel x86 SSE4. [3]
Некоторые 4-элементные векторные движки (например, векторные модули PS2 ) пошли дальше, предоставив возможность транслировать компоненты как источники умножения и перекрестное произведение . поддерживать [4] [5] В более ранних поколениях конвейеров шейдеров графических процессоров (GPU) использовались с очень длинными командами (VLIW), наборы инструкций предназначенные для аналогичных операций.
Поддержка программного обеспечения
[ редактировать ]Использование SIMD для 4D-векторов можно удобно обернуть в библиотеку векторной математики (обычно реализуемую на C или C++ ). [6] [7] [8] обычно используется при разработке видеоигр вместе с поддержкой матрицы 4×4 . Они отличаются от более общих библиотек линейной алгебры в других областях, ориентированных на матрицы произвольного размера. Такие библиотеки иногда поддерживают 3D-векторы, дополненные до 4D, или загрузку 3D-данных в 4D-регистры, при этом арифметика эффективно отображается в операции SIMD с помощью реализации встроенных функций для каждой платформы . Существует выбор между подходами AOS и SOA, учитывая наличие 4-элементных регистров, и инструкциями SIMD, которые обычно ориентированы на однородные данные.
Языки шейдеров для программирования графических процессоров (GPU) обычно имеют 4D-типы данных (наряду с 2D, 3D) с средствами доступа xyzw, включая перестановки или доступ к повороту , например, позволяющие легко заменять форматы RGBA или ARGB, получать доступ к двум 2D-векторам, упакованным в один 4D. вектор и т. д. [9] Современные графические процессоры с тех пор перешли на скалярные конвейеры с одной командой и несколькими потоками (SIMT) (для большей эффективности вычислений общего назначения на графических процессорах (GPGPU)), но по-прежнему поддерживают эту модель программирования. [10]
См. также
[ редактировать ]- Евклидово пространство
- Четырехмерное пространство
- Кватернион
- Измерение
- Цветовое пространство RGBA
- Тессеракт
- Матрица 4×4
Ссылки
[ редактировать ]- ^ «внутренние функции Intel SSE» .
- ^ «Собираем все вместе: анатомия игровой консоли XBox 360 (см. скалярное произведение VMX128)» (PDF) .
- ^ «скалярный продукт Intel SSE4» .
- ^ «Руководство пользователя VU0» (PDF) .
- ^ «Технико-экономическое обоснование использования PlayStation 2 для научных вычислений» (PDF) .
- ^ «научная векторная математика» . Гитхаб . 19 апреля 2022 г.
- ^ «GLM (библиотека векторной математики)» .
- ^ «Математика Microsoft DirectX» .
- ^ «Типы данных GLSL и Swizzling» .
- ^ «Графическое ядро AMD следующее» .