Telenav's next-gen rendering engine

Features

Next-Gen rendering engine designed for mobile and embedded systems, API indepdent (OpenGL, OpenGL ES 2.0/3.0, DX11), the new architecture was targeted for multi-core systems and multiple contexts (i.e. multiple GPUs and/or displays).

Commands are dispatched from multiple threads (where culling is also also performed) and executed on the main thread via command buffers. The commands are sorted based on their keys, for 3D objects they also take into account their depth to make use of hardware early-z rejection and also minimize state changes.

Main Features

IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage


Terrain

The terrain was based on a variation of Continuous Distance-Dependent Level of Detail by Filip Strugar. It was also designed for two view modes, 3D and 2D, and to be able to configure certaun features at runtime, such as: terrain synthesis via FBM, filtering and quality.

For rendering 2D features (i.e. roads, buildings, etc.) on top of it, a projective texturing technique was used to minimize memory footprint (the elevation tiles use only 16-bit textures) and also to minimze framebuffer switches which are expensive on tiled GPU architectures.

IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage
IMage


2D Features


Lines

Line rendering is based on shaders and antialiased (i.e. using distance fields) for both 2D and 3D (the technique in 3D is different and uses screenspace derivatives for AA), the lines were based on Shader-Based Antialiased, Dashed, Stroked Polylines by Nicolas P. Rougier, the dash lines used a floating point texture for encoding the dash patterns.

Configurable properties

Configurable dash pattern

Outline support


Icons

Icon rendering is also based on shaders and antialiased (i.e. using distance fields), they can be combined via an encoding pattern and are used for POIs (city icons, popups, etc.).

Configurable properties



POIs


Other


Culling system

Fast culling system for 2D (roads, POIs, text, etc.) and 3D features with customizable LOD frustum levels:


Animation system

Animation system used for animating map features from POIs, camera to buildings:


Profiler

Real-time performance profiler based on imgui:


`