Castor3D is a 3D engine written in C++ 17.
It works on Windows and on GNU/Linux, and uses Vulkan for rendering API.
Features
- Clustered lighting to compute all light sources.
- Using a visibility buffer for opaque objects.
- Weighted Blended rendering for transparent objects.
- Normal mapping (using Mikktspace or explicit bitangents specification).
- Shadow Mapping (allowing to choose between Raw, PCF or Variance Shadow Maps).
- Parallax Occlusion mapping.
- Screen Space Ambient Occlusion (using Scalable Ambiant Obscurance implementation).
- Reflection/Refraction Mapping.
- PBR rendering (Metallic and Specular workflows), and Legacy rendering.
- HDR rendering with various tone mapping operators and various colour grading operators.
- Screen Space Subsurface Scattering (without backlit transmittance yet).
- Volumetric Light Scattering for the directional light source, if it projects shadows.
- Cascaded Shadow Maps for the directional light source.
- Global Illumination, through Light Propagation Volumes (layered or non layered, with or without geometry injection), or through Voxel Cone Tracing.
- Frustum culling.
- 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.
- Synchronous (user defined) or asynchronous (threaded) rendering.
- Using Mesh and Task shaders, if available.
- GUI primitives.
Implemented Plug-ins
Importers
- ASSIMP: Multiple format mesh importer, using assimp library.
- glTF: glTF 2.0 importer, more precise than assimp's provided one, using fastgltf library.
PostEffects
- Bloom: HDR Bloom implementation.
- PbrBloom : PBR Bloom implementation.
- DrawEdges: Detects and renders edges, based on normal, depth, and/or object ID.
- FilmGrain: To display some grain on the render.
- GrayScale: Converts render in gray scale.
- LightStreaks (using Kawase Light Streaks).
- FXAA Antialiasing.
- SMAA Antialiasing (1X and T2X so far).
- Linear Motion Blur
- Depth Of Field
Generators
- DiamondSquareTerrain: to generate terrains inside Castor3D scenes, using diamond-quare algorithm, with support for biomes.
Generic
- ToonMaterial: A toon material (to be combined with DrawEdges plugin).
- WaterMaterial: Water material, using normal maps.
- FFTOceanRendering: Ocean rendering using FFT generated surfaces.
- WavesRendering: Basic ocean rendering, specifying waves attributes.
- AtmosphereScattering : Sky and atmosphere rendering.
ToneMappings
- None: A passthrough, used when rendering to an HDR screen.
- LinearToneMapping: Default tone mapping.
- Haarm Pieter Duiker.
- Hejl Burgess Dawson.
- Reinhard.
- Uncharted 2.
- ACES.