En informática , un vector 4D es un tipo de datos vectoriales de 4 componentes . Los usos incluyen coordenadas homogéneas para el espacio tridimensional en gráficos por computadora y valores alfa rojo, verde, azul ( RGBA ) para imágenes de mapa de bits con un color y canal alfa (como tales, se usan ampliamente en gráficos por computadora). También pueden representar cuaterniones (útiles para rotaciones) aunque el álgebra que definen es diferente.
Soporte de hardware de computadora
Algunos microprocesadores tienen soporte de hardware para vectores 4D con instrucciones que tratan con instrucción única de 4 carriles , instrucciones de datos múltiples ( SIMD ), generalmente con una ruta de datos de 128 bits y campos de coma flotante de 32 bits . [1]
Las instrucciones específicas (por ejemplo, producto escalar de 4 elementos ) pueden facilitar el uso de un registro de 128 bits para representar un vector 4D. Por ejemplo, en orden cronológico: Hitachi SH4 , extensión PowerPC VMX128, [2] e Intel x86 SSE4. [3]
Algunos motores vectoriales de 4 elementos (por ejemplo, las unidades vectoriales PS2 ) fueron más allá con la capacidad de transmitir componentes como fuentes múltiples y soporte de productos cruzados . [4] [5] generaciones anteriores de procesamiento de gráficos unidad (GPU) tuberías de sombreado utilizados palabra de instrucción muy larga (VLIW) conjuntos de instrucciones adaptadas para operaciones similares.
Soporte de software
El uso de SIMD para vectores 4D se puede empaquetar convenientemente en una biblioteca de matemáticas vectoriales (comúnmente implementada en C o C ++ ) [6] [7] [8] comúnmente usada en el desarrollo de videojuegos , junto con soporte de matriz 4 × 4 . Estos son distintos de las bibliotecas de álgebra lineal más generales en otros dominios que se centran en matrices de tamaño arbitrario. Dichas bibliotecas a veces admiten vectores 3D rellenados en 4D o cargando datos 3D en registros 4D, con la aritmética mapeada de manera eficiente a las operaciones SIMD mediante implementaciones de funciones intrínsecas por plataforma . Existe la posibilidad de elegir entre los enfoques AOS y SOA dada la disponibilidad de registros de 4 elementos, frente a las instrucciones SIMD que generalmente se adaptan a datos homogéneos.
Los lenguajes de sombreado para la programación de la unidad de procesamiento de gráficos (GPU) generalmente tienen tipos de datos 4D (junto con 2D, 3D) con accesos xyzw que incluyen permutaciones o acceso swizzle , por ejemplo, lo que permite intercambiar fácilmente los formatos RGBA o ARGB, acceder a dos vectores 2D empaquetados en una 4D vector, etc. [9] Las GPU modernas se han movido desde entonces a tuberías de múltiples subprocesos (SIMT) de instrucción única escalar (para una mayor eficiencia en la computación de propósito general en unidades de procesamiento de gráficos (GPGPU)) pero aún admiten este modelo de programación. [10]
Ver también
- Espacio euclidiano
- Espacio de cuatro dimensiones
- Cuaternio
- Dimensión
- Espacio de color RGBA
- Tesseract
- Matriz 4 × 4
Referencias
- ^ "intrínsecos de Intel SSE" .
- ^ "Poniéndolo todo junto: Anatomía de la consola de juegos XBox 360 (ver producto virtual VMX128)" (PDF) .
- ^ "producto escalar Intel SSE4" .
- ^ "Manual de usuario de VU0" (PDF) .
- ^ "Estudio de viabilidad sobre el uso de la PlayStation 2 para la informática científica" (PDF) .
- ^ "sce vectormath" .
- ^ "GLM (biblioteca de matemáticas vectoriales)" .
- ^ "Matemáticas de Microsoft DirectX" .
- ^ "Tipos de datos GLSL y swizzling" .
- ^ "Siguiente núcleo de gráficos AMD" .