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:
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:
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: shader
reference: Unity3D optimizing LH The Blinn-Phong Normalization Zoo unreal4 D,Approx
I have doubts. Phong plus baked light maps I think would look better. The bottom image looks very washed out and feels like something is wrong with it.
…would be interesting to see the comparison of best phone settings against this one.
You are right, carefully adjusting the texture, Phong lighting can indeed achieve great results.
Approximate BRDF is a fast solution, I also tried Phong lighting with environment mapping, it may be better than approximate BRDF.
I am still studying more other approximate alternatives to BRDF on mobile.
The 3.3.2 version already fully supports GLES3.x, I have tried to test the post processor on the mobile terminal, the default Bloom has been supported, and the shadow is also supported.
It is recommended to enable 8 downsampling when using the default Bloom to ensure a high frame rate.
For BloomFilter, you can try to reduce the sampling rate, for example, reduce it 8 times.
For shadows, ShadowFilter consumes a lot of performance, so use ShadowRenderer instead.
I wrote a Lightmap baking program myself, but it is not perfect yet. I use it to bake static shadows.
I will release this program and source code to the store when it is perfected, it will automatically create the light uv and light map, just open the j3o file and bake it.
@JhonKkk would be nice if you publish your version of PBR material for mobile on to JME store
Cool
By the way, the above screenshot of the “ancient Asian palace and swordsman” looks very nice. I am working on a game with similar Asian theme. Is it from the game you are working on? Interested to know more about it.
Using LightProbeFactory in java code does not work in android. You can only add light detectors in SDK SceneComposer to bake indirect lighting in advance.