I've been working on an animation project for months now, that started in Blender 2.8. The animation includes one photo-real character that I am using a Displacement Map workflow for pores and small skin detail, rather than normal + roughness maps. Basically a Film Res character.
I have 6 subdivision levels I'm working with in Zbrush, and load the lowest into Blender to work on the animation, and then rely on Adaptive Subdivision to tesselate the model throughout the animation depending on the camera's location. Far away, I do not need all that pore detail as geometry, but in close-ups it definitely makes a difference.
This has caused me an unreasonable amount of trouble shooting time, especially after upgrading to Blender 2.9+. Adaptive Subdiv being active makes my scene impossible to render (it of course took me a long time to determine that as the absolute cause). As you will see in the images below, there is no reason Adaptive Subdiv should be eating up over 100% of my RTX 2070 Super's 8GB VRAM, yet it does.
In the images below, I have a fresh scene, where I've only loaded my character's body, adjusted render settings to be more efficient, and then fiddled with the subdivision modifier / render settings. I am using the wireframe node on a base material to visualize the tessellation.
First is Adaptive Subdiv working in 2.83 (though the Max Subdiv render setting does nothing).
Next are images of successful renders using normal Subdivision in Blender 2.92. Here you can see the tessellation working as expected, and reasonable memory usage as the polygon count increases.
The last three images are failed renders using Adaptive Subdivision in Blender 2.92. Regardless of settings configuration, the renders fail with an Optix error. CUDA renders take unreasonably long to build the BVH and often also fail. The memory usage is dramatically more than the normal Subdiv Modifier, even if tessellation should be the same or less.
If anyone has any information that may help, I would really appreciate it. The project is basically done and I'd like to avoid having to version everything down to 2.8 to complete it. Don't even know if that would work.
Thank you in advance!
Error:
bpy.context.space_data.context = 'RENDER'
Failed to build OptiX acceleration structure
OPTIX_ERROR_INVALID_VALUE in optixAccelBuild(context, NULL, &options, &build_input, 1, temp_mem.device_pointer, sizes.tempSizeInBytes, out_data.device_pointer, sizes.outputSizeInBytes, &out_handle, background ? &compacted_size_prop : NULL, background ? 1 : 0) (device_optix.cpp:1208)