A scene desktop system driven purely by a 3D engine. A 3D launcher that runs real-time PBR+IBL on the mobile phone desktop
We made a decision that went against "common sense" : not using an existing engine.
Almost all the mainstream 3D desktop/launcher products on the market are developed based on general game engines such as Unity or Unreal. This is a reasonable business choice - a mature engine, easy recruitment of talents, and a fast iteration speed.
But we didn't take this path.
We wrote the renderer from scratch. Based on OpenGL ES 3.2, a lightweight real-time rendering pipeline for mobile desktop scenarios has been constructed. There are no editors, no visual blueprints. It's all C++ and GLSL.
Why?
Because the Universal Engine is designed for "games". They need to handle scene transitions, physical collisions, animation state machines, script systems... These expenses are necessary in the game but a waste on the desktop.
All we need to do is to render a high dynamic range 3D space on the mobile phone screen at 60fps, without frame drops or overheating.
For this reason, we have made the following engineering decisions:
Self-developed PBR material system
Based on the micro-surface model (GGX distribution +Smith geometric attenuation +Schlick Fresnel approximation), it supports the Metalness-Roughness workflow. All material parameters are baked into a custom binary format during the offline stage, with zero parsing overhead at runtime, and directly uploaded to the GPU.
2. Image-based Illumination (IBL)
Pre-compute the diffuse reflection Irradiance Map (Irradiance Map) and the specular reflection Pre-filtered Environment map (Pre-filtered Environment Map), in combination with the BRDF LUT, to achieve single-sampling highlight calculation. The ambient light source is taken from the HDR panoramic image. Convolution is completed during the compilation period, and only sampling and calculation are performed during runtime.
3. Customize the 3D asset packaging format
Do not use glTF, FBX or OBJ. We have designed a binary layout for GPU rendering: vertex data is aligned by Cache Line, the index buffer adopts a 16-bit/32-bit mixed index, and texture data is directly stored in GPU native Compression Format (ASTC). Load and use immediately, without the need for parsing, conversion, or runtime construction of BVH or acceleration structures.
4. Touch-driven parallax response
The desktop is not static. Every touch and swipe will drive the real-time transformation of the viewing Angle matrix. Panning, rotating, zooming - each frame of the scene is recalculating the View-Projection matrix based on user interaction. This is not "switching pages", this is "looking around the world".
5. Asynchronous resource loading and frame rate locking
All 3D assets are asynchronously loaded into the video memory when the application starts, and the main thread does not block. The rendering loop is synchronized with the Choreographer, and the frame rate is locked at the device refresh rate (adaptive to 60/90/120Hz) to ensure sliding responsiveness and visual coherence.
A scene desktop system driven purely by a 3D engine.