An Elegant Stylized Tree Shader. Possible in Blender?

In my neverending quest to find ways to make more efficient stylized trees, I happened across this Unity technique the other day that greatly impressed me. To drill down to the bare basics, it’s a shader that takes the individual faces of a lumpy quadmeshed object, each face individually UVed, and turns them into camera facing billboards. It’s a fairly simple process, and the results speak for themselves.

…now I want to be able to do this in Blender. Admittedly, my knowledge of nodework is fairly shallow. I can do the basics no problem, but I still have yet to get truly fancy with them. As far as I know, there’s no way you can transform geometry like this with a shader outside of using a displacement map, which probably wouldn’t work in this situation. The Geometry Node in the shader editor seems to be more concerned with surface normals and shading than it is with actual manipulation of underlying geometry.

So far, the only way I’ve been able to recreate it is through a particle setup, which has given me okay results, but it’s more complicated to deal with than what I’ve linked to above. I want that simplicity.

Is this possible to do in Blender?

It’s not a shader as shaders play with texture and color leaving geometry intact, which is not the case here. You can write a python script that spearates, subdivides and rotates the quads to obtain this result. The only thing is that you need to start with a cube you later transform as Blender subdivides tris into tris and with ngons it may be a mess. All other steps should be possible in Blender.

You might want to look at the Alpha Trees Addon

Programming python scripts is a bit beyond my area of expertise. I wouldn’t even know where to begin on that front.

Though I was able to pull off something similar using particles, locked track constraints, and a data transfer modifier to capture the normals from the underlying sphere. It’s far from the bang out a few nodes, get trees approach shown in the video above, but the results were pretty close.

The problem is Blender doesn’t have a way to define global transforms, rotations, and whatnot from within the material like the game engines do. I thought I could whip something up with displacement maps, but from what I read, it’d only work in Cycles.

Though with geometry nodes having recently arrived, I might still find a way to do this with nodes. We’ll see.

It’d be using it in a sort of unintended way, but it could work. I might check it out here in a bit.

Here’s the end result of my experimentations.