Le premier Unreal (qui date de 1998) est optimisé pour l’API MeTal est le résultat est incroyable pour l’époque.
Je ne parle pas de l’API Metal d’Apple, mais bien de l’API MeTal de S3. Dans les années nonante, il y avait en effet pas mal de fabricants de cartes graphiques et certains avaient des API propriétaires, comme 3dfx avec le Glide. MeTal est l’API propriétaire de S3, et elle nécessitait une carte Savage 3D, Savage 4 ou Savage 2000. Un des avantages de l’API était la possibilité de proposer des textures S3TC (un format de compression) avec un niveau de détail ahurissant pour l’époque. Le principal problème, mar contre, c’est que les jeux compatibles MeTal sont rares – en gros, quelques jeux basés sur l’Unreal Engine – et que les cartes Savage sont pleines de bugs. Ce sont de mauvaises cartes au départ, nettement en deça des 3dfx, nVidia et autres ATi de l’époque.
Pour tester, j’ai sorti un PC de l’époque avec un Pentium III à 600 MHz et une carte Savage 4 équipée d’une sortie DFP (une sortie vidéo rare), sous Windows 98. Pour commencer, j’ai voulu tester une version spécifique de Quake III, mais ça n’a pas fonctionné : elle demande une carte équipée d’une puce Savage 2000 et j’ai une carte à base de Savage 4. Même chose avec une version compatible S3TC et Metal de Quake II : j’ai eu une erreur liée à metal.dll
dès le lancement, donc le programme attend probablement une carte Savage 2000 ou Savage 3D.
Avec Unreal Gold, par contre, ça a fonctionné. Il faut évidemment une carte compatible, mais aussi un pack qui contient quelques niveaux adaptés (il est disponible là). Attention, le jeu ne propose pas MeTal au départ, j’ai donc choisi Direct3D (avec des bugs d’affichage) avant d’éditer Unreal.ini
pour pour forcer le mode MeTal avec cette ligne.
GameRenderDevice=MetalDrv.MetalRenderDevice
J’ai fait les captures en 1 024 x 768 et on voit bien le niveau de détail très élevé pour l’époque. Sur ma machine, ça rame quand même pas mal, mais le CPU et le GPU sont un peu faibles. Si les mouvements sont erratiques, c’est normal : la carte de capture à une petite latence et ma souris optique en PS/2 est trop sensibles pour ce genre de jeux.
Maintenant, l’API est rarement utilisée pour plusieurs raisons, mais la principale est évidemment que les cartes S3 Savage n’ont pas eu un énorme succès. Visiblement, les textures haute définition demandent aussi pas mal de mémoire vive, et on voit surtout dans la vidéo que si les textures sont très détaillées pour un jeu de 1998, la géométrie n’est pas au niveau. Donc on a des détails très fins sur des niveaux très anguleux.
Unreal a été publié cette année avec un renderer Metal pour Apple s’appelant FruCoRe.FruCoReRenderDevice (pour FruitCompanyRenderer de mémoire).
https://github.com/OldUnreal/Unreal-testing/releases/tag/v227k