Castor3D
          Multi-OS 3D engine.
          
          Project maintained by DragonJoker
          Hosted on GitHub Pages — Theme by mattgraham
         
        Castor3D
Castor3D is a 3D engine written in C++ 20.
It works on Windows and GNU/Linux and using Vulkan as rendering API.
The project itself is compilable on supported platforms using CMake and vcpkg (\ref build).
Features
  - Clustered lighting to compute all light sources.
 
  - Using a visibility buffer for opaque objects.
 
  - Blended Weighted 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).
 
  - Reflection/Refraction Mapping.
 
  - PBR rendering (Metallic and Specular workflows), and Phong/Blinn-Phong 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 pipeline configuration.
 
  - Shaders are writable directly from C++ code.
 
  - Scenes are described using a text format easily comprehensible and extensible. (Scene File)
 
  - Synchronous (user defined) or asynchronous (thread) rendering.
 
  - Using Mesh and Task shaders, if available.
 
  - GUI primitives.
 
Implemented Plug-ins
Importers
  - ASSIMP: Multiple format mesh importer.
 
  - glTF: glTF 2.0 importer, more precise than assimp’s provided one, using fastgltf library.
 
PostEffects
  - Bloom: HDR Bloom implementation.
 
  - DepthOfField: Implementation of this depth of field
 
  - DrawEdges: Detects and renders edges, based on normal, depth, and or object ID.
 
  - FilmGrain: To display some grain on the render.
 
  - FXAA Antialiasing.
 
  - GrayScale: Converts render in gray scale.
 
  - LightStreaks (using Kawase Light Streaks).
 
  - Linear Motion Blur.
 
  - PbrBloom: PBR Bloom implementation.
 
  - SMAA Antialiasing (1X and T2X so far).
 
Generators
  - DiamondSquareTerrain: to generate terrains inside Castor3D scenes, using diamond-quare algorithm.
 
Generic
  - AnisotropicMaterial: A material component implementing anisotropic specular BRDF.
 
  - AtmosphereScattering : Sky and atmosphere rendering (using Scalable and Production Ready Sky and Atmosphere Rendering Technique).
 
  - DisneyBRDF : an implementation of Disney’s diffuse, specular, clearcoat and sheen BRDFs.
 
  - FFTOceanRendering: Ocean rendering using FFT generated surfaces.
 
  - ToonMaterial: A toon material (to be combined with DrawEdges plugin).
 
  - WaterMaterial: Water material, using normal maps.
 
  - WavesRendering: Basic ocean rendering, specifying waves attributes.
 
ToneMappings
  - ACES: ACES tone mapping.
 
  - HaarmPieterDuikerToneMapping: Haarm Pieter Duiker tone mapping.
 
  - HejlBurgessDawsonToneMapping: Hejl Burgess Dawson tone mapping.
 
  - LinearToneMapping: Default tone mapping.
 
  - None: A passthrough, used when rendering to an HDR screen.
 
  - ReinhardToneMapping: Reinhard tone mapping.
 
  - Uncharted2ToneMapping: Uncharted 2 tone mapping.
 
Other applications
  - CastorMeshConverter: A converter from various mesh files to Castor3D mesh format.
 
  - CastorMeshUpgrader: Upgrades from earlier versions of Castor3D mesh format to the latest one.
 
  - CastorViewer: A scene viewer based on Castor3D.
 
  - HeightMapToNormalMap: Converts height maps to normal maps.
 
  - ImgConverter: Allows you to convert any image file type to XPM or ICO.
 
Links
Screenshots

Older Versions