I have been working on a personal rendering engine these days. Although there are lots needed to deal with and it is really just a beginning, finally here comes the first tease!
Features
Features currently supported:
-
PBR
real time physics base rendering algorithm and HDR. -
render queue
a node based render queue, that contributes to performance by reducing api calls. -
render pass
separated render pass, such as G-buffer, effect, lighting, shadow, making the whole process more controllable and also contributing to rendering performance. -
frustum culling
cull everything that is not inside the camera. -
shadow mapping
real time shader based shadow mapping. -
SSAO
real time screen-space SSAO. -
particles system
better looking and performance, easy to implement. -
instance object
implement of OpenGL instance draw feature. -
ECS
Entity Component & GameObject System just like Unity Engine. -
motion blending
bone animation blending, supporting all the animations from mixamo.com. -
third person controller
player-camera controller just like all the third person game, supporting PS4 controller. -
import blender file
blender is an awesome software. All the stages were edited in blender.
And some new features are one the way, such like baked shadow and lighting
LUT filter
bloom and blur
.
Download
- Source code available on GitHub (without assets).
- Download this demo here. (required: OSX 10.13 or later, PS4 controller).
Frameworks
-
OpenGL ES 3.2 & GLM
Core graphic api and core math library. -
Assimp
Although I have wrote some model loader program by myself, Assimp is more professional library and can handle more complex situations. Open Asset Import Library (short name: Assimp) is a portable Open Source library to import various well-known 3D model formats in a uniform manner. -
stb
Public domain C image loading library by nothings.
Assets
- Character and animation from mixamo.
- Model by SilverTm from UE4 Marketplace.
Bibliography
- Background: Physics and Math of Shading by Naty Hoffmann.
- Real shading in Unreal Engine 4.
- Frustum Culling LegacyOpenGL.
- Unity User Manual.
- MipMap Texturing.
- Deferred vs Forward+ Rendering with DirectX 113D Game Engine Programming.
- Forward+: Bringing Deferred Lighting to the Next Level.
- Google I/O 2011: WebGL Techniques and Performance.
- Efficient Gaussian blur with linear sampling.
- How to do good bloom for HDR rendering.
- Transparency Sorting.
- Learn OpenGL, extensive tutorial resource for learning Modern OpenGL.