This is a vast and complex subject, but it is particularly relevant to modellers of large hard-surface projects. Time and time again, I have come up against a problem where the project gets so complex that it gradually becomes too slow to manipulate the drawing in its entirety. Sometimes it is caused by bad modelling – I am shocked today at some of the horribly inefficient models I have made in the past! But often, the problem is caused by using Procedural Materials instead of Texture-Based materials. While Procedural materials might be much easier and quicker to apply to the model, texture-based materials consume less processing power. They, therefore, are more easily manipulated in the Material Preview viewport. Image-based Materials also render faster. A complex procedural Material (see the node setup below) can consume a large amount of CPU and GPU time compared to an object with a few texture images attached.
What is a Material?
A material is the information that tells the renderer how to display an object. It can consist of many things:
- A set of image textures (bitmaps like photographs)
- Procedural textures (artificially generated)
- Shaders (instructions to the renderer)
- Surface properties like reflectivity, roughness, bumpiness etc.
Materials are assigned to objects on a face-by face basis – there can me many materials on a single object but only one per face..
What is the difference between Procedural and Texture Materials?
Image-based texture materials are images that are overlaid on a model. Since the model is 3D, but an image is 2D, it requires a “map” representing what a model would look like if it were made of paper and laid out flat. It’s the same concept as paper folding and Origami. This “laid-out-flat-map” is called a UVW map, and every object in Blender needs one if a texture is to be mapped to an object.
Unlike image-based textures, where you create and load one or more matching images as a texture, procedural textures are created in software with a pre-programmed set of instructions to create that appearance. In its simplest incarnation, Procedural textures blanket the face with the pattern. These procedural textures can be very realistic or can become very complex. They do not need a UVW Map. The parameters to control the appearance can usually be set in one or more panels (called Nodes) within the Shader Editor:
A more complex procedural node texture setup simulates a water-stained surface with worn away edges:
So, to sum it up, there are pros and cons:
- Simple Procedural Textures can often be set up very quickly.
- Complex Procedural Textures can often take hours or even days to set up just right.
- Procedural Textures usually render slower than their Image-based counterparts and can considerably slow down the Material Preview Viewport.
- The output resolution of Procedural Textures is determined by the render resolution
- Image-based Textures require you to create a UVW map which can be time-consuming if your object is a complex one.
- Image-based Textures usually render faster than their procedural-based counterparts and can have less of a slow-down effect in the Material Preview Viewport.
- The output resolution of Image-based Textures is determined by the resolution of the image used.
Some texture effects are impossible to achieve with Procedural Textures, while Image-based Textures can produce just about anything, but it might take a long time to accomplish some of those effects.
Is there a way around the Performance Penalty of Procedural Textures?
Yes, but it costs time. You can create a Procedural Texture and convert it to an image-based texture. This is a process called Baking.