Esta es una de las secciones más críticas de esta consola, básicamente hace que la GameCube sea una GameCube.
La historia de la GPU de esta consola tiene algunas conexiones interesantes: Wei Yen, el director del SoC del N64 (el RCP), luego fundó ArtX y consiguió un contrato con Nintendo para desarrollar su chip de próxima generación: Flipper.
Hubo muchos avances realizados desde la iteración anterior, por ejemplo, el subsistema se simplificó severamente a un núcleo único (pero poderoso).
Durante el proceso de desarrollo, ArtX fue adquirido por ATI, que a su vez fue vendido a AMD seis años después. Por lo tanto, es por eso que ves una pegatina de ATI estampada en la parte frontal de la caja.
Arquitectura y diseño
Flipper es un bloque complejo que maneja múltiples servicios , así que enfoquémonos en el componente gráfico por ahora (ya que es el responsable de dar vida a nuestra geometría). Llamaremos a esta área la GPU o Motor Gráfico y, si has estado leyendo el artículo de la N64, solo para que sepas que el núcleo ahora es funcional desde el primer momento, por lo que los programadores no tendrán que preocuparse por inyectar código para hacerlo funcionar. Sin embargo, habrá algunas partes interesantes que son personalizables.
Como siempre, para dibujar un fotograma en la pantalla, nuestros datos pasarán por el canal de la GPU. Los datos pasan por muchos componentes diferentes que podemos agrupar en cuatro etapas:
Base de datos

Diagramas de la fase de base de datos.
La CPU y la GPU se comunican entre sí usando un búfer FIFO de longitud fija en la RAM principal, esta es una porción reservada donde la CPU escribirá comandos de dibujo que la GPU leerá (y eventualmente mostrará), esta funcionalidad es nativamente soportada por la CPU y la GPU.
Además, la CPU y la GPU no tienen que estar apuntando al mismo FIFO al mismo tiempo, por lo que la CPU puede llenar uno separado mientras la GPU está leyendo el primero . Esto evita el tiempo de inactividad.
Emitir comandos individuales para construir nuestra geometría puede resultar muy tedioso con escenas complejas, por lo que las bibliotecas oficiales incluyen herramientas que generan las Listas de Visualización necesarias (conjunto precompilado de comandos FIFO) a partir de los activos del juego; este bloque solo necesita ser copiado a la RAM para permitir que la GPU los muestre de manera efectiva.
La GPU contiene un procesador de comandos que se encarga de buscar comandos en el FIFO.
Geometría

Diagrama de la fase de vértice usando modo indirecto.
Aquí los primitivos se transforman para darles forma según el escenario deseado y se preparan para el rasterizado. El motor utiliza una unidad de vértices o 'VU' dedicada para lograr esto.
Hay dos modos de vértice disponibles para manejar los primitivos emitidos a través del FIFO:
- Modo directo: La CPU emite cada entrada FIFO con todos los atributos requeridos (posición, norma, color, coordenada de textura o índice de matriz). Útil cuando los datos ya están en caché.
- Modo indirecto: La entrada del FIFO contiene un valor de índice que especifica dónde se encuentra la información del atributo en la RAM, por lo que la unidad de vértices necesita buscarlo por sí misma. Estos datos están estructurados como una matriz, así que para que la VU la recorra, cada entrada de vértice debe especificar dónde comienza la matriz (puntero base), cuán larga es cada entrada (paso) y en qué posición está el vértice (índice).
Una vez cargados, los primitivos pueden ser transformados, recortados, iluminados (cada vértice tendrá un valor RGB que también puede ser interpolado para propósitos de sombreado Gouraud) y finalmente, proyectados.
Textura

