Looking for Guidance on Improving PlayCanvas's Performance for Detailed 3D Scenes

Hello Everyone :hugs:,

I’m currently using PlayCanvas to create intricate 3D environments with lots of objects, intricate textures, and dynamic lighting. Even though I’ve come a long way, I’m still having performance problems, especially with intermittent lag during interactions and frame rate reductions.

Here are some specifics regarding my project:

  • There are more than 200 objects in the scene, both dynamic and static.
  • I think that the use of real-time shadows and high-resolution textures may be causing a performance hit.
  • Although web browsers are the main target platform, I also want to achieve seamless performance on mobile and desktop computers.
  • Even though I’ve already put some fundamental optimisation strategies into practice, such as texture compression, level of detail (LOD), and culling, I’m still having problems, especially with older hardware.

Any guidance or suggestions from people who have faced comparable difficulties would be very appreciated.

In particular, I’m curious about:

1. Strategies for lowering draw calls: In a scenario with a large number of objects, are there any particular techniques or tools in PlayCanvas which you would suggest using to minimise draw calls? :thinking:
2. Effective lighting arrangements: How can I use dynamic light and shadows to combine performance and visual accuracy? :thinking: Are there any specific configurations or methods that lower the real-time lighting’s performance cost? :thinking:
3. Mobile Optimization: What are some important factors or settings I should pay attention to in order to make sure the game functions properly on handheld devices without significantly compromising on visual quality? :thinking:

https://forum.playcanvas.com/t/playing-animation-sequences-on-3d-mesh-texture-and-alpha-playcanvas-x-zapworks/servicenow

Thank you :pray: in advance.

Hey, There are several ways to improve overall performance. I will add few:
1- For 3d models, you can apply batching or hardware instancing (if applicable) and it will significantly decrease the draw calls. For the UI, each text and image element has a separate draw call so you can combine text and image element in a single image where applicable and that will further help decrease the draw calls. slicing can too help decreasing the drawcalls

2- That’s trickier to handle. For the static objects, i use lightbaking so that i can avoid the performance cost. For the dynamic object, i think implementing LODs and distance based shadowing helps alot in improving the performance.

3- For the mobile optimization, first priority should be to lower the VRAM size as less as possible. It can be done using texture LODs. For the performance, you can divide the devices in high, medium and low end categories by their fps or their device hardware and then play with the pixel ratio accordingly.

1 Like