[56] BIRP to URP

Antorum

04/16/2026, 06:48pm

42 views

This one was a damn pain.

Antorum has been running on Unity's built-in render pipeline (BIRP) for most of its life. BIRP is the old default, the one that shipped with Unity for over a decade. It's battle-tested and honestly looks fine, but it's showing its age, and Unity is actually going to deprecate it soon. Since I'm already on the latest Unity version, it felt like the right time to drag Antorum into the modern age and move to the Universal Render Pipeline (URP).

Look and Feel

The game feels a lot snappier and looks much better. We get emissive materials, nicer LOD fading, and real-time lights that actually look like lights. I took the opportunity to place a lot more of them around the world.

Forward+ and Lighting

We switched the rendering path to Forward+, which lets us have many more real-time lights in a scene without the old per-object light-count limits. Shadows are still expensive, so we're now pickier about which lights are allowed to cast them.

Materials and Shaders

Migrating all of the materials was tedious. Unity's built-in upgrade tool did most of the work, but for a chunk of materials it failed to carry over textures, so those had to be fixed up by hand. Our custom terrain, editor, and character shaders all had to be rewritten for URP, and lighting values needed tweaking across the board. Honestly a lot of this stuff is showing its age in general, since I wrote it so long ago. It's still not perfect, but I'll keep chipping away at it.

Water and Weather

I had to ditch LuxWater for Stylized Water 3, since LuxWater doesn't support URP. Stylized Water 3 is easier to configure, and I had fewer issues getting it to play nicely with Enviro 3. It also comes with some really cool river tools I'm excited to dig into. Enviro 3 itself is still great, and upgrading to the URP-compatible version was painless. Fog interacts with water much better now.

Addressables

The biggest surprise pain point was the Addressables build pipeline. Our asset content is built from a separate Unity project, and once we were on URP the shipped Addressables bundles started throwing missing shader errors in the actual game. Unity was overzealous about stripping shader variants it thought weren't being used, leaving only "invalid" shaders with erratic lighting behavior. Strange.

The fix was twofold. First, I centralized the URP renderer, pipeline asset, and global settings into our shared engine package, so the game, editor, and assets projects all resolve to the exact same rendering configuration. Second, I added a custom shader stripper to the assets project to preserve the variants we actually need at runtime. Needing to do that at all seems wrong, but Unity is full of annoying quirks like this and from what I could see it's a known issue. With both fixes in place, the Addressables bundles now build with the same shader variants the game and editor use, and everything renders correctly in the shipped game.

Other Updates

On a related note, I got the macOS build up and running again. The downloads page is now gated behind a login, and we serve a proper releases manifest with a version archive for all the relevant Antorum software. Good progress on the devops front.

With all that being said, the game is online! Make an account, download the client, and help test it out if you're interested.

Thanks for reading.

- Declan (@dooskington)