Diagrama de la fase de textura usando una configuración predeterminada.
Ahora es el momento de aplicar texturas y efectos a nuestros modelos, y para eso la GPU incluye múltiples unidades que procesarán nuestros píxeles. Ahora, este es un procedimiento muy sofisticado (aunque bastante complejo), por lo que si encuentras difícil seguirlo, solo piensa en él como una gran línea de ensamblaje que procesa píxeles. Habiendo dicho esto, hay tres grupos de unidades disponibles:
- Cuatro unidades de píxel paralelas (también llamadas 'canales de píxeles'): Rasterizan nuestras primitivas (las convierte en píxeles). Tener cuatro unidades disponibles permite entregar hasta 2x2 píxeles en cada ciclo.
- Una unidad de mapeo de textura al final de cada unidad de píxel (dando cuatro en total): Juntas procesan hasta ocho texturas para nuestras primitivas (ahora meros píxeles) en cada ciclo.
- También puede hacer un bucle para fusionar múltiples capas de textura sobre el mismo primitivo, esta característica se llama Multitexturizado y puede usarse para lograr texturas detalladas, mapeo de entorno (reflejos) y mapeo de relieves , por ejemplo.
- Finalmente, la unidad también proporciona un búsqueda temprana del z-búfer, mapeo mip (procesamiento de una textura de menor tamaño, basado en el nivel de detalle) y filtrado anisotrópico (una bienvenida mejora sobre los filtros anteriores que proporciona mayor detalle con texturas inclinadas).
- Unidad de Entorno de Texturas (Texture Environment unit) o 'TEV': Un combinador potente de colores, programable de 16 etapas. Básicamente combina múltiples texels (iluminación, texturas y constantes) para lograr una inmensa cantidad de efectos de textura que se aplicarán sobre nuestros polígonos.
- La unidad funciona recibiendo cuatro texels que luego se procesan según la operación solicitada. Después, puede alimentarse a sí misma con los texels resultantes como nueva entrada, por lo que en la siguiente etapa/ciclo, la unidad puede realizar un tipo diferente de operación sobre el resultado anterior. Este 'bucle' puede durar hasta 15 iteraciones.
- Cada etapa tiene 2^4 operaciones para elegir y, considerando que el resultado puede ser re-procesado en la siguiente etapa, ¡hay ~5.64 × 10^511 permutaciones posibles!
- Los programadores instalan el TEV en tiempo de ejecución (lo que significa que puede cambiar en cualquier momento) y esto es crucial, ya que abre la puerta a muchos materiales y efectos originales.
Todo esto es asistido por 1 MB de memoria de Textura (del tipo 1T-SRAM) que puede dividirse en caché y memoria Scratchpad (RAM rápida). Descompresión de hardware en tiempo real para texturas SRTC (Compresión de Texturas S3) también está disponible para ajustar más texturas en ese solo megabyte. de memoria disponible.
Renderizado

Diagrama de la fase de renderizado.
La etapa final del proceso de renderizado incluye aplicar algunos toques opcionales pero útiles a nuestra escena:
- Niebla: Funde el último color del TEV con un color constante de niebla para simular efectivamente un entorno brumoso.
- Z-compare: Un Z-buffer tardío. El motor usará 2 MB de 1T-SRAM embebida para los cálculos de Z-buffering.
- Mezcla: Combina los colores del cuadro actual con el búfer de cuadros anterior.
- Tramado: Como indica el nombre, aplica tramado sobre nuestro cuadro.
El frame resultante finalmente se escribe en el búfer de tramas en la 1T-SRAM integrada, pero esto todavía está bloqueado dentro de Flipper (la área se llama 'Embedded Frame Buffer' o 'EFB', aunque también incluye el z-buffer). Entonces, para mostrarlo en nuestra TV, tenemos que copiarlo al bastidor de tramas externo o 'XFB' , que puede ser recogido por la Interfaz de vídeo o 'VI'. Además, el proceso de copia puede aplicar efectos como Antialiasing (suaviza los bordes), Desentremecedor (suaviza los cambios repentinos en brillo), conversión de RGB a YUV (un formato similar que ocupa menos espacio en la memoria) y escalado Y (escala verticalmente el frame).
Vale la pena mencionar que el área XFB también puede ser manipulada por la CPU, esto le permite combinar mapas de bits previamente renderizados con nuestro frame recién renderizado; o cuando ciertos juegos necesitan renderizar frames muy ricos en color que no caben en el EFB, entonces se renderizan en partes y se combinan por la CPU después (siempre sincronizados con el VI).
Comparación interactiva
Es hora de poner todo esto en perspectiva, revisa cómo los programadores evolucionaron los diseños de sus juegos anteriores para aprovechar las nuevas capacidades gráficas de esta consola. ¡No olvides que los ejemplos son interactivos!
La mejora
El famoso modelo de Mario que tuvo que ser reducido debido al conteo de polígonos en la generación anterior fue completamente rediseñado para esta, echa un vistazo más de cerca a cómo el modelo evolucionó de caras simples a mangas arrugadas.

Modelo interactivo disponible en la edición moderna
Super Smash Bros (1999) para la N64.
320 triángulos.

Modelo interactivo disponible en la edición moderna
Super Smash Bros. Melee (2001) para la GC.
4.718 triángulos.
Es realmente impresionante cuánto detalle se ha añadido en tan sólo dos años, ¿no?
La actualización
En este caso, Sonic Team ya diseñó un modelo de Sonic para su consola única, pero después de haber porteado su juego a la GameCube, fueron capaces de añadir más polígonos a su modelo, logrando mejores detalles.

Modelo interactivo disponible en la edición moderna
Sonic Adventure (1999) para la DC.
1.001 triángulos.

Modelo interactivo disponible en la edición moderna
Sonic DX (2003) para la GC.
1.993 triángulos.
Creatividad
Como se puede ver en el funcionamiento interno de este canal, la tecnología gráfica ha evolucionado hasta el punto que los programadores ahora pueden tomar el control de ciertas funciones del proceso de renderizado.

The Legend of Zelda: The Wind Waker (2003).
Al mismo tiempo, las tarjetas gráficas de PC estaban empezando a descartar los canales de funciones fijas en favor de núcleos de sombreado (unidades que ejecutan pequeños programas que definen cómo los píxeles son operados). Flipper todavía contiene una GPU de función fija, sin embargo, al incluir componentes como la unidad TEV, uno podría argumentar que Nintendo proporcionó su propia solución de sombreado.
Supongo que uno de los mejores ejemplos de juegos que utilizaron esta nueva capacidad es The Legend of Zelda: Wind Waker que implementa una técnica única de color/iluminación conocida como Cel shading para hacer que sus texturas se vean como una caricatura.
Sistema de salida de vídeo
La señal de vídeo produce una resolución de hasta 640x480 píxeles (o 768×576 px en PAL) con hasta 16,7 millones de colores (profundidad de 24 bits). Además, el sistema podría transmitir su señal en modo progresivo (que tiene una imagen más clara, pero no todos los televisores lo soportaban durante esa época).
El XFB puede tener múltiples dimensiones, así que, por razones de compatibilidad, la interfaz de vídeo hará todo lo posible para mostrar el frame, remuestreando el XFB para caber en la pantalla de televisión basada en la región.
Conexiones
La consola no incluía una, sino dos conectores de salida de vídeo:

Conexiones A/V en la parte posterior.
- Uno llamado Analógico A/V que en realidad es el clásico Multi Out. Este es el modo más comúnmente usado.
- La versión PAL de esta consola no lleva S-Video y la NTSC no ofrece RGB (¡qué mal!).
- Otro llamado Digital A/V que envía audio y vídeo en forma digital (similar al HDMI hoy en día, pero usando un protocolo completamente diferente!).
- Nintendo lanzó un conjunto de cables de componentes que se conectan a este enchufe. El mismo enchufe incorporaba un DAC de vídeo y un codificador para convertir la señal digital en YPbPr (calidad óptima).
- ¡El cable se vendió como un accesorio adicional y ahora se considera una especie de reliquia!

