Hello everyone, I recently tried to run full-scene PBR materials on low-end and mid-end phones. I find that the default PBR material is very performance consuming. So I studied Unreal Engine, unity3D and Google’s Filament engine to optimize and improve BRDF at various stages. Here are some displays:
First, the default standard PBR material:
Approx Specular + Approx IndirectLight:
Approx Specular + Approx IBL:
NormalizedBlinnPhong + Approx IndirectLight:
NormalizedBlinnPhong + Approx IBL:
I know there are many differences, but considering the use of full-scenario PBR on the mobile terminal, approximate BRDF is more cost-effective than standard BRDF.
The following is the frame rate of the standard PBR rendering of about 200,000 triangles in the whole scene, which is about 25-30:
Using approximate BRDF and approximate indirect light, the rendering frame rate is 60 frame rate:
This is running on a low-end device. Although there is a distance between the approximate scheme and the standard PBR, the effect is still better than Phong illumination, because indirect light and energy conservation, and the approximate BRDF equation are considered.
Can I merge it into the default PBR.glsllib? The current code is here:
Unity3D optimizing LH
The Blinn-Phong Normalization Zoo