M3D-Engine is primarily aimed at mobile devices. Most of these devices have very limited hardware capabilities.
The rendering pipeline accommodates for a wide range of mobile hardware supports, and is optimized for fillrate-limited, tile-based architectures.
M3D-Engine’s rendering architecture relies on a Model-View-Presenter pattern : Graphic Objects, such as meshes, textures or render buffers, maintain their data and states outside of the rendering domain. A view is created when needed and the rendering module manage its life cycle. When the object isn’t rendered any more, it’s graphic view goes in a recycling pool. From there, the view can be reclaimed by the object if it becomes visible once again, or it can be destroyed by the rendering module to free-up resources.
On mobile targets, M3E-Engine’s renderer currently supports OpenGLES20 and up. For desktop targets, it supports OpenGL 2.0 and up.
key features are:
1 – Extensible Rendering Pipeline
Graphic subsystems function as independent blocks, each managing a specific type of graphic objects.
Current graphic object types are
- Terrain chunks
Depending on the selected rendering mode (forward or deferred shading), the rendering order of these subsystems may vary. The client has the ability to control the rendering order of these subsystems in the render pipeline.
Clients can define their own intermediary rendering stages according to their needs. One can for example implement an external overlay manager, and then define at what time these overlays are rendered in the rendering pipeline.
2 – Early-Z rejection and Selective Rendering Path
M3D-Engine can be instructed to perform and early-z rejection pass in order to speed up future fragment processing for the frame. The gain is very dependent on the scene being drawn and the underlying hardware.
Depending on the targeted hardware, the renderer can be instructed to use Deferred Shading. This is however restricted to GPUs supporting multiple render targets.
3 – Upscaling
High-overdraw operations can lead to dramatic framerate drops on some low-end devices. M3D-Engine can be configured to render these intensive scenes in smaller render targets, and perform an upscale to a screen-aligned quad to generate the final image. Texture filtering or custom post-processing shaders can be used to blur-out most of the upscalling artefacts.