GPU performance: find the bottleneck
Test a specific cause: pixels, geometry, draw submission or first-use material work.
Fix the conditions first
Record rendering method, resolution, device, build configuration and a reproducible gameplay segment. Keep camera and content comparable. FPS caps and VSync can hide cost differences behind identical FPS; examine frame time too.
The CPU prepares frames and commands; the GPU executes work. Fewer entities do not guarantee lower pixel cost, and smaller textures do not automatically fix expensive gameplay logic. One FPS number cannot identify the limiting part.
One experiment, one cause
| Change in a test-scene copy | What it probes | What it does not establish |
|---|---|---|
| Reduce 3D viewport size with the same camera | Pixel count and screen-effect dependence | An exclusively GPU-bound problem |
| Temporarily remove transparent layers | Overdraw, blending and sorting | That all transparency is unacceptable |
| Simplify geometry without changing material | Geometry and vertex-shader work | Free textures or fragment shading |
| Group identical separate objects | Repeated-geometry preparation and submission | That a large MultiMesh always wins |
| Repeat the first material appearance | Cold versus repeat behavior | Every variant ready on another device |
Inspect the resulting image after each change. A missing effect or culled school is not a valid optimization of the original result.
Repeated-geometry example
The runnable school renders 2048 instances without 2048 entities. VisibleInstanceCount=0 hides the geometry, and a positive value draws a prefix. These are behavior checks rather than a comparative speed measurement.
MultiMesh reduces separate objects but retains vertex and visible-pixel work. Materials, shadow passes, views and surfaces may require additional submissions. Instancing alone does not mean exactly one draw call for an entire game.
Measure the right thing
Use separate measurements for detailed C# CPU work. CPU elapsed time is not a GPU timer. GPU timing needs a suitable tool and support from the chosen graphics API. One desktop card does not certify phones, Web or minimum-spec machines.