Description
Castor3D is a 3D engine written in C++ 17.
It works on Windows and on GNU/Linux.
It uses Vulkan as rendering API.
The project itself is generable for supported platforms, using CMake.
It works on Windows and on GNU/Linux.
It uses Vulkan as rendering API.
Features
- Deferred rendering for opaque objects.
- Weighted Blended rendering for transparent objects.
- Normal mapping.
- Parallax Occlusion mapping.
- Shadow Mapping (allowing to choose between Raw, PCF or Variance Shadow Maps).
- Screen Space Ambient Occlusion (using Scalable Ambiant Obscurance implementation).
- Reflection/Refraction Mapping.
- PBR rendering (hybrid Metallic/Specular/Roughness workflow), and Phong/Blinn-Phongrendering.
- HDR rendering with various tone mapping operators.
- Screen Space Subsurface Scattering (without backlit transmittance yet).
- Volumetric Light Scattering, for the directional light source.
- Global Illumination, through Light Propagation Volules or Voxel Cone Tracing, your choice.
- Scene graph.
- Render graph.
- Modular architecture through plug-ins.
- Shaders are generated automatically from material and pass configuration.
- Shaders are writable directly from C++ code.
- Scenes are described using a text format easily comprehensible and extensible.
- Asynchronous or synchronous rendering.
- Using Mesh and Task shaders, if available.
Implemented plugins
Importers
Importer plugins can add support for new mesh file formats.- ASSIMP: Multiple format mesh importer.
PostEffects
- Bloom: HDR Bloom implementation.
- FilmGrain: To display some grain on the render.
- GrayScale.
- LightStreaks: using Kawase Light Streaks.
- FXAA: a bad quality but fast antialiasing.
- SMAA: a good quality but rather slow antialiasing (1X and T2X so far).
- Linear Motion Blur.
- DrawEdges : Detects and renders edges, based on normal, depth, and or object ID.
- PbrBloom : PBR Bloom implementation.
Generators
They allow procedural generation of meshes or textures.- DiamondSquareTerrain: to generate terrains inside Castor3D scenes, using diamond-quare algorithm.
Generics
They're here to allow general extensions of the engine features.- CastorGUI: to build GUIs inside Castor3D scenes.
- ToonMaterial: A toon material (to be combined with DrawEdges plugin).
- FFTOceanRendering: Ocean rendering using FFT generated surfaces.
- OceanRendering: Basic ocean rendering, specifying waves attributes.
- WaterRendering: Plane water surfaces rendering, using normal maps.
- AtmosphereScattering : Sky and atmosphere rendering.
ToneMappings
The definitions of tone mapping operators.- Linear: Default tone mapping.
- Haarm Pieter Duiker.
- Hejl Burgess Dawson (Filmicx).
- Reinhard.
- Uncharted 2.
- ACES.
Other applications
Along with the engine and its plugins, the projects also comes with other applications:- CastorViewer, a scene visualizer, using Castor3D.
- ImgConverter, image converter, from all images formats to XPM or ICO.
- CastorMeshConverter: A converter from various mesh files to Castor3D mesh format.
- CastorMeshUpgrader: Upgrades from earlier versions of Castor3D mesh format to the latest one.
- HeightMapToNormalMap: Converts a height map to a normal map.
Documentation
The project's documentation is contained in the headers, and can be generated with Doxygen.The project itself is generable for supported platforms, using CMake.
Examples









