BCon19 BlenderMarket sale

It is almost a tradition by now: BlenderMarket will have a sale during the Blender Conference.
This means serious discounts on participating products and of course my add-ons are on sale too!

Check out BlenderMarket to see if that special product on your wish list now has an orange 'sale' label.

New release of IDMapper

A new release of IDMapper is currently available on BlenderMarket
This new version is a bugfix release that besides minor fixes also fixes an error that might occur when trying to assign colors based on material ids. Furthermore the manual has been updated to reflect Blender 2.8x layouts and the add-on has been tested against Blender 2.81-beta.

Space Tree Pro ported to Blender 2.80

Space Tree Pro, the first add-on I published on BlenderMarket way back in 2015 has been quite succesful. The add-on allows you to create parametric trees that you can keep on tweaking even after finalizing them and allows for interaction with the environment, for example grow less branches in shadowy areas and not grow into walls at all, amongst tons of other features.

Blender 2.80

As soon as Blender 2.80 was on the horizon people started asking whether a version of Space Tree Pro would be available for the new Blender. Because I have several add-ons on the market and Space Tree Pro is one of the more complex ones, it ended up last.

However, as of today Space Tree Pro 2.80 is available on my BlenderMarket shop!
Existing customers can download the new version free of charge from their BlenderMarket account.

The add-on is fully functional, including support for grease pencil drawn branches and trees created with older versions of Space Tree Pro can be used with the new version. The manual however is still a work in progress and still shows screenshots from the older version. The functionality is the same though so that shouldn't be too much of an issue.


While porting I found a bug: a shadow collection (group) only seems to work correctly when you have also configured an exclusion collection (group). I think I can fix this but I am reluctant to do so as it might break backward compatibility so I am hoping for some feedback on this from users.

People looking for a more interactive way of drawing trees might want to have a look at NewGrowth: draw trees interactively.

newgrowth exclusion zone (new feature and price drop)

A new exclusion zone has been added to the NewGrowth add-on.

This add-on allows you to design trees in Blender interactively.

And just for fun I lowered the price to just under 30$ Check it out on my BlenderMarket shop while this offer lasts!

DumpMesh: 2.80 update

Previously I wrote about a small add-on that can create a small add-on on the fly the will recreate a mesh object with all its associated geometry data.

This add-on is now updated to Blender 2.80 and available from GitHub.

for more details see the post mentioned.

NewGrowth Interactive tree design, Blender 2.80 edition

Today I am happy to announce the Blender 2.80 edition of my NewGrowth add-on.

The add-on allows you to design trees interactively and later even adjust some parameters of the generated tree mesh.

An introduction and a feature overview are avaliable in the next two videos (still showing the 2.79 user interface)

The add-on is available on BlenderMarket.

More convenient debug output when compiling Blender 2.80 OpenGL shader programs

Because this might be useful to other people as well, I created a small module that compiles OpenGL shader programs and shows compilation and linking errors in a more convenient manner. On successful compilation it also list all remaining active attributes and uniforms so you can see which ones have been optimized away (and may cause errors when trying to assign values to them with batch_for_shader() or shader.uniform_xxx()

On compiling OpenGL shaders Blender lists errors on the console and (with the --debug-gpu-shaders option) will dump source code into the /temp directory. That is not very convenient because it is not in one place and the source code does not contain line numbers. When you use the debug_program() function form the opengl_debug module the output is all on the console and reorganized for readability.

Nicer error listing

For example, with the code below
    vs_syntax_error = '''
    in vec3  pos;

    void main()
        gl_Position = pos

    debug_program(vshader=vs_syntax_error, name="Syntax error sample")
The output will be
GL Error: 0 (Syntax error sample:vertexshader)
0(7) : error C1035: assignment of incompatible types
0(8) : error C0000: syntax error, unexpected '}', expecting ',' or ';' at token "}"

[0001] #version 330
[0003]     in vec3  pos;
[0005]     void main()
[0006]     {
[0007]         gl_Position = pos
[0008]     }

Active attributes and uniforms

Also, when there are syntax errors it shows the remaining active attributes and uniforms. For example, with the code below (assuming you have done import debug_program from opengl_debug)
    vs_opt = '''
    in vec3  pos;
    in vec3  pos2;
    void main()
        gl_Position = vec4(pos, 1.0);

    debug_program(vshader=vs_opt, name="Optimized attribute")
The output will be
active attributes
['GL_FLOAT_VEC3'] pos 
active uniforms
showing that there are no active uniforms whatsoever and that the pos2 attribute has been optimized away.

Code availability

The code is available from my GitHub repository.