2D Preview Procedural Textures Inside Nodes

Hi everyone,
I made a proposal to see 2D preview of procedural textures inside nodes. Please vote up here if you find it useful, cheers!

texture_preview_proposal

ss_node_without_names

10 Likes

Previews and thumbnails are good, but I am still not sure I like how tall it makes blender’s nodes. Expand the width of the node and it make the preview that much larger causing a height increase. Add in any node options and might as well have skyscrapers. You also have to consider a lot of those procedural textures are 3D as are many other nodes, maybe have a 3D object preview as another option.

I keep wondering if it would be better to have the preview thumbnail be part of the background sort of attached to the node and displayed foreground when active. Zoom-able with the background. This would work especially well with image textures.

The other idea I like would be a thumbnail in the node’s minimized state. Just the preview, title bar, and sockets on each side. On that note: I still find it odd that the sockets on a minimized node still don’t show a tooltip containing its name and value when hovered long enough. In fact, sockets still have no visual feedback when hovered at all.

2 Likes

Lots of thing could be improved. I just showed a quick design/idea. All the parameters of nodes can be displayed at side (N) panel and leave node editor for previews only like in Substance Designer.

1 Like

Here is simple mockup of the last idea I mentioned of the node in a minimized state with preview thumbnail:
node_thumb_minimized_state

When the node is maximized the preview could be placed outside of the node when active, or smaller to the side when inactive, but minimized state stays the same. Idea is to keep maximized node from getting too tall.

1 Like

This is a must-have in Blender and is long overdue. Rather than argue semantics on where the preview should go or how big it makes nodes, we should stick to the merits of the proposal basics here IMO.

1 Like

So how would driving socket values with textures, masks, and other information work? The sockets can’t be removed or the ability to construct shaders or compositing setups gets crippled.

You basically get a preview of whatever the node’s output is. So, feeding anything to node’s inputs (or using drivers) shouldn’t be a problem. Or did I misunderstood what you mean?

Simple: The preview needs to be generated by executing that branch of the node tree and caching the thumbnail, only recalculating again if something on that branch is changed (and the thumbnail is enabled of course). This is actually similar to what I want with a “cache node” as well (just an object, UV channel, and resolution). The same functionality could be used for both thumbnail previews and a cache node.

As already mentioned though the preview needs an option for a 3D object (cube, sphere, planes, or material ball). Settings for thumbnail could include 2D, 3D with shape, and bounds. Bounds defaults 0 to 1 for 2D (good for UV) and -1 to 1 for 3D (sort of like bounding box of object in preview). If the user is doing something with larger coords they can change the bounds to whatever they want.

Being able to visualize data anywhere in the node tree is extremely helpful.

On composite node, we do have a preview. Things look different on shading nodes. We are constrained to a material output.
If we like to visualize what we are actually doing, we have to reconnect material output node.

Little previews might help. But, what about a second output node, a ‘viewer’ node? (Viewer - Flat 2D, Sphere, Cube, etc )

I would prefer something like a viewer node, because (as-is) node editor already eats up much UI space. But, viewer node could be easily out of sight, navigating through node tree. Other viewer in composite fix the problem ( Backdrop or Image Editor preview).

Something which works like Properities/Materials/Preview. Which is not limited to material output.

Having to hook up some separate viewer node is just too inconvenient and wastes even more space in the editor with an extra node. Nobody said to make the preview mandatory or even default. Just having the option is nice.

Nodes are a visual language and the preview of an operation should be where that operation is taking place.

1 Like

Instead of a viewer node you need to hook up to see, what about something like the look-dev preview spheres? Something in the corner (2D square or 3D mesh) that shows the state of the currently selected node.

Either way, having some kind of visual feedback on specific nodes sounds like a great idea. :slight_smile:

On previews generation I’d update them according to focus:

Realtime: Generate for the final output node and the (last clicked?) output of the active highlighted node. So maybe a split-view background for those?

Thumbs per texture I’d update less or only on user request.

@SynaGl0w
Actually, I am not sure, a small thumbnail snapshot would be enough. Every node also has to be evaluated to achieve this. That was my reason to prefer a 2nd ‘viewer’ node. Bigger preview, limiting preview to the only node intended to see.

@cgCody

(cgCody) Either way, having some kind of visual feedback on specific nodes sounds like a great idea. :slight_smile:

Thats what I mean. Some kind of visual feedback, which does not contrain us to do some Material Output node acrobatics.

@LoboTommy
Not sure, how you do it. I try to redirect to Material Output inside “My Custom Viewer”. I dont get it responding, it still shows Principled shader.

Not sure, what “Toggle Node Preview” is about in 2.80 shader editor.

Isn’t that for Compositor nodes output only?

It is in 2.80 shader editor, too. I’m not sure, how to use it.

In Composite, this activates little thumbnail view inside composite node or viewer node.

This is what I was describing. Similar to the look dev preview overlay option, but for nodes:
(Of course with the ability to turn it off as well, like overlays)

7 Likes

Wait … I made a misstake. Last setup with dual material outputs actually worked! Using Eevee, update took time. In Cycles, dual material output works like a preview, without the need to touch main material output node.

Didnt knew it works. Its much better then redirecting main material output node inputs.

@cgCody
Looks like composite node backdrop. Something like this, triggered by “Toggle Node Preview”.

Though i like the idea of having previews in shader nodes, there’re some things that might be difficult to solve. In the compositor is a bit easier because we are ‘locked’ in a 2d space, and creating a preview is just a matter of rendering the branch of the nodetree until a certain node in a small scale. This, however, is not so easy in shaders… We could try to draw the preview with the uv coordinates as base, but some textures are 3D or don’t rely in the uv coordinates, and might not work in this approach… In the end will get some previews that are meaningfull, and others that are meaningless… Tough problem. :confused:

You’re right, someone else also pointed this out in a Facebook group. I believe this happens only when a texture coordinate/mapping variations are fed into the procedurals. When that happens 2D preview could be shown with a proper warning (that indicates it might be faulty in 2D). In such case we already have Node Wrangler’s 3D preview feature :upside_down_face:

I visualised the problem like this: Which ‘plane’ will be previewed in 2D? (3D preview is a must in such cases)

I’d assume the XY plane by default, as this is what UV is mapped to. Then either a separate 3D preview like my example, or the ability to change the display object as in the preview window in the materials panel.

1 Like