Description

AActor::WasRecentlyRendered() and UPrimitiveComponent::GetLastRenderTimeOnScreen() both still trigger when a skeletal mesh (occluded behind a wall) re-enters the player's view frustum after being outside of it.
Both these functions seem to not trigger as expected when the occluded object is within the view frustum for a while or outside of it, so it seems that something that only happens when it re-enters the view.

Steps to Reproduce

1. Create an empty project in 5.4 or 5.5.
2. Add "TestCullingObject.h" and "TestCullingObject.cpp" provided by the licensee to the project (see addl info URL).
3. Create a BP character using this class, set a skeletal mesh, and place it behind a wall in such a way that it should be occluded from the player.
4. The character should print to the output log how long since the last time it was rendered.
5. Turn on "r.VisualizeOccludedPrimitives 1" so you can see that where the occluded character is.
6. Turn the camera so that the occluded character is outside of the view. Then turn the camera back towards the character.
7. Note that the last render time starts up for a short while despite the character still being occluded.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-232145 in the post.

1
Login to Vote

Backlogged
ComponentUE - Rendering Architecture
Affects Versions5.4
Target Fix5.6
CreatedDec 4, 2024
UpdatedDec 5, 2024
View Jira Issue