This week was a continuation of last week, and in the beginning I focused on lowering the number of SetPass (draw) calls.
After some great conversations in the OLP Discord chat, I realized that I hadn’t been using the Frame Debugger to the max. I went through all my plants, and disabled Cast Shadows and Receive Shadows. That gave me a small boost in FPS. Next, Tania and Tyrus pointed out (ha) that my point light may have been causing an issue too. Disabling it (and later deleting it) jumped my FPS up to 90 in the editor! Finally, I disabled Realtime Global Illumination and my FPS hit 100 in the editor. Instead of using the point light to make my characters look brighter, I just turned up the intensity of the directional light from 1 to 1.3. Unfortunately, all this optimization still resulted in about 30 FPS on the device, but at least it was an improvement. Currently my FPS is about 130 in the editor.
My draw calls were down to 20–30, which is great, but my tris were still extremely high (around 447,000). Tyrus suggested using Blender’s decimate functionality, so I decided to look into it. I don’t have very good 3D modeling skills (or a lot of time) so I decided to make an investment and buy the Automatic LOD asset from the store. The asset also comes with the Mesh Simplify tool, which helps developers reduce the vertex count of their models in the Unity editor.
Mesh Simplify seems to be the tool I needed. After a few hours of messing around with it (my first run took about 8 hours just to save), I started to get the hang of it. I reduced my tris down to 70–80K which was great news. Then I tried to replicate this in other scenes. Surprise, I had forgotten to check “Enable Prefab Usage” on the Mesh Simplify script, so I had to go back and check it. This process seems to take several hours to finish. I ended up canceling and just copy-pasting the environment to the other scenes. My FPS ended up at 60!
I also decided to try and add some finishing touches to my demo this week because the end of the program is coming up and I wanted to add some Post Processing and other effects. I imported the Unity Post Processing Stack and it was really easy to use. I made a profile that includes Color Grading and Vignette, and assigned it to all my cameras. That gave the objects’ colors a more unified feel (since they had all come from different sources), and added a slight dark ring around the edge of the screen. That should come in handy when it comes to not making people sick since my frame rate is a little low at the moment. Unfortunately for me, Post Processing is not good for mobile VR, so I disabled it.
Next week, I hope to focus on my proposal and budget.