Incorrect cryptomatte issue

Hi,

We have a very heavy scene with lots of foliage that we’re trying to render crypto pass for. Back in 5.6, we’ve constantly been hitting the nanite cluster limit (even after maxing out the value using cvars) so parts of the scene would get culled randomly if too much geo was visible through the camera at the same time. That wasn’t a big issue at the time as we were rendering with pathtracer which doesn’t suffer from this culling. It was however, as soon as we tried rendering additional render passes like crypto. After some testing, we eventually decided to transition to 5.7 which enabled us to use the nanite foliage voxelization and therefore bypass this cluster limit. But even though the results were much better, we still ran into issues from time to time.

[Image Removed]

[Image Removed]

The crypto passes above were rendered using different MRG configs and both suffer from visual artifacts. First has its data completely scrambled and the second has heavy voxelization even on foliage close to camera.

[Image Removed]

When testing, we once accidentally left the ShowFlag.HitProxies set to 1 before rendering and to our surprise, it fixed the crypto pass in the exr render (see image above, we used exactly the same configs as with the incorrect results). So my question is, whether you have an explanation as to why that happens and whether you could suggest a reliable fix instead of this workaround.

Thank you.

Steps to Reproduce
Described above

Just a small finding that’s related to the issue.. whenever we set ShowFlag.HitProxies to 1, all grooms (strands) go missing in the cryptomatte.

Hello,

Apologies for the delay. This issue looks like Nanite is running into memory limitations or some other limit. The logs for these renders should contain more information and likely warnings, like the cluster limit warnings you mentioned. Can you attach the log?

When testing, we once accidentally left the ShowFlag.HitProxies set to 1 before rendering and to our surprise, it fixed the crypto pass in the exr render Just a small finding that’s related to the issue.. whenever we set ShowFlag.HitProxies to 1, all grooms (strands) go missing in the cryptomatte.

It’s unclear why this would have an effect. There are a few code paths in the renderer that change when HitProxies are displayed - one of those is that no scene captures are updated before the main renderer.