Ce moteur 3D (ce n'est pas un moteur de jeu !!) a l'ambition d'être multiplateforme.
Pour l'instant, le développement sous Windows et Linux est complètement exploitable. Pour Linux, la distribution testée est une Archlinux amd64.
Support de nombreux formats de fichiers en utilisant ASSIMP.
Version 0.10.0
Support du PBR, dans les deux workflows les plus communs : Metallic/Roughness et Specular/Glossiness.
Fonctionnalités
CastorUtils
- Renommage du namespace Castor en castor.
- Ajout des classes ChangeTracked et GroupChangeTracked, permettant de tracer les changements de valeur d'une variable membre.
- Renommage de CubeBox et SphereBox en BoundingBox et BoundingSphere.
- Séparation de Colour en deux classes : RgbColour et RgbaColour.
- PlaneEquation n'est plus une classe template.
- Création d'un allocateur : buddy allocator.
Castor3D
- Renommage du namespace Castor3D en castor3d.
- La composante émissive des matériaux est maintenant stockée sur un simple flottant (les textures d'émissive sont cependant toujours en couleur).
- Le Physical Based Rendering a été implémenté, en metallic/roughness et specular/glossiness.
- RenderPipeline contient maintenant le programme shader.
- Le Screen Space Subsurface Scattering a été implémenté (sans la transmission via les faces arrières, cependant).
- Le résultat de la passe d'éclairage est maintenant stocké dans deux cibles de rendu : une pour l'éclairage diffus, et une pour la réflexion spéculaire.
- Les tampons de sommets sont maintenant alloués via un pool utilisant un buddy allocator.
- Le shadow mapping utilise maintenant des variance shadow maps.
- Les maillages transparents sont maintenant dessinés en utilisant du Weighted Blended OIT.
- Le Screen Space Ambiant Occlusion a été amélioré, en implémentant le Scalable Ambiant Obscurance.
- Le Parallax Occlusion Mapping a été implémenté.
- Implémentation des reflection et refraction maps.
- Le rendu différé a été complètement intégré au rendu, pour le rendu des objets opaques.
- Création de composants pour les sous-maillages, afin d'alléger la classe Submesh, et rendre son remplissage plus flexible.
- Le rendu utilise maintenant un prépasse de profondeur.
- Crée la classe ColourSkybox, afin de gérer la couleur de fond et les skybox de la même manière.
- Création d'une classe ShaderBuffer, permettant de manipuler les TBO et SSBO de la même manière, et de choisir le plus approprié en fonction du GPU.
Generators
- Création d'un plugin de génération de terrain en utilisant l'algorithme Diamond Square.
Generic
- Les évènements générés depuis CastorGUI sont maintenant envoyés à l'utilisateur.
Importers
- Suppression de la quasi-totalité des plugins d'import, ne gardant que Assimp, OBJ et PLY.
PostEffects
- Création d'un plugin post rendu : SMAA, pour un antialiasing digne de ce nom.
- Crée un plugin implémentant l'effet Kawase Light Streaks.
- Création d'un plugin affichant un effet de grain filmique.
Techniques
- Suppression de tous les plugins de Technique.
Tone mappings
- Création de l'opérateur de tone mapping Uncharted 2.
Corrections
Castor3D
- Correction des bounding boxes pour les maillages animés par vertex, et par squelette.
- Réparation et réactivation du frustum culling.
- Réparation de l'alpha rejection.
Téléchargements
Exécutables
Installeur de Castor3D (Windows x86).
Installeur de Castor3D (Windows x64).
Installeur de Castor3D (Debian amd64).
Données optionnelles
Images et scènes de test.
Documentation de l'API (français).
Documentation de l'API (anglais).
Rendu PBR VS SSR :
Génération de terrain via l'algorithme Diamond square
Reflection/Refraction map :
Pas de SMAA VS SMAA
Subsurface Scattering