Summary
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!
Features
The supported features are those:
- Deferred rendering for opaque objects.
- Weighted Blended rendering for transparent objects.
- 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.
- 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.
Plug-ins
The supported plug-ins types are: Importer, Divider, Renderer, PostEffect, Generic and ToneMapping.
Importer
Importer plug-ins allow the importing of various mesh files.
Currently implemented:
- AssimpImporter, using ASSIMP library, to import a wide range of formats.
- PlyImporter, used to import large PLY meshes (for which ASSIMP encounters some problems).
- ObjImporter, used to import OBJ meshes.
Divider
Divider plug-ins allow mesh subdivision using various algorithms.
Currently implemented:
- PN-Triangles subdivision surfaces;
- Phong patches;
- Loop patches.
Renderer
Allows the selection of the rendering API.
Currently implemented:
- GlRenderSystem, to use OpenGL.
- TestRenderSystem, a test renderer, which does nearly nothing, but allows tests implementation.
PostEffect
Plug-in type that allows post processing effects.
Currently implemented:
- Bloom: HDR bloom post effect.
- GrayScale.
- FXAA, a basic antialiasing.
- SMAA, a good quality temporal antialiasing.
- FilmGrain.
- Kawase Light Streaks.
ToneMapping
Used by HDR rendering, to customise the tone mapping type.
Currently implemented:
- Linear.
- Haarm Pieter Duiker.
- Hejl Burgess Dawson (also named Filmic).
- Reinhard.
- Uncharted 2.
Generator
Plug-in type which allows to generate meshes, or textures, or other.
Currently implemented:
- DiamondSquareTerrain: to generate terrains inside Castor3D scenes, using diamond-quare algorithm.
Generic
Plug-in type which allows to extend the behaviour of Castor3D.
Currently implemented:
- 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.
Documentation
The documentation for CastorUtils and Castor3D can be generated using Doxygen.
Gallery