« Architecture de la PlayStation 2 (index)

Architecture de la PlayStation 2

Chapter 5: Graphismes


Table des matières

  1. Architecture et design
    1. Pré-traitement
    2. Rastérisation
    3. Texturing
    4. Tests
    5. Post-traitement
  2. Encore plus de post-traitement
  3. Des modèles plus détaillés
  4. Sortie Vidéo

En considérant tout le travail à la charge de l'Emotion Engine, reste-t-il quelque chose ? La dernière étape, en réalité : l'affichage !

Image
Final Fantasy X (2001).

Il y a une puce simple mais rapide et spécialisée : le Graphics Synthesizer, ou 'GS', cadencé à ~147.46 MHz. Il embarque 4 MB de DRAM pour réaliser tout le traitement en interne. Et donc, cela réduit le besoin d'accéder à la mémoire principale. La RAM embarquée (eDRAM) est connectée par le biais de différents bus en fonction du type de données.

Le GS offre moins de fonctionnalités que d'autres systèmes graphiques précédemment analysés sur ce site. Néanmoins, il est vraiment rapide dans son travail.

Architecture et design

Ce GPU ne fait que de la rasterisation et c'est tout... Génération de pixels, mappage de textures, application de la lumière et quelques autres effets. Cela signifie qu'il n'y a pas de transformations de points (celles-ci sont réalisées par les VPUs). Aussi, il s'agit d'un pipeline figé, donc pas d'ajustements sophistiqués ni de shaders, vous êtes coincés avec un modèle d'ombrage prédéfini (comme Gouraud).

Image
Design du pipeline du Graphics Synthesizer

Cela semble plutôt simple, non ? Bien, voyons plus en détails comment se déroule chaque étape.

Pré-traitement

Image
Étage de pré-traitement.

L'Emotion Engine démarre le Graphics Synthesize en approvisionnant sa DRAM embarquée avec les materials nécessaires (bitmaps des textures et Colour Lookup tables, ces dernières étant aussi connues sous le nom de 'CLUT'), en assignant des valeurs sur les registres du GS pour le paramétrer, et enfin, en envoyant les commandes de rendu (Display Lists) qui déclenchent le rendu par le GS de primitives (points, lignes, triangles, sprites, etc) à des positions spécifiquent à l'écran.

En complément, le GS pré-traitera certaines valeurs qui seront nécessaires pour les prochains calculs. La plus notable étant le résultat de l'algorithme d'analyse différentielle, qui sera utilisée pour les interpolations durant le rendu.

Rastérisation

Image
Étage de rastérisation.

En utilisant les résultats des calculs précédents, le renderer génère des pixels à partir des primitives. Cette unité peut générer 8 pixels (avec textures) ou 16 pixels (sans textures) simultanément, avec pour chaque entrée de pixel le calcul des propriétés suivantes :

Il effectue également des Scissoring Tests pour éliminer les polygones en dehors de l'image (à partir de leurs coordonnées X/Y). Certaines propriétés des pixels sont transmis à l'étape du 'Pixel testing' pour des tests complémentaires. Le lighting est également fourni en sélectionnant une des deux options disponibles, Gouraud et Flat.

L'ensemble est alors livré au moteur de 'Texture mapping', mais chaque propriété est traitée par une 'sous-moteur' spécialisé, ce qui permet de gérer plusieurs propriétés simultanément.

Texturing

Image
Étage de placage de textures

Cette étape est accomplie par une grande unité Pixel qui peut calculer jusqu'à 16 pixels en même temps : ici, les textures seront appliquées aux polygones (à présent des pixels). De plus, les effets de brouillard et d'anticrénelage sont appliqués ici.

Les matrices des textures sont récupérées depuis la DRAM dans une zone définie comme le Texture buffer, bien que cela soit interfacé via une zone séparée intitulée Texture Page Buffer qui semble agir comme un mécanisme de mise en cache des textures. Les CLUTs sont également mappés en utilisant ce système de pages. Les deux sont récupérés au travers d'un bus 512 bits.

