stringtranslate.com

Vector 4D

En informática , un vector 4D es un tipo de datos vectoriales de 4 componentes . Entre sus usos se incluyen las coordenadas homogéneas para el espacio tridimensional en gráficos por ordenador y los valores alfa rojo-verde-azul ( RGBA ) para imágenes de mapa de bits con un canal de color y alfa (por lo que se utilizan ampliamente en gráficos por ordenador). 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 manejan instrucciones SIMD ( instrucción única de 4 carriles , datos múltiples ), generalmente con una ruta de datos de 128 bits y campos de punto 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 entre productos . [4] [5] Las generaciones anteriores de canales de sombreado de unidades de procesamiento gráfico (GPU) usaban conjuntos de instrucciones de palabras de instrucción muy largas (VLIW) diseñados para operaciones similares.

Soporte de software

El uso de SIMD para vectores 4D se puede envolver convenientemente en una biblioteca de matemáticas vectoriales (comúnmente implementada en C o C++ ) [6] [7] [8] comúnmente utilizada en el desarrollo de videojuegos , junto con soporte de matriz 4x4 . Estas son distintas 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 a 4D o carga de datos 3D en registros 4D, con aritmética mapeada eficientemente a operaciones SIMD por 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 están adaptadas a datos homogéneos.

Los lenguajes de sombreado para la programación de unidades de procesamiento gráfico (GPU) suelen tener tipos de datos 4D (junto con 2D, 3D) con accesores xyzw que incluyen permutaciones o acceso swizzle , por ejemplo, permitiendo un intercambio fácil de formatos RGBA o ARGB, accediendo a dos vectores 2D empaquetados en un vector 4D, etc. [9] Desde entonces, las GPU modernas han migrado a tuberías escalares de instrucción única, múltiples subprocesos (SIMT) (para una mayor eficiencia en la computación de propósito general en unidades de procesamiento gráfico (GPGPU)) pero aún admiten este modelo de programación. [10]

Véase también

Referencias

  1. ^ "intrínsecos de Intel SSE".
  2. ^ "Poniéndolo todo junto: Anatomía de la consola de juegos XBox 360 (ver producto punto VMX128)" (PDF) .
  3. ^ "producto punto Intel SSE4".
  4. ^ "Manual de usuario VU0" (PDF) .
  5. ^ "Estudio de viabilidad sobre el uso de la PlayStation 2 para la computación científica" (PDF) .
  6. ^ "sce vectormath". GitHub . 19 de abril de 2022.
  7. ^ "GLM (biblioteca de matemáticas vectoriales)".
  8. ^ "Matemáticas de Microsoft DirectX".
  9. ^ "Tipos de datos GLSL y combinación de ambos".
  10. ^ "El próximo núcleo gráfico de AMD".