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:
- GLSL shaders, with shader code written directly from C++ code.
- Shaders are automatically generated, depending on the materials’ passes’ configuration.
- Texture channels, to help automatic shaders generation.
- Tangent space generation when needed.
- Descriptive and comprehensible scene files format.
- HDR rendering, with various tone mapping algorithms supported.
- Skeleton animations.
- Per-vertex animations.
- Synchronous render loop (via timers) or asynchronous render loop (via threads).
- Modular architecture, through different plug-ins types.
- Compilable on supported platforms, using CMake.
The supported plug-ins types are: Importer, Divider, Renderer, PostEffect, Technique, 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.
Technique plug-ins allow the creation of custom rendering techniques.
- Direct: Default one, nothing special about it.
- MSAA: Multi-sampling anti aliasing
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 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.