News

ALMOST THERE!

From the first idea to the launch of Derive [BETA]

It has been a wild year 2021  and here we are in early 2022. A full year of development and preparation, and we are only a few days away from the launch of Derive’s beta version as an editor extension for Unity3D. It’s time to go back in time to the original idea that was so far away from what Derive is today, it’s hard to imagine how it came to be. It did not even have a name!

The Original Idea

It was through the year 2020 that I was frustrated with textures. Sure, you can find more of them online than you’ll ever need, but at least for me, they were never quite what I wanted. It’s not talking about quality, but rather subjective imperfections that drove me nuts. Even though they weren’t objective imperfections, but instead represented something that was slightly different from what I was looking for.
 
I’m talking about a color being a bit too bright or a bit too dark. Tiles being a bit too large or a bit too small, bricks being too much out of place – or even too much IN place. If you have ever spent time looking for textures or any other content for an app and browsed through hundreds or even thousands of items, finding that you wouldn’t use a single one of them – no matter how nice they looked – then maybe you know exactly what I’m talking about.

So the first idea was to pick up my camera, go outside and take pictures. Of course those pictures would require a tool to make them seamless, approximate height maps and use that data to generate a normal map, etc. This would – while not perfect – be a lot more efficient than scanning. Who wants to take hundreds of pictures of the same surface and then spend unimaginable amounts of time and memory to extract a single texture from them. Sure they look about as photorealistic, as it gets, but to me, it was too much hassle – there had to be an easier way.


So while I thought about how I could turn photos into usable textures the stream of ideas got flowing. I quickly realized how much more such a tool could potentially do. The only problem was that applying a simple sequence of filters to a photo would inevitably get me in trouble, since some maps would require filters, while others wouldn’t. So I ran into the problem of branched intermediary result.

The Latest Craze: Node Editors

That’s when the current concept actually hit, and I realized the only usable way to achieve, what I was looking for, was by building it into a node editor. Node editors have become a trend in recent years, enabling the expression of complex branched sequences of operations by virtually anybody with common sense. So why would texture filtering not work as well? It wasn’t until well into the development process, that I realized there were some more benefits to a node-based approach:

1. Non-destructive editing
While classic image and texture editing tools, rely on layer-based operations, they all have in common that layer editing is destructive. A node-based editor, on the other hand, would always produce the same output for the same input and each node would have its constant output, no matter what you do after it.

2. Overview
Another benefit of node-based tools, is that they give you a relatively good overview over the sequence of operations you are performing. Most textures I made with Derive were created from project files with usually 30-100 nodes. Imagine having to work with 100 layers – not very convenient, is it?

Derive Node Editor

Wait a Minute - Why Only Edit Photos?

Starting with photos in mind that could be turned into usable textures, it became clear that Derive was actually capable of doing a lot more than just that. Why not have nodes that actually create data in a sensible way? Create your own patterns, your own tiles, your own bricks, etc.? Use Derive to blend all of that together and create your own textures. With only a few tools the possibilities are quite massive and there’s little you wouldn’t be able to do. So basically the whole concept has moved from a simple photo editing tool to a PBR creation suite. Of course, since I had moved from a tool for myself to a tool for everybody, it had to have all the useful stuff integrated, like real-time preview, easy access to a knowledge base and support for Unity’s own shaders. But that’s what you would expect from a tool for Unity, right?

Why the name 'Derive'?

This is a funny one: The original idea was to generate approximated normal maps for textures that didn’t have any. One way of doing that is by approximating a height map and treat that height map like a two-dimensional function along the x- and z-axis. The partial derivatives for each axis represent the normals that are stored in the normal map. So ‘Derive’ seemed to be a fitting name.

 

The funniest thing is, that Derive does not even use that technique anymore, because it’s so prone to floating point inaccuracies and often produces artifacts. Derive’s ‘Normals from Height’-node uses a sobel-operation to generate the normal field instead, but changing the name from ‘Derive’ to ‘Sobel’ – nah, didn’t want to do that.

Conclusion

The ideas have not stopped streaming in and while Derive will be going live in just a few days from the time of writing this, there’s a good reason for it being a beta version. There are some minor but also some very major features that must be included for the final release to turn it from a PBR editing tool to a full-blown texturing tool for the most complex of objects. Some of these features are listed in the roadmap, but I won’t dive deeper into that right now and save it for the next post.

Would you like to join the Derive Beta?

Login