Ubershaders : émuler un GPU sur un autre GPU pour faire tourner un jeu GameCube

Une GeForce Pascal pour un jeu GameCube ?

Image 1 : Ubershaders : émuler un GPU sur un autre GPU pour faire tourner un jeu GameCubeUbershadersLe projet Dolphin, l’émulateur pour GameCube et Wii, a publié une note fascinante expliquant comment leurs développeurs ont résolu un problème extrêmement complexe répondant au nom de Shader Compilation Stuttering (saccade de la compilation du shader). Pour arriver à leurs fins, ils ont décidé d’émuler complètement le pipeline du GPU Flipper de la GameCube ou Hollywood de la Wii, les deux puces étant extrêmement similaires, grâce à des Ubershaders.

Transformer son PC en console

Sur un jeu PC devant tourner sur de nombreuses configurations différentes, les shaders, ces programmes tournant sur les GPU, sont compilés par les pilotes lors des écrans de chargements, pour que l’opération ne plombe pas les performances. Or, sur une console avec un hardware fixe, il est possible de livrer des shaders précompilés, ce qui était souvent le cas pour les deux consoles de Nintendo qui avaient peu de VRAM. C’est tout de même un gros problème pour l’émulateur qui doit les recompiler à la volée lors du rendu de certaines scènes pour s’adapter au GPU du PC, ce qui provoque souvent des saccades autrement nommées Shader Compilation Stuttering.

Ubershaders

Les développeurs ont donc finalement décidé, après plusieurs années de réflexion, d’émuler le pipeline du GPU de la console lui-même grâce à de très gros shaders flexibles, d’où le nom de Ubershader. Le grand avantage de cette solution est de complètement résoudre les problèmes de saccades en offrant une solution adaptée aux jeux émulés. Le problème est qu’elle demande des ressources importantes. Utiliser un IGP requiert donc le plus souvent de réduire la définition pour assurer un taux d’image par seconde correcte.