Toy Engine
In order to gain some expertise on real time rendering techniques and algorithms, as a hobby project I developped this thing.
Not sure how to call it as it’s has no true purpose.
I guess playground is the word.
The interface is built with Qt, and the rendering part is done with openGL.
I stopped the development in 2018 because of time constraints.
The source code is in that repo : https://github.com/jacquespillet/KikooRenderer
Here are some of the features illustrated with screen grabs.
Overall Interface
Shot of the interface of the software. The structure of the software is very much influenced by Unity’s.
It is all based on an “Entity Component System” pattern.
Left panel is a scene graph visualisation
Right panel shows the selected object parameters and components.
Bottom panel is a debugging console
Bloom post process
Quite a simple implementation, lots of room for improvement.
Depth of field post process
Example of a depth of field with a rather large focus distance.
Fast approximate Anti aliasing Post process
Clever algorithm that applies some image processing techniques to reduce jaggered edges due to aliasing.
Cubemap reflections
Directional Flow
Implementation of the great tutorial by Catlike Coding.
Water Plane
The normals and texture coordinates of a plane are displaced using a “dudv” map.
The objects of the scene are reflected onto that plane using the displaced normals.
It also uses the fresnel equations to make the water more reflective based on the camera direction.
Shadow mapping
The 3 most common types of light are supported : * Directional * Point * Spot
Example of a low resolution shadow map
Higher resolution shadow map
Soft shadows are achieved using either percentage close filtering or poisson disk sampling.
Materials
Several type of materials are built in :
* Unlit
* Blinn-phong shading
* Physically based shading
Lots of room for improvement in that area.
A few different material parameters
Normal maps
Basic implementation of normal mapping
Simple plane with displaced normals
Bump mapping
Basic implementation of bump mapping
First image is with bump mapping, second is without bump mapping
Particle system
Simple particle system that uses texture atlases and billboards.
Same Particle system with two differents particle sizes
Volumetric ray marching
Tried to implement some ray marching for volumetric to render clouds.
Not 100% satisfied with the result.
It uses a 3d perlin worley noise.