TheBall Engine

theBall Engine est un moteur de rendue 3D basé sur OpenGL, conçu dans le but de réaliser le jeu theBall.

Le moteur est construit autour d’une architecture de Parallel Scene (scènes parallèles) ce sont eux qui sont charger de dessiner et traiter les différent type de nœud que peut contenir le Scene Manager.

Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen23-water.jpg Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen24-water.jpg

Effet d’eau avec la réfraction et la réfraction, la scène est prérendue deux fois avec un plan de clipping pour économiser le FPS, sur deux framebuffer, qui sont ensuit projeter comme texture sur le plan d’eau, le traitement a lieu bien sûr sur un shader qui s’occupe a l’aide d’une normalmap a produire l’effet des vagues et donné du relief.

Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen03-ball3dmesh.jpg Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen04-ball3dmesh.jpg

Le moteur gère son propre format de modèle 3D (.ball3D) qui a l’avantage de géré le multi-texturing et d’autre demande architecturaux du moteur.

Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen17-postprocess.jpg Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen18-postprocess.jpg

les PPE ou Post process effect (Effet après Traitement) agis sur le rendue final pour ajouter differents effets telle que le Depth of field, Motion bulr, Glow…etc.

Les PPE sont géré par les shaders donc accélérer en hardware.


theIsland

theIsland est une démo qui met en scène les différent fonctionnalité et capacité du moteur dans un paysage sur un magnifique lever de soleil !

Miniature: 40 Miniature: 40

la démo démontre : le chargement de modèle 3D, les effets-après traitement, la gestion de la transparence, l’éclairage par-pixel grâce au Shader, le rendue de l’eau avec ses effets de reliefs, de réélection et de réfraction.

Miniature: 40 Miniature: 40


Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen01-alphablend.jpg Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen02-alphablend.jpg

Ici le cas d’un palmier, les feuilles sont représentés par une texture comportant des zones transparentes pour simuler les détails.

Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen05-blending.jpg Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen06-blending.jpg

Pour le rendu, les maillages sont triés dans le cas d’une transparence du lointain au plus près ce qui assure l’affichage correct des faces transparentes.

Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen07-bumpmap.jpg Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen08-bumpmap.jpg

Des routines de calcules des tangents sont implémenter pour les rendue en relief sur les shaders a l’aide d’une normale map.

Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen09-frustum.jpg Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen10-frustum.jpg

Pour avoir de meilleure performance, le moteur implémente un test de Frsutum pour éviter de traiter les maillages qui sont en dehors du champ de vision de la caméra.

Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen15-particles.jpg Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen16-particles.jpg

Le rendu des particules est réaliser à l’aide de l’extension POINT_SPRITE_PARTICLE ce qui améliore grandement les performances, car pour chaque particule on définit seulement un vertex et peut émuler dans le cas de hardware de gèrent pas cette extension grace a des polygone de Billboarding.

Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen13-offscreenrend.jpg Miniature: http://download.tuxfamily.org/b4n92uidsite/tbe/1.2/tbengine-screen14-offscreenrend.jpg

Le rendue hors écran est géré par la class RTT (Render Target Texture) ou elle fait office d’abstraction entre le rendue par Framebuffer
ou par texture normale dans le cas de carte graphique ne gérons pas le FBO.

Pour écrire du texte le moteur utilise la libraire FreeType2, cette dernier est utiliser pour générer une texture contenant les caractères ascii depuis la police spécifier (format .ttf).

Image: http://www.libsdl.org/images/SDL_logo.png

Le moteur n’implémente aucune fonction de fenêtrage (comme OpenGL) pour plus de flexibilité, cependant il peur être utiliser avec la class DeviceSDL (Fournie avec le moteur), pour ouvrir une fenêtre avec la SDL, ou de se joindre a un notre contexte d’affichage (Api Windows, Qt, wxWidget…).

Image: http://bakura.developpez.com/tutoriel/physique/newton/images/newtonlogo.png

Enfin vous pourrez trouver un Wrapper pour le moteur physique Newton Game Dynamics afin de l’intégrer facilement au moteur.

Quelque fonctionnalités

  • Support de plusieurs formats d’image grâce à la bibliothèque DevIl
  • Chargement du modèles 3D WaveFront OBJ
  • Géstion des particules
  • SkyBox
  • Offscreen Rendring : Abstraction entre FBO et Texture
  • Multi-texturing
  • Transparence alpha : Tri des polygones CPU ou Hardware pour les objet convex
  • Effets après-traitement : Bloom, Blur, Motion blur, Dof…
  • Rendue de l’eau (Réfraction/Réflection)
  • Calcule des tangantes, Bump-mapping
  • Calcule et limitation du FPS integrer
  • Test du frustum culling
  • Shadow Mapping

Télécharger

Ancien Releases

Dépôt fichiers

Dépôt code source


Pas de commentaires pour cette article




Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *