Can procedural materials look realistic, like material textures are?

For example, Ryan King Art makes a lot of nice procedural materials which are a lifesaver, but at times i wonder if they are on a similar level to that of free textures, say like polyhaven or ambientCG

im talking about a realism level here.

thoughts?

That obviously depend on the case. Sometime mixing procedural textures can lead to a natural result easily, for instance maybe some simple concrete material.


This is some work, but probably doable in blender with a result as convincing as this one.

Some other a very hard to do, at least to get this natural feel :

I don’t say it’s impossible, but you need to be very good to get to a similar result, and it doesn’t means that it will be better.

Anyway, it’s likely that making procedural material will take much more time that just manipulating photos.

Photos aren’t perfect either, it’s harder to modify them, they tends to repeat and they don’t have an infinite resolution.

Best is to mix both within a shader. You can have a procedural basis and slap a few image based texture on top of that to add the natural feel.

Or take 2 image based textures and mix them with a noise to broke their pattern a get a more interesting result.

5 Likes

I agree with @sozap - it depends on the material and use case. Things like dirt, concrete, rock, and leather are easy to generate procedurally and get excellent results. What makes proceduralism difficult is randomness, nonconformity, and noise. The more visual “noise” (as in, details that are unique and don’t repeat) you have, the harder it will be to get realistic results. This is why procedural wood can often look fake- real wood is intensely detailed and highly noisy, you need to really study wood and have a specific wood in mind to emulate to get good results

1 Like

That depends on a couple things: skill level and comfort with complex shader node trees, distance from the texture, the kind of texture being replicated (and maybe render engine - Eevee is still missing a LOT of nodes).

Simpler “noisy” textures are easier to reproduce than complex detailed ones so stucco, concrete, orange peels, marble, even some fabrics are reasonable textures to generate procedurally. There are node masters who can do some freakishly amazing, complex things with nodes, and make fairly convincing complex materials procedurally, but that requires serious expertise and patience and is far more work than slapping on a few textures. Making ones that hold up up close is even harder, and there’s a definite limit to how complex procedurals can be until there’s a performance hit and you’re better off baking the texture (not an issue if you planned to bake them anyway and are using the procedurals just for texture generation).

Generally though, no, not really for the average user unless the material is simple. At least not in Blender, substance designer might be better? But I’m not sure about the exact workflow for Designer since I don’t own it, so maybe they’re doing procedural effects on photo based textures too. Which as @sozap said, you can mix procedurals and textures in Blender.

1 Like

I’ll add what I can to the already excellent answers you got.

Your question lacks, in part, precision, because the textures that you download from websites like Polyhaven, ambientCG and whatnot are also procedurally generated, but then baked into an image format.
So, a better way to ask this is: should I texture everything using shaders or should I use texture images (that I create myself or that I download from somewhere)? With which one do I get better/more realistic results?

And the answer to this is: it depends, and mostly you’ll find yourself doing both.

Shaders, which in Blender (or any other engine really) people use to make procedural textures, are fundamentally bits of code that manipulate single pixels. What you do, with them, is fundamentally twisting and manipulating some coordinates to generate a series of maps that you can use to create your material. The main advantage of a map created in such way is that it does not tile like an image texture would. Also, you can do some things, particularly animations and dynamic effects, that would not be done easily or efficiently with image textures.
The disadvantages of shaders for the creation of materials are also many. To say the ones that come to my mind in this moment:

  • shaders, as I have written above, operate on a per pixel basis. This means that some things that are incredibly easy to do if you’re working on an image are plainly impossible to do with shaders, or they require a number of hacks and tricks that would be trivial with an image-based workflow. One banal example: blur. Since a shader operates on a pixel, and not on the whole material, it is not aware of what surrounds each pixel. Thus, blurring is impossible.
  • shaders are calculated at the moment, and thus perform worse than a baked image.
  • shaders are not portable. You have to redo them for each engine. The logic in the end is always the same, but you can’t just move a Blender material to, say, Unreal without effort or baking. (MaterialX might change this)

Now, let’s talk about image textures. The ones you can find on the website you mentioned are also generated procedurally, but in a different manner. Specifically, using the most common and best texturing software there is, Substance Designer. There are also other applications to produce textures (Quixel Mixer, Materialmaker, Substance Painter, etc.). Substance Designer is procedural, but it bakes its final result as an image. Inside it you mostly manipulate the whole canvas using nodes, meaning all kinds of effects are easily possible. You can also make a material generated there procedural by exposing any value, and then you can export the material as a Substance archive, to be used procedurally in every engine (Blender included, using their relative addon).
The advantage of this is clear: you can create very sophisticated and detailed materials in a fast and iterative way, manipulating whole textures as opposed to single pixels. The results you produce, being baked, can be used anywhere, and they will be tiling correctly.
The disadvantage is that, being the material baked, it is necessarily tiling. Such tilingness must be accounted for when generating the material. A common workflow is to apply a material using Substance Painter, which is quite good at providing tools and techniques to conceal it. But, of course, a lot of the lifting will be done by the shader you “feed” these images to…

which brings us to the final part of my answer: in reality, you cannot give up shaders, even if you won’t use them for generating the various maps. In fact, those image textures will still be fed to a shader! And setting the shader up properly is fundamental, for both hiding the tilingness, adding and mixing extra noises and materials, and, most importantly, to emulate the physical properties of a material.

Let me give you an example: recently for a customer I worked on a silk material. In the end, to make things short, the project was changed, so I can share here some things. So, first I created the cloth on Substance Designer. This is the material I have ended up creating using Substance Designer (screenshot from Substance):


Not realistic, right? The things is, all the textures I needed are generated correctly, but it’s not enough. I need a proper shader to simulate with absolute realism the cloth. Let me show you a test render I’ve made with Blender. It uses those exact same textures, but they are now being fed to a properly set up shader:

The render was done as a very quick demo for my own tests, but, as you can see, now realism has been achieved. By using a properly set up shader, I was able to imitate the properties of the cloth in a precise way.

So, what is the conclusion? Well, if you want to achieve “realism”, you have to use both. Actually, you have no choice: in any case you will use shaders. But, depending on the use case, I do think that image textures allow for an amount of details (and manipulation power if you generate them yourself) that would be not easily achievable if you were generating those very same maps using shaders. And Blender is going in this direction too, after years of ignoring texturing, as from what I have heard one day Texture Nodes should become a thing.

3 Likes

so finer details are best left to photo textures and rest can be done with regular ones, procedural or images?

This is not always true, Polyheaven uses a lot of photo textures done using photogrametry.

It depends on the pattern your’re trying to recreate. You should definitively try for yourself and see what works better.

2 Likes

Totally right, of course, I should have mentioned it too!

I would love to be able to use more procedural materials, but there’s a simple reason I usually try to avoid them, The viewport material preview mode HATES them. Sometimes they make it even impossible to navigate a scene depending on the extension of the material and the complexity of the node tree.

That’s a problem I don’t have when using textures.

I made this small scene where the stone is procedural. The node tree is not complex, but I simply am not able to navigate the scene when the material is activated.

The node tree:

2 Likes