Easily replaceable materials
CSEngine's materials can be easily customized and replaced.
You can custom swap between forward rendering and deferred rendering, as well as even the light pass stage of deferred rendering.
PBR Shading
PBR is basically composed of Albedo, Roughness, Metallic, and AO for rendering.
Because the principle of operation is used as it is with the existing PBR formula, the rendering result is also rendered as desired.
The PBR shader is set as the engine default shader.
Non-PBR shaders can be specified in forward rendering, but PBR shaders are unconditionally specified in deferred rendering.
Deferred Rendering (except Android)
Deferred rendering looks like it consists of 4 textures in the image above, but it is a G-buffer that only consists of 2 textures after optimization.
For this configuration, an objectized framebuffer was applied to create a class dedicated to G-buffer, and through this, deferred rendering was set to be implemented normally in the sub-framebuffer.
Deferred rendering and forward rendering are designed to be rendered at the same time naturally through depth values.
Currently, deferred rendering is not implemented normally on Android. Deferred rendering of Android devices is not allowed because the size and number of framebuffers allowed by Android devices vary too much.
Hybrid Rendering (Deferred + Forward with RenderGroup)
A RenderGroup attempts to implement object-oriented rendering by grouping various rendering processes together.
This allows multiple renderings to be implemented all in one render pass. (G-buffer is an exception as it is not a render pass)
List of rendering processes implemented via RenderGroup:
UI RenderGroup (in progress)