Version Actuelle : 0.14.0
Présentation
Castor3D est un moteur 3D multi-plateformes.
Il utilise un format de fichiers de scènes texte descriptif et compréhensible facilement.
Il fonctionne sur les plateformes Linux (GTK) et Windows.
Il supporte Vulkan, et utilise Ashes pour étendre ce support sur OpenGL et Direct3D11.
Ce moteur est encore un work in progress.
Téléchargez le code source sur GitHub pour contribuer!
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.
Fonctionnalités
Ce moteur propose comme fonctionnalités :
- Deferred rendering pour les objets opaques
- Weighted Blended rendering pour les objets transparents.
- Normal mapping.
- Shadow Mapping (avec choix entre Raw, PCF ou Variance Shadow Maps).
- Parallax Occlusion Mapping.
- Screen Space Ambiant Occlusion (en implémentant le Scalable Ambiance Obscurance).
- Reflection/Refraction Mapping.
- Rendu PBR (Metallic/Roughness et Specular/Glossiness) et rendu Phong/Blinn-Phong.
- Rendu HDR avec application de divers opérateurs de tone mapping.
- Screen Space Subsurface Scattering (sans la backlit transmittance pour l'instant).
- Volumetric Light Scattering pour la source directionnelle, si elle projette des ombres.
- Cascaded Shadow Maps pour la source lumineuse directionelle.
- Global Illumination, via les Light Propagation Volumes (layered ou pas) ou le Voxel Cone Tracing.
- Frustum culling.
- Graphe de scène.
- Graphe de rendu.
- Architecture modulaire, à base de plug-ins.
- Génération automatique de shaders, en fonction de la configuration du pipeline (passe de matériau et passe de rendu).
- Ecriture du code du shader directement depuis le code C++.
- Scènes décrites dans un format texte facilement compréhensible et extensible.
- Rendu synchrone (au choix de l'utilisateur) ou asynchrone (thread).
Plug-ins
Les différents types de plug-ins supportés sont: Importer, Divider, PostEffect, Generator, Generic et ToneMapping.
Importers
Les plug-ins de type Importer permettent l'ajout de l'importation de nouveaux formats de fichiers de maillages.
- ASSIMP, utilisant la bibliothèque assimp pour l'import d'une grande variété de formats.
- PLY, permettant l'import de gros maillage PLY.
Dividers
Les plug-ins de type Divider permettent d'implémenter des algorithmes de subdivision de maillage.
- PN-Triangles: Subdivision en utilisant les surfaces PN-Triangles.
- Phong: Subdivision en utilisant la tessellation de Phong.
- Loop: Subdivision en utilisant les Loop subdivision surface.
PostEffect
Les plug-ins PostEffect permettent l'application d'effets post-rendu.
- Bloom : une implémentation de HDR Bloom.
- DrawEdges : Détecte et dessine les bordures, basé sur les normales, la profondeur, et/ou l'ID d'objet.
- FilmGrain : Pour afficher un grain sur le rendu.
- GrayScale.
- LightStreaks (utilisant Kawase Light Streaks).
- FXAA : un antialiasing rapide de qualité basique.
- SMAA : un antialiasing temporel de bonne qualité.
- Linear Motion Blur.
Generator
Les plug-ins de type Generator permettant de générer des maillages ou textures, de manière procédurale.
- DiamondSquareTerrain : Génération de terrains, utilisant l'algorithme diamond square pour générer des reliefs.
Generic
Les plug-ins de type Generic ont pour but d'étendre les fonctionnalités globales du moteur.
- CastorGui : Etend les fichiers de scène pour ajouter et dessiner des IHM (boutons, zones de texte, ...) via les incrustations 2D.
- ToonMaterial : Un ensemble de matériaux toon, à combiner avec le plugin DrawEdges.
- FFTOceanRendering : Permet le rendu d'océan en se basant sur les transformées de Fourier.
- OceanRendering : Rendu basique d'océan, en spécifiant les propriétés des vages.
- WaterRendering : Rendu de surfaces planes d'eau, basé sur l'utilisation de normal maps.
ToneMapping
- Linear : l'opérateur par défaut.
- Haarm Pieter Duiker.
- Hejl Burgess Dawson (aussi appelé Filmic).
- Reinhard.
- Uncharted 2.
- ACES.
Autres applications
En plus du moteur et des divers plug-ins, le projet est accompagné de diverses applications :
- CastorViewer : Visualiseur de scènes utilisant Castor3D.
- CastorMeshConverter : Convertisseur de divers formats de fichier de maillaige vers le format Castor3D.
- CastorMeshUpgrader : Met à jour les fichiers de maillage utilisant un format Castor3D antérieur à la dernière version.
- ImgConverter : Projet de conversion de tout type d'images vers XPM ou ICO.
Téléchargements
Partager