Castor3D 0.16.0
Multiplatform 3D engine
Castor3D

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 et vcpkg (cf. génération).

Fonctionnalités

  • Clustered lighting pour le calcul de toutes les sources lumineuses.
  • Utilisation d'un visibility buffer pour les objets opaques.
  • Weighted Blended rendering pour les objets transparents.
  • Normal mapping (avec utilisation du Mikktspace ou spécification explicite des bitangentes).
  • 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 ainsi que divers opérateurs de colour grading.
  • 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. (Scene File)
  • 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.
  • glTF, en utilisant la bibliothèque fastgltf pour un support du glTF 2.0 plus précis que clui fourni via assimp.

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 : Conversion en niveaux de gris.
  • LightStreaks (utilisant Kawase Light Streaks).
  • FXAA : un antialiasing rapide de qualité basique.
  • SMAA : un antialiasing temporel de bonne qualité.
  • Linear Motion Blur.
  • DepthOfField : Implémentation du depth of field décrit ici.

Generators

  • DiamondSquareTerrain : Génération de terrains, utilisant l'algorithme diamond square pour générer des reliefs.

Generic

  • ToonMaterial : Un ensemble de matériaux toon, à combiner avec le plugin DrawEdges.
  • WaterMaterial: Un matériau de rendu de l'eau, basé sur l'utilisation de plusieurs normal maps.
  • FFTOceanRendering : Permet le rendu d'océan en se basant sur les transformées de Fourier.
  • WavesRendering : 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

  • None : Un passe plats, utilisé pour le rendu sur écran HDR.
  • 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.
  • HeightMapToNormalMap : Convertit une height map en normal map.
  • 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 FFTOcean, Terrain

Voir le changelog complet pour plus de détails.