Voici le premier article en proposition spontanée (your are the writer). Il nous a été proposé par DragonJoker, l’auteur de ce projet.

Castor3D

Par DragonJoker

Castor3D est un moteur 3D multi-plateformes utilisant OpenGL ou Vulkan. Il fonctionne sur les plateformes Linux (GTK) et Windows.

Ce moteur propose comme fonctionnalités :

  • Deferred rendering pour les objets opaques
  • Weighted Blended rendering pour les objets transparents.
  • Normal mapping.
  • Parallax Occlusion Mapping.
  • Screen Space Ambient Occlusion.
  • Shadow Mapping (Raw, PCF ou VSM, au choix).
  • CASCADED SHADOW MAPPING pour les sources directionnelles.
  • Reflection/Refraction Mapping.
  • Rendu PBR (Metallic/Roughness et Specular/Glossiness) et rendu SSR.
  • Graphe de scène.
  • Shaders (GLSL), avec écriture du code du shader directement depuis le code C++.
  • Génération automatique de shaders, en fonction de la configuration de la passe.
  • Scènes décrites dans un format texte facilement compréhensible et extensible.
  • Rendu HDR avec application de divers opérateurs de Tone Mapping.
  • Le rendu peut être synchrone (timers) ou asynchrone (thread).
  • Basé sur une architecture modulaire, à base de plug-ins.

Les différents types de plug-ins supportés sont: Importer, Divider, Renderer, PostEffect, Generator, Generic.

Les plug-ins de type Importer permettent l’ajout de l’importation de nouveaux formats de fichiers de maillages.

Sont actuellement implémentés :

  • AssimpImporter, utilisant la bibliothèque assimp pour l’import d’une grande variété de formats.
  • PlyImporter, permettant l’import de gros maillage PLY (pour lesquels assimp éprouve des difficultés).
  • ObjImporter, permettant l’import de maillages au format OBJ.

Les plug-ins de type Divider permettent d’implémenter des algorithmes de subdivision de maillage, à la construction (pas au niveau LOD).

J’ai pour l’instant implémenté les algorithmes suivants :

  • PN-Triangles
  • Phong
  • Loop

Les plug-ins de type Renderer sont le support des API de rendu.

Sont actuellement implémentés :

  • GlRenderSystem, pour utiliser OpenGL 4.X.
  • Gl3RenderSystem, pour utiliser OpenGL 3.X.
  • VkRenderSystem, pour utiliser Vulkan.
  • TestRenderSystem, un renderer de test, ne faisant à peu près rien, mais permettant l’implémentation de tests.

Les plug-ins PostEffect permettent l’application d’effets post-rendu.

  • Sont implémentés pour l’instant
  • HDRBloom
  • FXAA, un antialiasing de qualité basique
  • GrayScale
  • KawaseLightStreaks
  • SMAA, un antialiasing temporel de bonne qualité
  • FilmGrain

Les plug-ins de type Generator permettant de générer des maillages ou textures, de manière procédurale.

Pour l’instant un seul plug-in de ce type est implémenté :

  • DiamondSquareTerrain, utilisant l’algorithme diamond square pour générer des reliefs.

Les plug-ins de type Generic ont pour but d’étendre les fonctionnalités globales du moteur.

Pour l’instant un seul plug-in de ce type est implémenté :

  • CastorGui, étendant les fichiers de scène pour ajouter et dessiner des IHM (boutons, zones de texte, …) via les incrustations 2D.

Les plug-ins de type ToneMapping permettent de définir de nouveaux opérateurs de tone mapping.

Sont implémentés les opérateurs suivants :

  • Linear, l’opérateur par défaut.
  • Haarm Pieter Duiker.
  • Hejl Burgess Dawson (aussi appelé Filmic).
  • Reinhard.
  • Uncharted 2.

En plus du moteur et des divers plug-ins, le projet est accompagné de diverses applications :

  • CastorViewer, visualiseur de scènes utilisant Castor3D
  • CastorMeshConverter : Pour convertir divers formats de meshes au format CMSH (format interne à Castor3D)
  • CastorMeshUpgrader : Pour mettre à jour les les fichiers CMSH à la dernière version du format.

La documentation du projet est contenue dans les headers et peut être générée via Doxygen.

Le projet en lui-même est compilable sur les plateformes supportées en utilisant CMake.

Venez dès à présent découvrir ce projet sur GitHub (build), voir quelques exemples sur YouTube, lire la documentation en anglais et en français.

3 commentaires »

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.