L'unité pixel réalise de la correction de perspective pour appliquer les textures sur les primitives (une grande amélioration, par rapport à la précédente approche d'affine mapping). De plus, il permet aussi un filtrage bilinéaire ou trilinéaire, ce dernier étant utilisé en même temps que les textures à mipmapping.

Tests

Image
Étage de test des pixels

Ici, certains pixels seront éliminés s'ils ne remplissent pas certains critères. Ceci étant dit, les tests suivants sont réalisés :

Post-traitement

Image
Étage de post-traitement

La dernière étape peut appliquer des effets sur nos nouveaux pixels, en utilisant le précédent frame-buffer qui réside dans la DRAM locale :

Enfin, le nouveau frame-buffer, ainsi que le Z-buffer mis à jour, sont écrits en mémoire via un bus 1024 bits.

Encore plus de post-traitement

Il y a à l'intérieur du GS un composant dédié, intitulé Programmable CRT Controller ou 'PCRTC', qui transmet le frame-buffer en mémoire vers la sortie Vidéo, afin que vous puissiez voir l'image sur la TV. Mais ce n'est pas tout : il contient aussi un ensemble spécifique, intitulé Merge Circuit, qui permet d'effectuer un mélange d'alpha entre deux frame-buffers séparés (c'est utile lorsque les jeux souhaitent réutiliser l'image précédente pour constituer la nouvelle). L'image qui en résulte peut être transmise à travers le signal Vidéo et/ou être écrite en mémoire en retour.

Des modèles plus détaillés

Tout ceci étant dit, cela nous a certainement apporté des programmes de conception plus aboutie, pour affiner des personnages déjà célèbres. Jetez un œil à cette comparaison 'Avant/Après' :

3D model 3D model 3D model
Modèle interactif disponible dans l'édition moderne
Crash Bandicoot (1996) pour la PS1.
732 triangles.

3D model 3D model 3D model
Modèle interactif disponible dans l'édition moderne
Crash Bandicoot: The Wrath of Cortex (2001).
2226 triangles.

Voici des personnages de nouveaux opus, ils ont été modélisés de zéro avec un grand niveau de détails :

3D model 3D model 3D model
Modèle interactif disponible dans l'édition moderne
Kingdom Hearts (2002).
2744 triangles.

3D model 3D model 3D model
Modèle interactif disponible dans l'édition moderne
Dragon Quest VIII (2004).
2700 triangles.

Il est important de mentionner que des jeux comme Dragon Quest ont implémenté un modèle de lighting personnalisé, intitulé Cel Shading (un nom que j'ai déjà mentionné) ; toutefois, dans mes précédents articles j'ai expliqué que la GPU en était principalement responsable. Dans le cas de la PS2, les calculs de couleur requis sont vraisemblablement réalisés par l'Emotion Engine, puisque le GS n'est pas aussi flexible que les autres GPUs.

Sortie Vidéo

Comme stipulé précédemment, le PCRTC transmet le frame-buffer à travers le signal Vidéo. L'interface peut émettre le signal vidéo à travers un large choix de formats (pour fonctionner avec les TVs de n'importe quelle région géographique) :

Image
Le côté droit de la console , vu de l'arrière. Montre le port A/C, le port audio digital, et la sortie AV Multi.

Il y a une certaine quantité de modes possibles, mais cela se résume aux formats adoptés durant le début des années 2000, ce qui réduit donc à PAL et NTSC. Aussi, même si le PAL offrait une plus haute définition que le NTSC, certaines versions Européennes de jeux NTSC avaient recours à des bandes noires pour masquer les lignes horizontales non utilisées, et abaissaient la fréquence de rafraîchissement pour rester dans la limite des 50 Hz (je les appelle des 'mauvais portages' !).

Le port de sortie Vidéo (Multi A/V) est vraiment pratique. Il transporte RGB, Component, S-Video et composite. Ainsi, tous les signaux importants sont disponibles, sans nécessiter des adaptateurs propriétaires ni des modifications internes.


Previous: 4. Coprocesseurs

Next: 6. Audio


Rodrigo Copetti © 2026 RSS Feed

Basculer vers l'édition moderne

Accueil · Articles · Support · À propos de l'auteur · À propos du site