4D вектор

4-компонентный векторный тип данных в информатике

В информатике 4D-вектор — это 4-компонентный векторный тип данных . Используются в качестве однородных координат для 3-мерного пространства в компьютерной графике и значений 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, включая permutes или swizzle , например, позволяя легко менять форматы RGBA или ARGB, получать доступ к двум 2D-векторам, упакованным в один 4D-вектор, и т. д. [9] Современные GPU с тех пор перешли на скалярные конвейеры с одной инструкцией и несколькими потоками (SIMT) (для большей эффективности в вычислениях общего назначения на графических процессорах (GPGPU)), но по-прежнему поддерживают эту модель программирования. [10]

Смотрите также

Ссылки

  1. ^ "встроенные функции Intel SSE".
  2. ^ «Собираем все вместе: Анатомия игровой консоли XBox 360 (см. скалярное произведение VMX128)» (PDF) .
  3. ^ "скалярное произведение Intel SSE4".
  4. ^ "Руководство пользователя VU0" (PDF) .
  5. ^ "Исследование целесообразности использования PlayStation 2 для научных вычислений" (PDF) .
  6. ^ "sce vectormath". GitHub . 19 апреля 2022 г.
  7. ^ "GLM (библиотека векторной математики)".
  8. ^ «Математика Microsoft DirectX».
  9. ^ «Типы данных GLSL и их преобразование».
  10. ^ "Графическое ядро ​​AMD следующее".
Получено с "https://en.wikipedia.org/w/index.php?title=4D_vector&oldid=1229841501"