Is the only way to make a material like this look good, to have 600k+ faces?

i downloaded this rug i feel the only way to get it to look good is with displacement and subsurf modifier. is there a different technique that im unaware of?
i know one option is a particle system but that is defeating the purpose of a detailed mat like this imo.

thanks

you could use a shader based technique as laid out in this thread:

2 Likes

You might want to learn about adaptive subdivision. It’s a feature that subdivides faces more when they are close to the camera and less when they are far away. It can allow very fine displacement in Cycles, with a detail level you couldn’t reach with traditional subdivision.

It’s only available for Cycles though (low poly solutions are more suited in Eevee anyway).

I would recommend using the latest version (Blender 4.5) if possible, because adaptive subdiv was recently reworked in that version and some bugs were fixed.

You first need to switch Cycles to experimental to access it.
experimental

Then, put a subdivision modifier on the object. It needs to be last in the list, as it all happens at render, after everything else has been calculated. There will be a checkbox to switch to adaptive mode. When adaptive is used, the “levels” no longer matter, it’s the new setting “dicing scale” that decides the quality.
dicing

The dicing scale is in pixels. The default of 1 means that every face of the object will be subdivided until it’s 1 pixel wide in the render. 2 means every face will be subdivided until it’s 2 pixels wide, so lower in quality. 1 is fine enough that you can set the material to “displacement only” and get details almost as fine as bump would give you, but with true displacement. If you use “displacement and bump” you might get away with a dicing scale of 3, as the bump helps with finer details.

There is also a new subdivision section that will appear in the main render settings.
main_settings
This is important, because there is a setting there that controls the viewport quality. You can also change the “dicing rate render” and it will act as a quality multiplier for every object in the scene. This can be useful if you change the resolution of the render but don’t want the subdivision to change (it’s pixel-based, so the render resolution affects the quality).

Here is a scene where I render fine detail using purely true displacement, no bump.
adaptive_sub.blend (538.9 KB)

1 Like

What an incredible feature. This reminds me of UE5 Nanite.

Not to be hyberbolic but if this left experimental, this seems pretty game changing?

1 Like

This feature exists in most modern renderers. Cycles is actually lagging a bit behind adopting it.

If you know how to adjust the settings for good performance, you could have an entire scene where the bump is mostly real, with proper shadows and parallax. It’s especially worth it for rock, brick, ground textures and anything that’s deeply bumpy.

It can also be used purely for subdivision, without displacement. Lets’s say you have a camera moving down a long street with a bunch of cars. The closer cars will get more subdivision and the farther ones will get less, with the amounts getting auto-adjusted each frame for the camera’s position. This can save performance if you know to adjust the dicing scale well.

–

Nanite does have a similar result visually and is capable of doing adaptive subdivision+displacement like this.

But in its most common use, it actually works in reverse from this. You feed it the highest detail mesh and it decimates it the farther it gets.

2 Likes

thanks for the informative reply! I’ll try that

1 Like

that’s really cool! Thank you!

1 Like