Castor3D

3D Engine

by DragonJoker

Advertisement

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.
Last updated April 23, 2024
Status
In Development
Platforms
Engine
Custom
Release Date
May 01, 2022
Advertisement
Advertisement