Castor3D 0.14.0
Multiplatform 3D engine
Castor3D

Castor3D is a 3D engine written in C++ 20.

It works on Windows and GNU/Linux.

It relies on Vulkan as a rendering API.

The project itself is compilable on supported platforms using CMake (cf. build).

Features

  • Deferred rendering for opaque objects.
  • Blended Weighted rendering for transparent objects.
  • Normal mapping.
  • 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.
  • 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.

Implemented Plug-ins

Importers

  • ASSIMP: Multiple format mesh importer.

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.
  • LightStreaks (using Kawase Light Streaks).
  • FXAA Antialiasing.
  • SMAA Antialiasing (1X and T2X so far).
  • Linear Motion Blur.

Generators

  • DiamondSquareTerrain : to generate terrains inside Castor3D scenes, using diamond-quare algorithm.

Generic

  • 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 (using Scalable and Production Ready Sky and Atmosphere Rendering Technique).

ToneMappings

  • Linear.
  • HaarmPieterDuiker.
  • HejlBurgessDawson.
  • Reinhard.
  • Uncharted2.
  • ACES.

Other applications

  • CastorViewer: A scene viewer based on Castor3D.
  • CastorMeshConverter: A converter from various mesh files to Castor3D mesh format.
  • CastorMeshUpgrader: Upgrades from earlier versions of Castor3D mesh format to the latest one.
  • ImgConverter: Allows you to convert any image file type to XPM or ICO.

Screenshots

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

See full changelog for more details.