Castor3D est un moteur 3D multi-plateformes écrit en C++17.
Il fonctionne sur les plateformes GNU/Linux et Windows.
Il est basé sur l'API de rendu Ashes et supporte donc les API OpenGL, Direct3D 11 et Vulkan.
Le projet en lui-même est compilable sur les plateformes supportées en utilisant CMake (Générer Castor3D).
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 traditionnel.
-
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 ou le Voxel Cone Tracing.
-
Frustum culling.
-
Graphe de scène.
-
Architecture modulaire, à base de plug-ins.
-
Génération automatique de shaders, en fonction de la configuration du pipeline.
-
Ecriture du code du shader directement depuis le code C++.
-
Scènes décrites dans un format texte facilement compréhensible et extensible. (Format de fichier CSCN)
-
Rendu synchrone (timers) ou asynchrone (thread).
Plugins
-
Importer : Ils permettent l'ajout de l'importation de nouveaux formats de fichiers de maillages.
-
Divider : Ils permettent d'implémenter des algorithmes de subdivision de maillage, à la construction (pas au niveau LOD).
-
PostEffect : Ils permettent l'application d'effets post-rendu.
-
Generator : Ils permettent de générer des maillages ou textures, de manière procédurale.
-
Generic : Ils ont pour but d'étendre les fonctionnalités globales du moteur.
-
ToneMapping : Ils permettent de définir de nouveaux opérateurs de tone mapping.
Importers
-
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.
Dividers
-
PN-Triangles ;
-
Phong ;
-
Loop ;
PostEffect
-
HDRBloom ;
-
FXAA, un antialiasing rapide de qualité basique ;
-
GrayScale ;
-
KawaseLightStreaks ;
-
SMAA, un antialiasing temporel de bonne qualité ;
-
FilmGrain.
-
Linear Motion Blur.
Generators
-
DiamondSquareTerrain, utilisant l'algorithme diamond square pour générer des reliefs.
Generic
-
CastorGui, étendant les fichiers de scène pour ajouter et dessiner des IHM (boutons, zones de texte, ...) via les incrustations 2D.
ToneMapping
-
Linear, l'opérateur par défaut.
-
Haarm Pieter Duiker.
-
Hejl Burgess Dawson (aussi appelé Filmic).
-
Reinhard.
-
Uncharted 2.
Autres 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.
Screenshots
Changelog complet: Suivi de versions