Mobile phones are widely used and its hardware is now capable of rendering advanced
graphics. Physically based rendering (PBR) is a technique which makes computer graphics
look realistic and professional. PBR has been used by the movie industry for a long time
and now it has become more prevalent in gaming as PBR can be rendered in real-time. The
bidirectional reflectance distribution function (BRDF) is responsible for how light is reflected
on a surface based on the material properties of the surface. Two BRDF shading models and
two graphics APIs were measured and compared in this project in order to evaluate if the
performance and energy consumption was suitable for mobile.
Google Filament is an open-source PBR engine which was used to create test cases for
measuring power and performance on mobile. The BRDF of Unreal Engine 4 (UE4) was
added into the Filament engine and compared to Filament’s native BRDF. The graphics
back-end APIs in Filament, OpenGLES and Vulkan, were compared.
The rendered image quality of UE4’s BRDF implemented into Filament graphics engine was
unsatisfactory and flawed. The image quality of using the Vulkan back-end was incorrect
and indicated problems in the rendering, as the graphics API should not impact the render
quality.
The results showed the implemented UE4 BRDF performed 6% worse than Filament’s native
BRDF. The Vulkan graphics back-end performed 50% worse than OpenGLES which was
significant. The energy consumption of UE4’s BRDF used 9% more energy than Filament’s
native BRDF and the Vulkan back-end used 32% more energy per frame than OpenGLES.
The Vulkan back-end used less power and less of the central processing unit (CPU), but that
was not enough to compensate for the low performance. Furthermore, the GPU memory
bandwidth of the Vulkan back-end was twice of OpenGLES which indicated possible memory
bottleneck. This was further evidence that the Vulkan back-end in Google Filament was
incomplete.