Improve Cycles/EEVEE For Procedural Content Creation

Hey Omar! I wanted to thank you for your work, it’s amazing. You implemented very useful features, while also listening to the users and handling their feedback. And I have to thank you for prioritizing that the features you made so far come into 2.8 over adding extra features. IMO that’s exactly the right way, because it’s better to have the already existing cool features in 2.8 for (somewhat) sure than to add new features while risking that it’s not ready for merging. I have seen many gsoc’s suffer from that, but you seem to avoid that. Thanks!


We did work on the Spline Info node, however, we couldn’t finish it in a timely manner. We underestimate the complexity of the Curves code.


And truth is it gets really slow on the compilation when u have just a few “layer” groups on a PBR painting workflow.

This is just the result of an addon I’m writing and whenever u mute a node or make small changes it would take forever to refresh the viewport, making little freezes here and there whenever changing something.
It all happens when running Eevee ofc.
If there’s some workaround to this I would like to know.
I also wonder how Armor is handling it’s materials. it looks a lot faster but I don’t really know how it’s done


Armorpaint is not creating layers of dynamic materials, unless you use the layer system. It’s actually directly painting the values onto the relevant maps. So it’s a destructive workflow, same with substance painter. It’s so fast because it’s only displaying one set of textures, unless again, you use layers. Substance also bakes non destructive changes after you change something, at a texture level. Both things give you the performance.

1 Like

Substance Painter with fill layers on a single material is actually quite fast until u reach about 20/25 layers. That would be a non-destructive workflow since u can change values in any channel based on painted/baked masks.
Haven’t tried Armorpaint that much to say it can do the same, but I wish there’s a way to do that right now in Eevee without dying waiting for it to recompile. Any ideas?. Thanks!


Hi everyone,

Currently, we are submitting the code for review to be merged in master. Some of our changes were approved and are already in master, so you can try them in the official builds.

The following task provides an overview of the status of the individual changes. So if you want to keep a closer look at what got merged, you should check that task.


For speed up consider using blender gpu api (offscreen buffer) to combine layers instead of using nodes. If all you want is simple blendings of layers like in ps, its not hard to do and example code is all over the net, so you end up with one texture set in shader nodes. Then if you want to use noises from shader nodes and such you obviously can’t. It’s kinda unfair to compare shader nodes to texture making apps, scope of what substance painter does and what shader nodes do is quite different, at least currently. Texture making in blender without ability to have buffered intermediate steps is quite limited.

1 Like

Was thinking about something like this, but the addon is not up to the standards yet.

What do u mean with offscreen buffer?.


Agh, interactive painting… sorry didn’t understand what are you working on. Using off screen would be even slower/impossible i guess since you need to read write million times for every stroke plus blending layers. Stupid idea

1 Like

Hi Omar. I know that September 4th is the final day for the GSoC and some items from this project are still in review. Technically September 10th is the last day for features in 2.81, if I’m not mistaken. I would assume not everything would make it into 2.81, which is fine of course, but I wanted to ask if things would roll over to 2.82. Also congratulations on all the added things in 2.81!

This thread makes me wish we could use OSL in Eevee and not just cycles :frowning:

I think it is not too late, we may still be able to merge all of the remaining features. But if that wasn’t the case, we will definitely get them merged in 2.82.


Good to know, thanks Omar!

@OmarEmaraDev just want to remember you the “Object Info → Random by Loose parts” option.

I know you had no time to develop it during the Gsoc, it’s just that I don’t want it to fall in the forgotten world, it’s too important for many many things :slight_smile:


Will be the first thing to do after GSoC. I promise.




Did this ever turn into a task? I couldn’t find it in the various lists.

Can I suggest it’s called “Invert Y axis” and perhaps have a tooltip like “Inverts the Y axis (green channel) to change the swizzle in order to accommodate normal maps produced in a range of applications”. And perhaps have a table in the manual about which applications have which swizzle.

A few years ago I spent a couple of days wondering why my normal map didn’t look right. This would have pointed me in the correct direction early on! Thanks.

Now the dust has settled a little…

Map Range Node - add a drop-down for different modes. For instance Min-Max, Min-Range and Max-Range (on the output side (to)).

Justification - In a single procedural planet shader I used groups for the above in the following quantities: Min/Max 7, MinRange 4 and Vein* 2. I didn’t use MaxRange, but I’m sure someone will find a use case for it. I created a Max/Min From/To as the node is now configured, but I don’t think I’ve used the From side yet.

I appreciate that much of the above is easily achieved with a couple of nodes, but given the repetition, it seems quite useful.

*The vein mode is selecting a value as the centre point and then a range value that brackets it on either side. Much as the Map Range Node (on the To side) is like a linear colour ramp with two points (using values), the vein mode is a like a linear colour ramp with three points, varying from black to white and back.

Hi everyone,

We did it! All the features added in this project are now in master!


Congratulations! A vacation should be well deserved at this point. :slight_smile:

So now when you’ve reached this milestone, what are your future plans for development?

1 Like