rendu logiciel
( Apprenez comment et quand supprimer ce message ) Moteur de rendu logiciel exécuté sur un appareil sans GPU Le rendu logiciel est le processus de génération d'une image à parti...

Le rendu logiciel est le processus de génération d'une image à partir d'un modèle au moyen d'un logiciel informatique. Dans le contexte du rendu graphique , le rendu logiciel désigne un processus de rendu indépendant des circuits intégrés spécifiques (ASIC) du matériel graphique , tels qu'une carte graphique . Le rendu est entièrement réalisé par le processeur (CPU). L'avantage principal de ce procédé est de se passer de carte graphique, mais l'inconvénient est que le processeur n'est pas conçu spécifiquement pour le rendu graphique comme une carte graphique, ce qui entraîne des temps de rendu plus longs.
Le rendu est utilisé en architecture, dans les simulateurs, les jeux vidéo, les films, les effets visuels pour la télévision et la visualisation de conception. Dernière étape du processus d'animation, il confère l'apparence finale aux modèles et à l'animation grâce à des effets visuels tels que l'ombrage, le texturage, les ombres portées, les reflets et le flou de mouvement. On distingue deux grandes catégories de rendu : le rendu en temps réel (ou rendu en ligne) et le pré-rendu (ou rendu hors ligne). Le rendu en temps réel permet de rendre une scène de manière interactive, comme dans les jeux vidéo 3D ; chaque image doit généralement être rendue en quelques millisecondes. Le rendu hors ligne sert à créer des images et des films réalistes, où le rendu de chaque image peut prendre des heures, voire des jours, ou encore au débogage de code graphique complexe par les programmeurs.
Rendu logiciel en temps réel
En rendu temps réel, l'accent est mis sur la performance. Les premiers logiciels de rendu temps réel avec textures pour PC utilisaient diverses techniques pour créer l'illusion de la géométrie 3D ( la véritable 3D se limitait alors à des polygones plats ou ombrés par l'algorithme de Gouraud, principalement utilisés dans les simulateurs de vol ). Ultima Underworld , par exemple, permettait une navigation verticale limitée, des sols inclinés et la superposition de pièces, mais recourait à des sprites pour tous les objets détaillés. La technologie employée dans ces jeux est actuellement classée comme 2.5D .
L'un des premiers jeux à présenter une architecture similaire aux titres 3D modernes, permettant une liberté de mouvement complète à 6 degrés de liberté , fut Descent , dont les modèles 3D étaient entièrement composés de polygones triangulaires texturés par des bitmaps. Les graphismes voxelisés gagnèrent également en popularité pour le rendu rapide et relativement détaillé des terrains, comme dans Delta Force , mais les performances limitées du matériel informatique dominant finirent par en rendre l'utilisation impossible. Quake intègre un moteur de rendu logiciel performant, développé par Michael Abrash et John Carmack . Grâce à sa popularité, Quake et d'autres jeux 3D polygonaux de l'époque contribuèrent aux ventes de cartes graphiques , et de plus en plus de jeux commencèrent à utiliser des API matérielles telles que DirectX et OpenGL . Bien que le rendu logiciel ait perdu de son importance en tant que technologie de rendu principale, de nombreux jeux, jusque dans les années 2000, conservaient un moteur de rendu logiciel comme solution de repli. Unreal et Unreal Tournament , par exemple, proposaient des moteurs de rendu logiciels capables d'offrir une qualité et des performances satisfaisantes sur les processeurs de l'époque. L'un des derniers jeux AAA sans moteur de rendu matériel fut Outcast , qui intégrait une technologie voxel avancée, mais aussi le filtrage de textures et le bump mapping, techniques présentes sur les cartes graphiques matérielles.
Sur les marchés des consoles de jeux vidéo et des bornes d'arcade , l'évolution de la 3D a été plus abrupte, car ces plateformes reposaient depuis toujours sur des puces dédiées. Les consoles 16 bits ont bénéficié de cartouches d'accélération RISC dans des jeux comme StarFox et Virtua Racing , qui implémentaient le rendu logiciel grâce à des jeux d'instructions spécifiques. La Jaguar et la 3DO ont été les premières consoles à intégrer du matériel 3D, mais il a fallu attendre la PlayStation pour que ces fonctionnalités se généralisent dans la plupart des jeux.
Les jeux pour enfants et joueurs occasionnels (utilisant des systèmes obsolètes ou principalement destinés à la bureautique) de la fin des années 1990 au début des années 2000 utilisaient généralement un moteur de rendu logiciel comme solution de repli. Par exemple, Toy Story 2 : Buzz l'Éclair à la rescousse propose de choisir entre le rendu matériel et le rendu logiciel avant de lancer le jeu, tandis que d'autres, comme Half-Life, utilisent par défaut le rendu logiciel et permettent de choisir entre OpenGL et DirectX dans le menu Options. Certains logiciels de modélisation 3D intègrent également des moteurs de rendu logiciel pour la visualisation. Enfin, l' émulation et la vérification du matériel nécessitent également un moteur de rendu logiciel. Le rasteriseur de référence Direct3D en est un exemple.
Mais même pour les graphismes haut de gamme, l'« art » du rendu logiciel n'a pas complètement disparu. Si les premières cartes graphiques étaient bien plus rapides que les moteurs de rendu logiciel et offraient initialement une meilleure qualité et davantage de fonctionnalités, elles limitaient les développeurs au traitement des pixels à fonction fixe. Rapidement, le besoin de diversifier l'apparence des jeux s'est fait sentir. Le rendu logiciel, quant à lui, ne présente aucune restriction puisqu'il exécute un programme arbitraire. Les cartes graphiques ont donc réintroduit cette programmabilité en exécutant de petits programmes par sommet et par pixel / fragment , également appelés shaders . Les langages de shaders, tels que HLSL ( High Level Shader Language ) pour DirectX ou GLSL ( OpenGL Shading Language ), sont des langages de programmation de type C dédiés aux shaders et commencent à présenter certaines similitudes avec le rendu logiciel (à fonction arbitraire).
Depuis l'adoption du matériel graphique comme principal moyen de rendu en temps réel, les performances des processeurs (CPU) n'ont cessé de croître. Ceci a permis l'émergence de nouvelles technologies de rendu logiciel. Bien que largement éclipsées par les performances du rendu matériel, certaines plateformes de rendu logiciel modernes parviennent à combiner un large éventail de fonctionnalités et des performances raisonnables (pour un logiciel de rendu), grâce à l'utilisation de la compilation dynamique spécialisée et d'extensions de jeu d'instructions avancées telles que SSE . Si la domination actuelle du rendu matériel sur le rendu logiciel est incontestée en raison de ses performances, de ses fonctionnalités et de son innovation constante, certains estiment que les CPU et les GPU convergeront d'une manière ou d'une autre et que la frontière entre rendu logiciel et matériel s'estompera.
Solution de repli logicielle
Pour diverses raisons telles que des pannes matérielles, des pilotes défectueux, l'émulation, l'assurance qualité, la programmation logicielle, la conception matérielle et les limitations matérielles, il est parfois utile de laisser le processeur assumer certaines ou toutes les fonctions d'un pipeline graphique.
Par conséquent, il existe un certain nombre de logiciels généralistes capables de remplacer ou de compléter un accélérateur graphique matériel existant, notamment :
- RAD Game Tools ' Pixomatic', vendu comme middleware destiné à la liaison statique au sein du logiciel client D3D 7–9.
- SwiftShader , une bibliothèque vendue comme middleware destiné à être intégré aux logiciels clients D3D9 et OpenGL ES 2.
- Les moteurs de rendu swrast, softpipe et LLVMpipe, intégrés à Mesa, fonctionnent comme une interface système pour émuler un périphérique matériel OpenGL 1.4–3.2. Le moteur de rendu lavapipe, également présent dans Mesa, assure le rendu logiciel pour l' API Vulkan .
- WARP , fourni par Microsoft depuis Windows Vista, fonctionne au niveau système pour assurer une émulation rapide de D3D 9.1 et versions ultérieures. Il s'ajoute au rasteriseur de référence logiciel, extrêmement lent, que Microsoft a toujours mis à la disposition des développeurs.
- Le moteur de rendu logiciel Apple en CGL , fourni dans Mac OS X par Apple, qui fonctionne au niveau du système pour fournir une émulation rapide d'OpenGL 1.1–4.1.
Pré-rendu
Contrairement au rendu en temps réel, la performance n'est qu'une priorité secondaire avec le pré-rendu. Ce procédé est principalement utilisé dans l'industrie cinématographique pour créer des rendus de haute qualité de scènes réalistes. De nombreux effets spéciaux dans les films actuels sont entièrement ou partiellement créés par images de synthèse. Par exemple, le personnage de Gollum dans la trilogie du Seigneur des Anneaux de Peter Jackson est entièrement réalisé en images de synthèse (CGI). L'utilisation des CGI gagne également en popularité dans les films d'animation . Pixar, notamment, a produit des films tels que Toy Story et Le Monde de Nemo , et la Blender Foundation le premier film ouvert au monde , Elephants Dream .
Du fait des exigences élevées en matière de qualité et de diversité des effets, le rendu hors ligne requiert une grande flexibilité. Bien que le matériel graphique temps réel commercial soit de plus en plus performant et programmable, la plupart des images de synthèse photoréalistes nécessitent encore un rendu logiciel. RenderMan de Pixar , par exemple, permet des shaders d'une longueur et d'une complexité illimitées, ce qui exige un processeur généraliste. Le matériel plus ancien est également incapable de prendre en charge des techniques de réalisme poussé comme le lancer de rayons et l'illumination globale .