Suivez-nous

iOS

Metal & A7 : Apple dévoile son grand jeu

neilime

Publié le

 

Par

wwdc14_metal.jpg

Quelques jours après la fin de la conférence des développeurs, AppleInsider revient, sous la plume de Daniel Eran Dilger, sur une nouveauté passée relativement inaperçue, mais qui pourrait avoir un impact notable sur la plate-forme iOS en tant que plate-forme de jeu.

Apple et ses équipes de développement ont en effet présenté, en plus du langage Swift pour succéder à l’Objective-C, un nouveau langage nommé Metal pour accélérer le rendu en trois dimensions, avec sa bibliothèque de fonctions associées elle aussi nommée Metal, dans les jeux vidéos. Avec Metal, Apple offre aux développeurs une nouvelle manière de décrire les shaders, cet ensemble d’attributs qui permet de paramétrer un rendu 3D en terme de couleur, texture, d’absorption ou de réflexion de la lumière, d’ombrage, etc.

L’avantage de ces nouveaux outils est notamment qu’ils permettent une précompilation du code relatif aux shaders alors que jusqu’à présent, cette partie du code était compilée par le processeur général avant d’être transmis aux unités graphiques spécialisées. Le code ainsi précompilé et embarqué dans le jeu vidéo, le processeur est déchargé d’une partie de la compilation auparavant effectuée en temps réel sur le même modèle que pour le JavaScript JIT. Évidemment ce qui est gagné en précompilation est perdu en généricité du code qui ne fonctionnera que sur un système sur puce en particulier, en l’occurrence ici, l’A7 d’Apple.

Metal en effet fortement optimisé pour l’A7 intégré dans l’iPhone 5s et l’iPad Air et mini. Il le sera évidemment pour l’A8 qui devrait être dévoilé en même temps que les prochaines générations d’appareils mobiles d’Apple. Cette restriction du terrain de jeu permet aux concepteurs du système d’optimiser au maximum leur outil pour maximiser les performances, en clair, pas besoin de produire un outil générique aux performances moyennes sur chacune des plates-formes. De l’art et de l’utilité de maîtriser à la fois la partie matérielle et la partie logicielle, sans oublier l’infrastructure qui permet de compiler le logiciel pour le rendre intelligible par le matériel tel LLVM.

Selon Daniel Eran Dilger, Apple avait fait exprès d’omettre de décrire précisément la manière dont l’A7 était construit au point que même les experts du domaine n’étaient pas parvenus à mettre un nom sur toutes les fonctions intégrées dans son système sur puce. Elle n’avait pas exemple pas expliqué que la mémoire était partagée entre le processeur central et les unités graphiques permettant à Metal de gérer la manière dont les tâches sont attribuées au processeur central ou aux unités graphiques sans avoir à mettre en place un système de synchronisation dont l’utilisation diminue les performances.

Selon Dilger, Apple serait en fait en train de faire comprendre aux développeurs que l’architecture utilisée pour l’A7 serait non seulement capable d’augmenter ses performances graphiques de 30 à 300 % par rapport à l’A6 en utilisant l’OpenGL ES, mais qu’avec ce nouveau Metal, les performances pourraient être cette fois multipliées par 10. Et ce sur la base installée des appareils équipés de l’A7 déjà en circulation dont on sait qu’ils passeront dans l’immense majorité à iOS 8 indispensable pour tirer parti de Metal. Rien de moins.

Alors bien sûr, tous les développeurs n’iront pas optimiser leurs applications à l’aide de Metal et notamment ceux qui utilisent des moteurs compatibles avec Android comme Unity. Mais pour les studios qui misent sur des titres spécifiques à iOS en tirant le maximum des performances graphiques, on pense par exemple à Infinity Blade d’Epic Games, pourraient rapidement utiliser Metal. D’autres gros pourvoyeurs de jeux pourraient rapidement s’y intéresser, et déjà Electronics Arts a fait une démonstration d’un moteur de jeu nommé Frostbite dont ils l’avouent, ils n’avaient pas anticipé pouvoir l’utiliser sur des appareils mobiles.

Inside Metal: How Apple plans to unlock the secret graphics performance the A7 chip

Metal Shading Language Guide