Castor3D

Moteur 3D qui fait des trucs jolis, des fois

a marqué ce sujet comme résolu.

Castor3D est un moteur 3D multi-plateformes écrit en C++ 20.
Il fonctionne sur les plateformes GNU/Linux et Windows.
Il est basé sur l’API de rendu Vulkan.
Le projet en lui-même est compilable sur les plateformes supportées en utilisant CMake.
Le code source du projet est disponible sur GitHub.

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.
  • 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 (timers) ou asynchrone (thread).
  • Utilisation de Mesh et Task shaders, si disponibles.

Plugins implémentés

Importers
  • ASSIMP, utilisant la bibliothèque assimp pour l’import d’une grande variété de formats.
PostEffect
  • Bloom : une implémentation de HDR Bloom.
  • PbrBloom : une implémentation de PBR 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.
Generators
  • DiamondSquareTerrain : Génération de terrains, utilisant l’algorithme diamond square pour générer des reliefs, avec support de biomes.
Generic
  • 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.
  • AtmosphereScattering : Implémentation de rendu de ciel et d’atmosphère (Implémentation de Scalable and Production Ready Sky and Atmosphere Rendering Technique).
ToneMapping
  • Linear : l’opérateur par défaut.
  • Haarm Pieter Duiker.
  • Hejl Burgess Dawson (aussi appelé Filmic).
  • Reinhard.
  • Uncharted 2.
  • ACES.

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

Sponza, VCT Cerberus Park, Comparison Nyra, PBR SanMiguel, PBR SanMiguel, PBR, LPV Bistro, PBR, VCT

+18 -0

Version 0.15.0

Changements importants
  • Corrections du binding COM, et implémentation d’une application de visualisation de scène en C#.
  • Support de multiples modèles d’éclairage dans la même scène.
  • Amélioration des ombres PCF, en échantillonnant un disque de Poisson.
  • Castor3D utilise maintenant un reversed Z buffer.
  • Améliorations drastiques des preformances de préparation et rendu des incustations.
  • Suppression de la majorité des utilisations de std::shared_ptr.
  • Amélioration de la prise en compte du composant spéculaire en PBR, par rapport à ses interactions avec la metalness.
  • Amélioration des réflexions via les environment maps, elles sont plus cohérentes avec l’IBL.
Nouvelles Fonctionnalités
Général
  • Implémentation de noeuds statiques, qui sont dessinés une seule fois lors des passes de shadow map ou de voxellisation.
  • Déplacement de tout le code de CastorGui dans Castor3D, et ajout de nouveaux contrôles d’IHM.
  • Support de l’inversion des normales, soit à l’import d’un mesh, soit via la passe de matériau.
GuiCommon
  • Mise à jour des tree item properties, par rapport aux composants de passe de matériau.

Screenshots

Multiple Lighting Models Multiple Lighting Models Nyra

+3 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte