Hi,
I’ve recently started to look deeper into optimizing my game to get it to a stable 60 fps on my machine. The game is a 3D 8-player top down arcade racer.
So far I’ve used the Profiler to get rid of garbage generating code and cpu-hogging code, modified overly complex models and animations, etc.
I’m now working on reducing draw calls and setpass calls. I’ve kept this in mind since the earlier stages of the project so I’m using as few materials and textures as possible, to the point of almost everything in the game (except the 8 player/cpu characters) shares the same material, shader and texture. The graphics style is cartoony and instead relies heavily on geometric features in the meshes and a post processing outlines shader in the render pipeline.
My problem is that whatever I do and whatever batching settings I use I still get basically the same framerate and the same end user result. However, the amount of setpass calls, drawcalls, batches, CPU time, verts/tris drawn, etc varies wildly depending on the settings. The profiling is done on debug builds and not running in the editor. Please see attached images for details.
What am I doing wrong or what have I missed? Or is this fine and there something else entirely I need to look into for further optimization? I would be eternally grateful if someone could set this straight for me.
I’m using Unity 2019.4.25f1 with the Universal Rendering Pipeline and I’m running on an Intel Core i7-3610QM and a GeForce GT650M (yes my laptop is old).