Unexpectedly High VPC (Viewport Culling) Discard Rate (~80%) Even When All Geometry Is Fully Inside the Viewport

I am analyzing my vulkan graphic engine with a test case using Nsight Graphics GPU Trace (NSight Graphics 2025.5.0, Windows 11, RTX 4070-12G) , and I am seeing something that does not match my expectations of the GPU pipeline.

My scenario:

  • The entire scene is fully visible in the camera view.

  • All triangles are clearly inside the viewport after projection.

  • The geometry occupies only a region near the center of the screen.

  • No triangles appear to cross the viewport boundary.

  • However, Nsight reports VPC Discard Rate ≈ 80%.

This happens regardless of camera orientation:

  • Looking at the front of the object → ~80% VPC discard

  • Looking at the back of the object → still ~80% VPC discard

This suggests the discard rate is not simply caused by backface culling.

My questions:

1. Does the VPC stage include backface culling on NVIDIA hardware?

API-level documentation (DX/Vulkan/OpenGL) usually describes backface culling as part of the “rasterization stage”, but the NVIDIA technical blog says:

“VPC (Viewport Culling) does the viewport transform, frustum culling, and perspective correction of attributes.”

This implies VPC is the primitive‑level culling unit.
If so, does VPC also perform backface culling?

2. Even if backface culling is included, why is the discard rate as high as 80%?

Backface culling alone should account for roughly 50% of triangles in a closed mesh.
But I am consistently seeing ~80%, even when:

  • The camera is positioned so that almost all visible triangles are front‑facing

  • The scene is small and centered

  • No geometry appears clipped by the viewport

This suggests additional discard sources beyond backface culling.

3. Does VPC count “partial clipping” as a discard?

For example:

  • If a triangle has one vertex slightly outside NDC or guardband

  • The hardware clips the triangle and generates new primitives

  • Does Nsight count the original triangle as “discarded” in VPC statistics?

If yes, this could explain why VPC discard rate is much higher than expected, even when the final rasterized geometry is fully inside the viewport.

Summary of the issue:

Even in a very small scene where all triangles appear fully inside the viewport, Nsight reports ~80% VPC discard rate, which seems too high to be explained by backface culling alone.

I would like clarification on:

  • What operations are included in VPC discard statistics

  • Whether partial clipping counts as discard

  • Whether backface culling is performed in VPC

  • Why VPC discard can remain ~80% even when the camera orientation changes

Any official explanation of how VPC discard rate is computed on NVIDIA hardware would be greatly appreciated.

Hi @tyxxyhm,

Let us focus on the issue of the ~80% VPC discard rate. Could you please share your trace file with us so that we can perform an internal check to investigate the high value?

Thanks
An

Yes,I have another scene capture, attached as the link below. This scene is about 70% VPC but it is also representativeness.

Go to Trace Analysis, see EarlyZ or OpaquePass,In Range>All>Culling Rates, we see Culling Rate VPC [%] as high as 70.9%.

the scene is small as following, and all are inside view frustum.

Hi @tyxxyhm,

Thanks for sharing the file. I have received them and will review them with our internal engineering team.

I will follow up once we have more information.

Thanks
An

Hi, @AYan, Have you get some progress on the issuse?