Castor3D is a multiplatform 3D engine written in C++ 14.
It uses a descriptive and easily comprehensible scene files text format.
It works on Windows and on GNU/Linux (GTK).
It uses OpenGL (with GLSL).
This engine is still a work in progress.
Download the source code from github to contribute!
The supported features are those:
- Deferred rendering.
- Normal mapping.
- Parallax Occlusion mapping.
- Screen Space Ambient Occlusion.
- Shadow Mapping.
- Reflection Mapping.
- PBR rendering (Metallic and Specular), and Legacy rendering.
- HDR rendering with various tone mapping operators.
- Skeleton animations.
- Per-vertex animations.
- Scene graph.
- Modular architecture through plug-ins.
- Shaders are generated automatically from material and pass configuration.
- Shaders are writable directly from C++ code.
- Modular architecture, through different plug-ins types.
- Compilable on supported platforms, using CMake.
The supported plug-ins types are: Importer, Divider, Renderer, PostEffect, Generic and ToneMapping.
Importer plug-ins allow the importing of various mesh files.
- AssimpImporter, using ASSIMP library, to import a wide range of formats.
- PlyImporter, used to import large PLY meshes (for which ASSIMP encounters some problems).
- FbxImporter, based upon FbxSDK and used to import FBX meshes.
- OBJ, ASE, MD2, MD3, 3DS, LWO: enabled if ASSIMP is not installed.
Divider plug-ins allow mesh subdivision using various algorithms.
- PN-Triangles subdivision surfaces;
- Phong patches;
- Loop patches.
Allows the selection of the rendering API.
- GlRenderSystem, to use OpenGL.
- TestRenderSystem, a test renderer, which does nearly nothing, but allows tests implementation.
Plug-in type that allows post processing effects.
- Bloom: HDR bloom post effect.
Used by HDR rendering, to customise the tone mapping type.
- LinearToneMapping: Default tone mapping.
- HaarmPieterDuikerToneMapping: Haarm Pieter Duiker tone mapping.
- HejlBurgessDawsonToneMapping: Hejl Burgess Dawson tone mapping.
- ReinhardToneMapping: Reinhard tone mapping.
Plug-in type which allows to generate meshes, or textures, or other.
- DiamondSquareTerrain: to generate terrains inside Castor3D scenes, using diamond-quare algorithm.
Plug-in type which allows to extend the behaviour of Castor3D.
- CastorGUI: to build GUIs inside Castor3D scenes.
Some additional projects are also generated:
- ImgConverter: Allows you to convert any image file type to XPM or ICO.
- CastorUtilsTest: Allows you to run unit and performance tests for CastorUtils.
- Castor3DTest: Allows you to run unit tests for Castor3D.
- CastorViewer: A scene viewer demonstrating the use of Castor3D.
The documentation for CastorUtils and Castor3D can be generated using Doxygen.