Description

Static Meshes that draw into RVTs and have "Draw In Main Pass" is set to "From Virtual Texture" (ERuntimeVirtualTextureMainPassType::Exclusive) will still draw in Occlusion Queries.

This can be traced to `FStaticMeshSceneProxy::CanBeOccluded()`, which uses the function "FPrimitiveSceneProxy::IsRuntimeVirtualTextureOnly()" to check if the primitive should only render in RVTs.

This function only considers `ERuntimeVirtualTextureMainPassType::Never` (via `bVirtualTextureMainPassDrawNever`), unlike the similar function `FPrimitiveSceneProxy::DrawInRuntimeVirtualTextureOnly(…)`, which is used for other passes (BasePass, ShadowDepths, etc).

This issue might be shared with "FLandscapeComponentSceneProxy::CanBeOccluded()" as well.

Steps to Reproduce

1. Download the Licensee's test project and open (see addl info URL)

2. Open the map "/Game/TestScene"

3. Observe the three meshes:

  • "Cube", which does not write into RVTs
  • "RVTWrite" with does write into RVTs, and "Draw In Main Pass" is set to "From Virtual Texture" (ERuntimeVirtualTextureMainPassType::Exclusive)
  • "Occluder", which occludes both

4. Take a RenderDoc or other graphics capture.

5. In the capture, navigate to the HZB pass, with BeginOcclusionTests. Find the draw event under "Grouped Queries"

6. Using the "Highlight Drawcall" overlay (or equivalent), observe that both the "Cube" and "RVTWrite" are rendering in the pass.

7. Back in the editor, move the camera and use Unlit mode to view where "RVTWrite" should be

8. Observe that it correctly does not appear in the main view.

Have Comments or More Details?

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

0
Login to Vote

Unresolved
Affects Versions5.75.7.3
CreatedFeb 20, 2026
UpdatedFeb 20, 2026
View Jira Issue