Foliage Missing from High Resolution Screenshot if Instance Count is Over 1.5k

Repro steps:

  1. Create a new project (c++ project in my case, but not sure if that makes a difference).
  2. Create an empty map and add a landscape.
  3. Use the foliage tool to paint on at least 1.5k instances of a single mesh. It shouldn’t matter which mesh you use. I’m just using the bush from the starter content.
  4. Use the HRSST to take a screenshot.
  5. You should see in the resulting shot that the foliage is missing.

This doesn’t affect game play at all, so far as I can tell. It just affects the HRSS. If you drop the instance count below 1.5k then the foliage will show up again in the HRSS.

I’m running Windows 10 with an Intel Core i7 and a GeForce GTX 1060. My version of Unreal is 4.17.1. One of my colleagues was able to replicate the issue as well, so I don’t think this is specific to my machine.

Here is what the foliage looks like in the game:

Here is the resulting HRSS after typing “HighResShot 2” into the console:

Thank you!

I too am having the same issue, although my project is blueprints, so it applies to both.

It is also happening with the landscape grass tool, not just painted.

Hello ,

Thank you for submitting a bug report. I have reproduced this issue and logged a report for it here

You can track the report’s status as the issue is reviewed by our development staff. Please be aware that this issue may not be prioritized or fixed soon.

Cheers!

I can add to this, that it’s not specific to the foliage tool. I get the exact same behavior with large HISMCs so the problem is further down the chain.

I programmatically added about 10k instances of a grass mesh into an HISMC from a procedural generation routine I have and got the exact same behavior. The other HISMCs in the scene with a few hundred instances each appear to still function fine.

I too am having the same issue. I can understand why it happens. There is a slight delay drawing that much foliage even when I play the game in PIE. I’m guessing, although I could be wrong, that when a HRSS is taken, an instance of the level is created and a single frame rendered. My foliage wouldn’t have been drawn by then. Interestingly, it is not the total foliage count that seems to cause this issue, it seems to happen when an individual foliage type reaches this threshold. HRSS work fine for me when I have 40+ foliage types visible and under 1.5k each.

I appreciate this will not be high on the priorities list but with Epic pushing into the real-time VFX area, a delay in displaying the foliage draw call for high fidelity scenes featuring foliage will have to be looked into at some point. For now, I have been able to get around it by creating multiple foliage types of an instanced mesh.

BTW, this is not a complaint, I am loving how much detail I can add to my large open worlds and small micro scenes alike. Thanks Epic :slight_smile:

Not sure if there are a lot of us out there, but I depend on high res shot to deliver images to clients in the archviz world. this bug kills my deliverable. any workarounds? or estimated fix date so i can at least plan accordingly?

[EDIT] Long story short, was just introduced to Ansel from NVidia. Allows for super high res shots with all foliage and HISMC’s.

Hi guys, same problem for me but happening in the editor directly even before I would make any screenshot.

I have a similar problem after updating project 4.16 → 4.17. The foliage meshes become invisible, only shadows rendered.

I have the problem from 4.16->4.17.1 / Looks like the limit is 1.5k of any instance.

Some workarounds are using shot instead of highresshot, using ansel or another screen shot service. None of these are really workarounds though unfortunately.

Does anyone know any workarounds to this yet or where the underlying issue might be? It’s super critical to be able to take screenshots for some folks and we’d love to get this fixed before 4.19

I decided to take a look into this myself since it didn’t look like Epic would be able to get to it until 4.19. I will preface this with I’ve never really gone digging in the rendering side of the engine beyond the RHI stuff necessary to support my RMC plugin, so I may be slightly wrong on some of this, but I’m pretty certain on the problem.

For those of you who badly need this fixed, you can build the engine from source and apply this tiny fix to the engine. Let me know if you see any unexpected side effects from this.

The pull request for this fix is here: https://github.com/EpicGames/UnrealEngine/pull/4021

The git diff isn’t easy to read for those not familiar with looking at them, basically the if(!View.bIgnoreExistingQueries) needs to be removed.

The problem boils down to subprimitive occlusion culling, which caused it to stop rendering in basepass, even though it rendered in depth prepass and shadow depths. The specific number it broke on is actually 1536 as this is where the HISMC splits its internal tree and kicks in subprimitive occlusion culling. The problem only shows up in one very specific case which is when View.bIgnoreExistingQueries == true. This appears to only be able to be possible during a HighResShot, or something like camera cuts, rapid camera movement, or time resets.

The change that appears to have broken this was: 70d3bd4b726884ccd6fe348fa45f11252aa99e04
More specifically it appears to have been caused by the fix for UE-42952 judging by the comments ( Unreal Engine Issues and Bug Tracker (UE-42952) )

I downloaded the original bug reproduction project on bug UE-42952’s AH post and tested it myself in UE4.16, 4.17 and the above commit on master and found that I could reproduce it in 4.16 (prior to the fix applied for UE-42952) but could not reproduce it on the above commit on master 4.19 + this fix so I do not believe this regressed that bugfix.

This fix was last tested successfully on: 9c9f1352cb0ec696e75bac83808f7764c24fa662

I can confirm that it also happens when you render a sequence with camera cuts; the foliage just disappears plus some strong aliasing appear. Deleting the Camera Cut track in Sequencer seems to fix that problem.

Was this with or without the above fix? I’m assuming without, but if you’re able would be interested to know if this fixed it, but that would require compiling the engine from source.

Hi

A fix for this bug was officially submitted in 4.17.2.

Hello Michel,

I was just wondering if this was from the PR I submitted Friday. I decided to investigate it myself based on the update to the tracker a few days ago about the target fix moving to 4.19.

Thanks!

Nope, there was a bad merge that produce a few errors, like this one, but the bug was fixed as part of not being able to select instance when you have more than 1536 due to occlusion culling bug that is triggered when you have enough instance (i.e 1536 in this case). Which happen to be the same problem with the screenshot thing.

This issue also occurs in 4.18 for me, but using scene capture components. Please see this video GrassCaptureProblem - YouTube

As you can see, the portal scene capture target has a portion of the grass but not close to all of it.

Hello ,

I was unable to reproduce the issue you are experiencing. Are you able to reproduce your issue in a clean project? If so, could you provide a detailed list of steps so that I can reproduce this issue on our end?

Thanks!

I will try and get back to you, thanks