Object Pooling Didn’t Fix My Audio Spike. The Import Settings Did.
TL;DR A 5-minute music track set to Decompress On Load froze the main thread for about 390 ms on every cold play, in a Development Build. Switching the clip to Compressed In Memory or Streaming brought the worst frame down to about 2 ms. Object pooling the AudioSource made the play call about 0.02 ms faster, which is real but irrelevant to that spike. Background I […]
Read More
Retainer Box vs Invalidation Box: What 10,000 Updating Widgets Taught Me About UMG Performance
After looking at draw calls on the GPU side with Static Mesh vs Instanced Static Mesh, I wanted to look at the other half of the picture: UMG. “Wrap your static UI in a Retainer Box or Invalidation Box” is common advice, but I’d never actually measured what either one buys you, or how they […]
Read More
Static Mesh vs Instanced Static Mesh: What 10,000 Cubes Taught Me About Draw Calls
When people talk about render pipeline optimization, “use instancing” comes up as standard advice almost immediately. I wanted to actually test it myself rather than just repeat it. I ran a direct comparison in Unreal Engine and learned a few things along the way that the advice alone doesn’t tell you! The setup The test […]
Read More