# Transform, clipping, and lighting

Transform, clipping & Lighting (TCL), est un terme de graphisme, utilisé dans l'industrie informatique et en particulier dans la conception et les « rendus » de scènes en 3 dimensions.

## Description

Transform est la tâche qui permet de convertir des données spatiales depuis un espace virtuel en 3 dimensions vers l'écran (une surface à 2 dimensions).
Clipping veut dire que l'on ne traitera que les éléments visibles de la scène 3D.
Lighting est la 3e opération qui va permettre d'éclairer la scène : éclairage des objets dans la scène 3D, calcul de l'interaction des composantes de la lumière sur les objets puis envoi de la scène ainsi calculée à l'écran.

## Historique

T&L est apparu juste avant les années 2000, les ingénieurs pensant que les processeurs pourraient s'acquitter de cette tâche, sans prévoir que la complexité des scènes dans les jeux 3D allait augmenter considérablement, laissant le processeur incapable de traiter de telles opérations.
La complexité des scènes graphiques et les nouveaux modes d'éclairages des scènes 3D générant un trop grand nombre d'opérations pouvant être traitées par les unités des microprocesseurs.
La puce graphique Nvidia Geforce 256 apparue en 1999, fut la pionnière dans ce genre de traitement. Bénéficiant d'une architecture développée pour le traitement de telles données, elle fut capable de répondre aux besoins spécifiques de ce genre de calculs.

## Fonctionnement

Voici une explication très simplifiée d'un rendu de scène 3D.
Lors de la création de la scène 3D, au premier stade (pipeline) il faut calculer tous les objets présents dans la scène (polygones, arêtes, sommets (Vertex).
C'est l'opération de Vertex Processing (alias Triangle Setup) qui consiste à assembler tous les objets en triangles de base.
Puis il faut ramener les informations de coordonnées spatiales 3D vers un plan en deux dimensions.
Ensuite grâce à un buffer (mémoire tampon), on stocke et on indexe l'ordre des polygones (Z-buffering) en profondeur, afin de garder uniquement ce qui est visible du point de vue de l'observateur de la scène.
En effet, il n'y a pas d’intérêt de calculer un rendu de texture sur une surface masquée par un autre polygone d'une part et cela serait désastreux au point de vue performances d'autre part.
Et enfin, lorsque la scène est ainsi simplifiée on procède à l'éclairage : on calcule ainsi, en fonction des sources lumineuses présentes, la valeur de la couleur du pixel correspondant.
Enfin, le GPU envoie le résultat vers la sortie vidéo le plus vite possible (on stocke les 3 dernières images de la scène afin d'éviter les scintillements (triple-buffering) ).
Le GeForce256 pouvait gérer simultanément jusqu’à 8 sources d'éclairage dans la scène, sans pénaliser la vitesse de rendu. L'intégration de la fonctionnalité T&L en hardware permettant de calculer une scène jusqu'à 5 fois plus vite qu'en utilisant le processeur seul. Le calcul des scènes 3D se fit en mode software (par le jeu lui-même) jusqu'à la version 6 de DirectX.
L'arrivée de l'API Microsoft DirectX 7 apporta la gestion de l'accélération matérielle des fonctions de T&L. Celles-ci étaient en revanche déjà supportées depuis longtemps par la spécification de l'API OpenGL.
Pour information et selon Nvidia, la définition d'un GPU en 1999 était la suivante :
« Processeur à puce unique, doté des moteurs intégrés de transformation, éclairage, configuration/détourage des triangles et rendu, capable de traiter un minimum de 10 millions de polygones par seconde. »

## Évolutions technologiques

Depuis fin 2001, presque toutes les puces graphiques supportent les fonctionnalités T&L.
L'évolution technique, rapide, dans le monde 3D a rendu obsolète T&L, cette fonction étant maintenant remplacée par les fonctions plus complexes : les « shaders » (vertex shader & pixel shader), fonctions entièrement programmables intégrées dans les GPUs, depuis l'arrivée de DirectX 8.