Building a Walkable VR Mini-Museum in Unity

Building a Walkable VR Mini-Museum in Unity — From Editor to Standalone Quest 3

I built a small VR museum in Unity that you can walk around in, and got it running standalone on a Meta Quest 3 with no PC attached. I love learning about history and art, and VR lets you stand next to a statue instead of looking at a photo of it. I wanted to […]

Read More

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
RetainerBoxInvalidationBox

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
RenderPipelineOptimizationISM

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