6
$\begingroup$

After watching several videos on how to make procedural textures I'd like to know if it's worth the effort.

So far the benefits of procedural textures I always hear and read is their infinite resolution like a SVG image, it's not rasterized. The other big advantage is that it's not as memory consuming as image textures and thus Cycles can use the GPU for big scenes again if all textures were procedural generated.

But how about render times? I mean at the render the procedural textures have to be rasterized at some point for proper path tracing if I'm correct.

Does loading the procedural textures increases render times or consume more memory depending of its rasterized scale? (like on an object that is very close to the camera, where a rasterized texture would be like 8192x8192 pixels to show the details)

$\endgroup$

4 Answers 4

4
$\begingroup$

this is a great question!

Procedural textures made in Blender do take quite a hit on a render's speed, as well as the memory that is used. This obviously scales with how complex the texture is, so it's difficult to predict exactly how much the texture will slow it down.

Unfortunately, I don't know the technical details of how procedural textures are computed during a render, so I can't help with that. Maybe someone with more technical experience knows the answer :^)

In general, here are my experiences on the matter. It's normally efficient enough that for general usage you can go ahead and mix noise to your heart's content. If you have very large procedural textures, (let's just go with >100 nodes) it might be worthwhile to use Blender's baking functionality to bake them to images. This would be much more important if you plan on doing animations, because the extra time on a single frame get compounded with every other frame that the animation uses.

So ya, I'd say it's generally good! Just know that you can bake them down to images if you plan on doing an animation or something.

I hope this helps, and good luck!

$\endgroup$
1
  • $\begingroup$ oh yeah when i did my testsfor this post I didnt take huge node setups into account. But generally i had faster results with some P-Materials. $\endgroup$ Apr 26, 2019 at 10:13
4
$\begingroup$

I have spent a couple of days just to test that thing. I have created several procedural metal shaders with scratches and a multi-layered shader. After that I have added a shader based on medium-resolution textures and applied both to the same object in the same scene. The conclusion is simple - procedurals take 3 times longer to render. I am not a very experienced shader builder but it is clear enough that the amount of nodes seriously impairs render times - the more nodes - the slower. Verdict: I recommend using a mixture of real textures and procedural masks. It works much faster.

$\endgroup$
0
$\begingroup$

The procedural textures are mathematical formulas and do not need to be converted to rasterrized Textes to be rendered. This saves a lot of ram

The performance in speed is depending on your hardware. If you have slow VRAM then it would be slower for blender to load huge texture files. This could slow it down in the before rendering phase as it all had to be loaded in.

I tried it on a complex sczene that I did procedurally first and then baked the textures as a 2k image for object to keep it the same as the original one.

$\endgroup$
0
$\begingroup$

It is a matter of resolution of texture or render window, and how procedural textures are put to work. There are probably more cases where a texture stored in a file will perform better in order to avoid operations computed by blender when creating the procedural texture. In the end, a weight x height map will be created and pixels RGB will be combined with material properties for each pixel on the render window. If the procedural operation takes less time than reading a huge 8K file, its a case by case situation. However, procedural textures are convenient. Since they can be made from dynamic inputs (like distance from objects, angles, commands), you can get more complexity on the results.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .