dimanche 15 septembre 2013

Encore un tipeu plus vite

Une autre optimisation que je veux ajouter à mon engin graphique pour le jeu de monstre est en fait un vieil ami que j'ai côtoyé il y a plus de 20 ans lorsque je développais sur Mac, et je parle de mon vieux Mac Classic ! Les jeux de l'époque n'arrivait pas à faire plusieurs niveau de parallax puisque le fillrate était bien trop lourd, même en noir et blanc ( 1 bit par pixel ). Comme la plupart des backgrounds était fixes, le blit final pouvait être optimisé pour ne transférer que les parties qui ont été modifiées. Le truc était de séparer l'écran en tuiles, souvent 16 de large par 8 de haut, et masquer les bits correspondant à la tuile lorsque le sprite risque de la modifier. Ensuite suffit de blitter que les tuiles correspondant aux bit assigné C'est rapide et efficace, tant que le nombre de sprites n'est pas trop élevé.

Ici. comme le fillrate est un problème et la composition utilise justement plusieurs blits entre plusieurs images, chacune ayant plusieurs trou puisque ce n'est pas le background, ramener ce petit truc, surtout avec un nombre de sprites qui se veux limité, risque d'avoir un impact. Je ne sais pas à quel point bitshifter et masquer des unsigned short est optimisé en Java sous Dalvik, mais comme c'est le CPU qui va travailler pour aider un peu le GPU par la suite, ce devrait être tout de même gagnant.

À suivre!

Aucun commentaire:

Enregistrer un commentaire