Soya 3D version 3 sur Bitbucket !

Soya est un moteur 3D pour Python. La première version de Soya a été utilisée dans plusieurs jeux et notamment Slune, Balazar et Balazar Brother. Plusieurs tentatives de seconde version n'ont pas donné grand chose, principalement faute de temps. Aujourd'hui, voici venir la version 3 dont les sources sont disponibles sur Bitbucket !

Les nouveautés les plus marquantes sont les suivantes :

  • Support de Python 3.4 et Blender 2.70

  • Vertex shaders et pixel shaders : Soya divise les shaders en pas moins de 20 'mini-shaders', ce qui permet de modifier une partie spécifique du rendu sans avoir à s'occuper du reste; de plus Soya accepte une syntaxe pythonique pour l'écriture des shaders !

  • Meilleurs performances : le processus de rendu a été entièrement réécrit, en utilisant les 'vertex buffer object' (VBO)

  • Éclairage et cell-shading par pixel

  • Antialiasing plein écran (Fullscreen antialiasing)

  • Licence GPL v3

Voici un exemple de mini-shader permettant de déformer un modèle 3D avec des "vagues" verticales. La déformation se fait dans le système de coordonnées de la caméra, c'est donc un "camera-space deform mini shader" selon la terminologie de Soya. La déformation dépend du paramètre temps (self.time) qui est mis à jour automatiquement par Soya.

wavy_mini_shader = soya.MiniShader("wavy", """
uniform float self.time
def void cameraspace_deform_mini_shader():
  current_vertex.x = current_vertex.x + 0.2 * sin(0.2 * self.time + 3 * current_vertex.y)
""")

my_body.add_mini_shader(wavy_mini_shader())

Ces mini-shaders permettent de réécrire une étape bien spécifique du rendu, Soya se chargeant ensuite de les rassembler pour créer les vertex et pixel shaders, ainsi que de les compléter avec les morceaux manquants si nécessaires (En effet, OpenGL ne permet normalement pas de réécrire qu'une partie du processus de rendu -- soit vous n'y touchez pas, soit vous réécrivez tout !). La série de tutoriels "mini-shader-xxx" dans les sources de Soya proposent d'autres exemples.

Les sources de la version de développement de Soya 3 sont disponibles sur Bitbucket. Cette version n'a pour l'instant été testée que sous Linux ; elle devrait cependant pouvoir se compiler sur les principales plateformes. Enfin, les premières images d'un projet secret de jeu utilisant Soya 3 peuvent être vues ici : Projet secret.