Journal Freezer : moteur de rendu 3D et d'animation pour Playstation 3

Posté par  (site web personnel) .
Étiquettes : aucune
16
21
mai
2010
Bonjour à tous,

Après avoir sorti la démo ps3 "retrostation" il y a quelques semaines, après un nettoyage massif des sources, une config autotools et écrit quelques programmes d'exemple, je rends public le moteur 3D et le système d'animation de retrostation, sous la forme d'une bibliothèque, dont le nom de code est "Freezer".

Freezer est distribuée sous la licence LGPL.

Je précise que cette bibliothèque implémente un certain nombre de fonctionnalités de calcul 3D et de rendu, le tout faisant usage des coeurs de calcul spécialisés (les SPE) du processeur Cell de la ps3. Le tout fonctionne sous Linux, qui comme chacun sait, sur ps3 n'offre pas la possibilité d'accès à l'accélération 3D par le GPU de la machine, et donc tout doit être fait en soft.

Voilà, j'espère que cela pourra en intéresser quelques uns, qui pourraient trouver ici une bonne raison de ne pas forcer leur console à faire hara-kiri de la fonctionnalité la plus fun de la ps3, à savoir la possibilité d'installation de Linux. Hé oui, si vous avez une ps3 avec le firmware à jour, c'est foutu.

Le code source sur GitHub
La même annonce en anglais sur mon blog
  • # Marrant

    Posté par  . Évalué à 9.

    Marrant, ce nom, Freezer, pour un moteur graphique.
    C'est parce que c'est un moteur qui gèle ?
    T'as pas peur de refroidir les testeurs ?
    Remarque, c'est une façon de briser la glace.
    • [^] # Re: Marrant

      Posté par  (site web personnel) . Évalué à 6.

      Non, c'est parce que c'est libre, que ça reprend un bout de mon pseudo demoscene (zerkman), et qu'il y a un rapport avec le processeur Cell.
      • [^] # Re: Marrant

        Posté par  . Évalué à 9.

        Cell, Freezer... ça me fait penser à DBZ tout ça.
        • [^] # Re: Marrant

          Posté par  (site web personnel) . Évalué à 2.

          Tu dis ça, mais je crois bien me souvenir avoir vu les mots Freezer, Krilin et Cell pour désigner des composantes (matérielles ou logicielles) de la PS3.

          En voyant cette news j'ai cherché, mais rien retrouvé :(

          Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

      • [^] # Re: Marrant

        Posté par  . Évalué à 6.

        Pourquoi Freezer et pas Vegeta ou Gohan? Freezer c'est un looser... :-)
  • # Plus d'infos

    Posté par  . Évalué à 8.

    Projet sympatique au demeurant. Qu'est-ce qui t'a poussé à faire ce moteur? Combien de personnes travaillent dessus?
    Quels sont tes retours sur la programmation du Cell, est-il aussi complexe à développer dessus que ce qu'on a entendu?

    Voili voilou, moi ca m'intéresse ce genre de projet. Je trouve ça passionnant!
  • # sympa!

    Posté par  . Évalué à 2.

    merci pour cette démo! Si j'ai bien compris, tu obtiens ce rendu en 60 fps et 1280x720 ? Les PPU y changent-ils grand chose? Je n'ai pas de PS3 pour essayer, mais ce serait interéssant de savoir quel est le gain dû aux PPU.

    ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

    • [^] # Re: sympa!

      Posté par  . Évalué à 2.

      Tu veux dires "SPE". Le PPU est le coeur PowerPC principal.
    • [^] # Re: sympa!

      Posté par  (site web personnel) . Évalué à 5.

      Oui, c'est du 60 fps 1280x720, sauf pour la dernière scène, où malheureusement le framerate tombe à 30 fps. C'est en partie dû au fait que je n'utilise que 4 SPE au lieu de 6, pour régler (un peu trop brutalement peut-être) un problème apparemment de conflit DMA avec l'audio.

      Comme dit au dessus, les coeurs accélérateurs du Cell sont les SPE, pas les PPU. Le PPU est la partie processeur du PPE, le coeur principal du Cell, c'est un processeur binairement compatible avec l'architecture POWER (PPE = POWER Processing Element), mais bien moins puissant qu'un POWER, car il n'a pas d'exécution dans le désordre, de prédiction de branchement (si je me rappelle bien) et a une taille de cache assez réduite (512 Ko). Il est suffisamment puissant pour les tâches de base, type entrées/sorties ou initialisations de données, mais dès que ça touche au calcul, il est vite dépassé.

      Donc pour ce qui est de la comparaison PPE/SPE, la doc d'IBM dit clairement en substance : "ne faites pas de calculs avec le PPE. Si vous pouvez utiliser les SPE, faites-le".

      Donc en fait je suis parti directement sur un moteur utilisant à fond les SPE, en réduisant à presque zéro l'utilisation du PPE. En gros, quand on lance la démo sur la ps3, l'occupation du PPE donnée par le programme top (via ssh) est à environ 3%, et encore c'est parce que la musique est jouée sur PPE.
      • [^] # Re: sympa!

        Posté par  . Évalué à 2.

        Donc tu écris dans un frame-buffer tout bête les images? Je suppose du coup qu'une démo sous Linux aura du mal à être épatante graphiquement, à moins de faire des shaders dans les SPE?

        ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

        • [^] # Re: sympa!

          Posté par  (site web personnel) . Évalué à 4.

          Oui, c'est du frame buffer tout bête.

          Bah déjà j'ai essayé de faire une démo sous Linux. Le code est assez bourrin et moyennement optimisé. Le nombre de fonctionnalités est limité, comme par exemple il n'y a pas à l'heure actuelle de gestion des textures. Il y a certainement des choses à faire pour améliorer les performances, ajouter plein de petites choses, faut s'y mettre, quoi.

          L'idée derrière cette publication en LGPL était aussi de trouver des gens qui veulent bien participer, parce qu'il y a encore pas mal du boulot, et pour une personne c'est difficile.
  • # T'aurais dû faire signe plus tôt :)

    Posté par  . Évalué à 1.

    Au moment où tu as entendu les "menaces" de Sony, t'aurais dû passer par ici, notamment pour argumenter en faveur de Linux.

    Espérons que Geohot se focalise sur la PS3 et surtout qu'il y arrive.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.