Cycles + Displacement = out of memory

I’ve been testing some displacement in Cycles recently, it works well until the moment I want to render my scene.
One single very low poly object (42 faces) + adaptative subdivs (becomes 4K faces) + displacement will always run out of memory.
I can’t even render one single object, and I have 32gb memory.
The specs I’m giving seem fairly low but still cycles on my computer can’t handle it.

I think there’s room for improvement there, unless there’s something I do really wrong?

EDIT: Just realized that Blender was computing all objects in my scene while they were hidden, they weren’t excluded from render. But anyway, they aren’t even in the frame, why are they computed.

And 9 objects with displacement can’t be handled, that’s the thing. Does it sound like a lot? How do you make a scene with multiple objects using displacement?

1 Like

because cycles uses pathtracing and every single object outside of camera view can influence the picture

try reducing subdivision level in the render settings

Are you rendering with GPU or CPU?

Hey thanks for the reply.
Yeah that makes sense, I tried with both, same result. My gpu sucks tho.

Do you use adaptive subdivision? There was a bug where the normal subdiv was applied on top of Adaptive Subdiv in 2.8, make sure to set your normal subdiv to 0.

Yeah, as specified in OP I’m using adaptative subdivs. How do you set normal subdiv to 0?

It’s the Levels value in the modifier.

It looks like the UI has been changed since, now the subdivision levels are always visible. Before the value was hidden when you checked Adaptive Subdivision, but was still applied.

Is this solution related ?

I’ve also had this issue before, it’s actually a bit of a flaw in ray tracing renderers. Some renderers tackle this issue by using the REYES pipeline, however that sort of architecture isn’t really smoothly compatible with Cycles. Adaptive subdivision is meant to mimic an aspect of REYES, but unfortunately
it still over tessellates things and is still in an experimental state. It also doesn’t occlude objects outside the camera view, since this could lead to various consequences with Cycles. In general REYES is not really suited to path tracing because path tracing requires pretty much all the geometry in the scene to work.

This is bit sneaky to advertise my work, but I’ve been developing an addon that uses ‘shader based displacement’ so to say instead of tessellation based displacement. It’s effectively like relief/parallax mapping that you see in game engines. The main point is that it produces accurate silhouettes, which replicates true displaced geometry quite nicely. There’s almost no memory overhead for it to work other than the displacement texture itself. It has its pitfalls, but I’d really like to get it to a productionish ready standard soon.

It’s in early days right now, but I have some promising features in R&D and I’m trying my best to develop it on top of university work. I made a thread here for more info:

1 Like