Dynamic Decals

Unity’s First Screen-Space Decals

First Release

I built dynamic decals in about 6 months after I’d broken my wrist & couldn’t continue my normal job. Alongside the first released I built a website to market the product & give it an air of credibility.

The Unity community responded really well & gave a bunch of really valuable feedback. Within the first few weeks, I had multiple patches out fixing various issues.

Linked below is the more or less mandatory forum thread for official support, & to the right, is my first demo video.

Forum Thread

 
 

Version 2.0

For the user, 2.0 had a few new demos & performance improvements. Internally, it was an entire refactor.

I realized pretty early on that game objects have significant overhead & that if I wanted to draw thousands of decals cheaply I’d have to do away with them. So I switched the system to record decals in custom pools. These would manage the decal instances without the need of a game object & render them using GPU instancing.

I didn’t want to break existing workflows though, so Decal Projectors attached to game objects could still be used as normal, but internally they would request & manage an instance from one of these decal pools.

End Of Life

A Massive Success

At it’s peak, Dynamic Decals became one of the most popular & highest monthly grossing tool assets in the asset store, selling thousands of copies.

Both Scriptable Rendering Pipelines (URP & HDRP) have now implemented an almost identical screen-space decal solution with light layers (identical to mask layers) built in. While these lack a lot of the tooling I built around Dynamic Decals, at their core they’re using the same techniques.

Open Source

I deprecated the asset when Scriptable Rendering Pipelines were announced. Unity had already announced in-built decal solutions for HDRP & I expected similar solutions to follow for URP, making my asset more or less redundant in the long term.

There were calls from people still using the built-in rendering pipelines to keep the asset up, but I didn’t feel right accepting money for something that I couldn’t port into the new rendering pipelines.

Eventually, I decided to make it open source & let the community using it manage & maintain it. A member of the community now has it hosted on Github for all to use.

Github Link

Previous
Previous

Sons Of Ryke

Next
Next

Node Based Editor