Unidad de mapeo de texturas
# Unidad de mapeo de texturas

En los gráficos por computadora, una unidad de mapeo de texturas (TMU, del inglés texture mapping unit) es un componente de las unidades de procesamiento de gráficos (GPU) modernas. Pueden rotar, cambiar el tamaño y distorsionar una imagen de mapa de bits para colocarla en un plano arbitrario de un modelo 3D dado como una textura, en un proceso llamado mapeo de texturas. En las tarjetas gráficas modernas se implementa como una etapa discreta en un canal de gráficos, mientras que cuando se introdujo por primera vez se implementó como un procesador separado, por ejemplo, como se ve en la tarjeta gráfica Voodoo2.

## Antecedentes e historia

La TMU surgió debido a las demandas informáticas de muestreo y transformación de una imagen plana (como el mapa de textura) al ángulo y la perspectiva correctos que necesitaría para estar en el espacio 3D. La operación de cómputo es una gran multiplicación matricial, que las CPU de la época (los primeros Pentium) no podían manejar con un rendimiento aceptable.

En 2013, las TMU forman parte de la canalización de sombreadores y se desvinculan de las canalizaciones de salida de procesamiento (ROP). Por ejemplo, en la GPU Cypress de AMD, cada tubería de sombreado (de las cuales hay 20) tiene cuatro TMU, lo que le da a la GPU 80 TMU. Esto lo hacen los diseñadores de chips para unir estrechamente los sombreadores y los motores de textura con los que trabajarán.

## Geometría

Las escenas 3D generalmente se componen de dos cosas: geometría 3D y las texturas que cubren esa geometría. Las unidades de textura en una tarjeta de video toman una textura y la "asignan" a una pieza de geometría. Es decir, envuelven la textura alrededor de la geometría y producen píxeles texturizados que luego se pueden escribir en la pantalla. Las texturas pueden ser una imagen real, un mapa de luz o incluso mapas normales para efectos de iluminación de superficie avanzados.

## Tasa de relleno de textura (Texture fill rate)

Para renderizar una escena 3D, las texturas se mapean sobre la parte superior de las mallas poligonales. Esto se denomina mapeo de texturas y se logra mediante unidades de mapeo de texturas (TMU) en la tarjeta de video. La tasa de relleno de textura es una medida de la velocidad con la que una tarjeta en particular puede realizar el mapeo de textura.

Aunque el procesamiento de sombreado de píxeles se está volviendo más importante, este número todavía tiene algo de peso. El mejor ejemplo de esto es la X1600 XT. Esta tarjeta tiene una proporción de 3 a 1 de procesadores de sombreado de píxeles/unidades de mapeo de texturas. Como resultado, la X1600 XT logra un rendimiento más bajo en comparación con otras GPU de la misma era y clase (como la 7600GT de nVidia). En el rango medio, el mapeo de texturas aún puede ser un cuello de botella. Sin embargo, en el extremo superior, el X1900 XTX tiene la misma proporción de 3 a 1, pero lo hace bien porque las resoluciones de pantalla superan y tiene más que suficiente poder de mapeo de texturas para manejar cualquier pantalla.

## Detalles

### Unidades de mapeo de texturas (TMUs - Texture mapping units)

Las texturas deben abordarse y filtrarse. Este trabajo lo realizan TMU que trabajan en conjunto con unidades de sombreado de vértices y píxeles. Es trabajo de la TMU aplicar operaciones de textura a los píxeles. El número de unidades de textura en un procesador de gráficos se usa cuando se comparan dos tarjetas diferentes para el rendimiento de textura. Es razonable suponer que la tarjeta con más TMU será más rápida en el procesamiento de la información de textura. En las GPU modernas, las TMU contienen unidades de dirección de textura (TA) y unidades de filtrado de textura (TF). Las unidades de dirección de textura asignan elementos de textura a píxeles y pueden realizar modos de direccionamiento de textura. Las unidades de filtrado de texturas realizan opcionalmente el filtrado de texturas basado en hardware.

### Tuberías (Pipelines)

Una canalización es la arquitectura de la tarjeta gráfica, que proporciona una idea generalmente precisa de la potencia informática de un procesador gráfico.

Una tubería no se acepta formalmente como un término técnico. Hay diferentes conductos dentro de un procesador de gráficos, ya que se están realizando funciones separadas en un momento dado. Históricamente, se ha referido a él como un procesador de píxeles que está conectado a una TMU dedicada. Una Geforce 3 tenía cuatro canalizaciones de píxeles, cada una de las cuales tenía dos TMU. El resto de la tubería manejó cosas como la profundidad y las operaciones de combinación.

La ATI Radeon 9700 fue la primera en romper este molde al colocar varios motores de sombreado de vértices independientes de los sombreadores de píxeles. La GPU R300 utilizada en la Radeon 9700 tenía cuatro sombreadores de vértices globales, pero dividió el resto de la canalización de renderizado por la mitad (era, por así decirlo, de doble núcleo) cada mitad, llamada cuádruple, tenía cuatro sombreadores de píxeles, cuatro TMU y cuatro ROP.

Algunas unidades se usan más que otras y, en un esfuerzo por aumentar todo el rendimiento del procesador, intentaron encontrar un "punto óptimo" en la cantidad de unidades necesarias para una eficiencia óptima sin necesidad de un exceso de silicio. En esta arquitectura, el nombre canalización de píxeles perdió su significado ya que los procesadores de píxeles ya no estaban conectados a TMU individuales.

El sombreador de vértices se había desacoplado durante mucho tiempo, comenzando con el R300, pero el sombreado de píxeles no era tan fácil de hacer, ya que requería datos de color (por ejemplo, muestras de textura) para trabajar y, por lo tanto, necesitaba estar estrechamente acoplado a una TMU.

Dicho acoplamiento permanece hasta el día de hoy, donde el motor de sombreado, hecho de unidades capaces de ejecutar datos de vértices o píxeles, está estrechamente acoplado a una TMU pero tiene un despachador de barra transversal entre su salida y el banco de ROP.

### Canalizaciones de salida de procesamiento (ROPs - Render output pipelines)

La canalización de salida de procesamiento es un término heredado y, con más frecuencia, se denomina unidad de salida de procesamiento. Su trabajo es controlar el muestreo de píxeles (cada píxel es un punto adimensional), por lo que controla el suavizado, cuando más de una muestra se fusiona en un píxel. Todos los datos renderizados tienen que viajar a través del ROP para poder escribirse en el framebuffer, desde allí se pueden transmitir a la pantalla.

Por lo tanto, el ROP es donde la salida de la GPU se ensambla en una imagen de mapa de bits lista para mostrar.

### Uso en GPGPU

En GPGPU, se pueden usar mapas de textura en 1, 2 o 3 dimensiones para almacenar datos arbitrarios. Al proporcionar interpolación, la unidad de mapeo de textura proporciona un medio conveniente para aproximar funciones arbitrarias con tablas de datos.

