Présentation

Ce moteur 3D (ce n'est pas un moteur de jeu ) a l'ambition d'être multiplateforme.
Il utilise un format de fichiers de scènes texte descriptif et compréhensible facilement.
Il fonctionne sur les plateformes Linux et Windows.
Il supporte Vulkan, et utilise Ashes pour étendre ce support sur OpenGL et Direct3D11.

Version 0.12.0

Changements importants
  • Utilisation de RenderGraph pour la construction du frame graph.
  • Utilisation des bindless textures.
  • Implémenté le MultiDrawIndirect.
  • Implémentation d'un écran de chargement.
  • Implémentation des animations de textures.
  • Implémentation des animations de scene nodes.
  • Améliorations globales des performances.


Nouvelles fonctionnalités

Plug-ins génériques
  • Ajout du plugin DrawEdges, pour détecter et dessiner les bordures.
  • Implémentation d'un plugin de rendu basique d'océan.
  • Implémentation d'un plugin de rendu d'océan basé sur les Fast Fourier Transform.
  • Implémentation d'un plugin de rendu d'eau sur surface plane.
  • Implémentation d'une collection de matériaux toon.


Plug-ins de Tone mapping
  • Ajout d'un plugin de tone mapping ACES.


Outils
  • Ajout de l'application HeightMapToNormalMap.


Modifications

CastorUtils
  • Ajout du support des tile maps.
  • Ajout de la conversion depuis array map vers tile mapp
  • Ajout d'AsyncJobQueue, basée sur ThreadPool.
  • Ajout de GliImageWriter.
  • FreeImageLoader est maintenant optionnel.
  • Ajout de la compression en BC1/BC3 lors du chargement des images, en utilisant cvtt.
  • Ajout d'une implémentation de SpinMutex.
  • TextWriter écrit maintenant dans un castor::StringStream.
  • Génération des mipmaps lors du chargement des images.
  • Intégration de la gestion des parsers additionnels dans FileParser.
  • Le parsing des brace files se fait maintenant en deux étapes.


Castor3D
  • Ajout du frustum culling pour les point lights shadow maps.
  • Ajout du support de plusieurs rendering devices.
  • Tous les post effects sont maintenant créés avec la render target, pour être activables/désactivables à l'envi.
  • Ajout de l'import de scène en plus de l'import de mesh.
  • Ajout d'une passe Blinn-Phong.
  • Généralisation des shaders, en passant par des classes intermédiaires : LightingModel, ReflectionModel et LightMaterial.
  • Ajout d'un TextureCache, utilisé pour fusionner les images utilisées par une passe.
  • Ajout d'un moyen d'avoir des objets non sélectionnables.
  • Ajout d'options de rotation de mesh lors de l'import.
  • Ajout du support d'un second set d'UV.
  • Ajout du support de render nodes passes custom.
  • Ajout du support des tessellation shaders pour les render nodes passes.
  • Ajout du support des material passes non affectées par l'éclairage.
  • Ajout du support des safe bands dans Camera.
  • Ajout de la possibilité de remapper les composantes d'une texture lors de l'import d'une scène.
  • La depth prepass écrit maintenant aussi les normales.
  • Implémenté les LPV pour les point lights.
  • Les Events peuvent maintenant être ignorés.
  • Fusion des LightingModels PBRMR et PBRSG en interne.
  • Ajout de la possibilité d'exclure des objects des tests de culling.
  • Suppression de la correction gamma pour les textures, en utilisant les formats SRGB.
  • Suppression des PassBuffers spécifiques.
  • Réorganisation de l'écriture et lecture des Pass dans les fichiers de scène.
  • Déplacement des profils de SSS dans leur propre shader buffer.


CastorGui
  • Ajout des classes de style, afin d'en avoir une meilleure gestion.


DiamondSquareTerrain
  • Ajout d'une option permettant de désactiver la random seed.
  • Ajout d'une option permettant de tiler les UV.


AssimpImporter
  • Améliorations relatives à l'import des matériaux.
  • Amélioration de l'import des animations.
  • Ajout de l'import des scene nodes et sources lumineuses.


GuiCommon
  • Ajout de l'affichage de la configuration des render nodes passes custom.
  • La configuration des PostEffects a été ajoutée à l'arbre.
  • Suppression de la liste de matériaux, et de doublons dans la vue de scène.


Corrections

CastorUtils
  • Correction de l'inversion de Matrix2x2 et Matrix3x3.
  • Correction de l'allocation alignée sous Windows.


Castor3D
  • Correction d'un crash lorsqu'une keyframe de skinning manque.
  • Correction de la background pass par rapport au brouillard.
  • Correction de l'interaction entre l'indirect diffuse et les réflexions.
  • Correction d'un crash en release avec le morphing.
  • Correction de l'import/export des animations de morphing.
  • Correction de l'éclairage indirect dans les forward passes.
  • Correction des point shadow maps.
  • Correction des spot shadow maps.
  • Correction du traitement des cleanup event dans la render loop.
  • Correction de la création de render target creation, afin de lui donner les bonnes taille et pixel format.
  • Correction de la réinitialisation de la swapchain lors de l'initialisation de la RenderWindow.
  • Correction du changement au runtime du tone mapping.


GuiCommon
  • Correction d'un crash dans LanguageFileParser.
  • Correction d'un crash lors du changement de l'algo de GI d'une source lumineuse.
  • Correction des crashes lors du chargement des images HDR.
  • Correction de l'affichage des propriétés des textures.


Téléchargements



Screenshots et Vidéos

Ecran de chargement de base :


Rendu de l'eau :


Rendu d'océan, basique, 2 vagues configurées :


Rendu d'océan, en utilisant les transrofmées de Fourier :


Lumberyard Bistro, Intérieur, Voxel Cone Tracing (le chargement de cette scène a été rendu possible grâce à la compression des images en BC1//BC3):
Nom : Interior.png
Affichages : 1061
Taille : 813,1 Ko

Lumberyard Bistro, Extérieur, Voxel Cone Tracing (le chargement de cette scène a été rendu possible grâce à la compression des images en BC1//BC3) :
Nom : Bistro-PBR-VCT-Small.png
Affichages : 1046
Taille : 1,39 Mo

Le graphe de voxellisation de la scène (extrait du graphe complet, que je n'afficherai pas ici tellement l'image est gigantesque )
Image générée via un .dot, lui même généré grâce à RenderGraph
Nom : Voxelizer_transitions.png
Affichages : 1027
Taille : 83,5 Ko