1. A gaming index, not a synthetic score
Every part gets a relative gaming index. Processors are measured against the Ryzen 7 9800X3D (= 100) at 1080p with a graphics card fast enough not to limit them; graphics cards against the RTX 5090 (= 100) in native raster rendering. The index is read from the catalogue; a part without one falls back to a calibrated table, and only as a last resort to an estimate derived from PassMark scores.
Synthetic scores are not used directly because they order parts wrongly for games: G3DMark places the RTX 5080 above the RTX 4090, and PassMark places the Core Ultra 9 285K above the Ryzen 7 9800X3D.
The 0–100 figure printed on comparison pages is a normalised form of this index. It is a position on the model's scale, not a market segment: a card well below the top of the scale can still be a high-end product.
2. Two ceilings per game
For each of the 11 profiled games the model computes two frame rates: what the processor can sustain with an unlimited graphics card, and what the graphics card can sustain with an unlimited processor. The delivered frame rate is the lower of the two, corrected for system memory capacity.
CpuLimit = cpuRefFps × (CpuIndex / 100)^cpuIndexExponent × ThreadScaling × MemoryFactorGpuLimit = gpuRefFps × (GpuIndex / 100)^gpuIndexExponent × ResolutionFactor × VramFactorFPS = min(CpuLimit, GpuLimit) × RamCapacityFactorcpuRefFps, gpuRefFps and both exponents are fitted per game against published benchmarks (section 9). ThreadScaling redistributes the index by core count for each kind of game. MemoryFactor covers memory speed, generation and channel count and acts only on the processor's ceiling: in this model a single channel multiplies it by 0.75, which changes the delivered frame rate only where the processor is the limit.
3. Resolution, video memory and system memory
PixelRatio = (width × height) / (1920 × 1080)ResolutionFactor = 1 / (fixed + (1 − fixed) × PixelRatio^exponent)Part of a frame's GPU time does not depend on the pixel count: command submission, geometry, shadow maps at fixed sizes. "fixed" is that share for each game and the exponent describes how the rest scales. Without the fixed part, esports titles — CPU-bound at almost every measured point — would scale so shallowly that an RTX 5090 would hold absurd frame rates at 8K.
Each game has a video-memory working set at 1080p that grows with the pixel count. When a card falls short, only the shortfall that appears above 1080p is charged, because the 1080p index already includes whatever a small card loses there.
System memory below a game's target costs a paging penalty: small between the publisher's minimum and the target, larger below the minimum. Capacity above the target adds nothing, which is why 32 GB and 64 GB give the same frame rates here.
Upscaling and frame generation are optional in the calculator. Upscaling lowers the rendered pixel ratio and so raises only the graphics card's ceiling; frame generation is modelled by the cost of each generated frame and is excluded from the refresh-target analysis. Comparison pages and the published accuracy figure use neither.
4. The verdict, the percentage and the buying advice
The verdict compares both ceilings across the game set, weighting each game by its relevance at the chosen resolution. The model solves which graphics index would balance this processor and which processor index would balance this card, both limited to what the market sells.
The percentage is the share of frame rate a realistic change would recover: a faster graphics card, a faster processor, or — when the processor is already the fastest sold — a higher resolution, which spends the idle capacity on image quality rather than frames. When nothing on the market would help, it is 0%, which is why a flagship 4K build reads as balanced although its graphics card is fully loaded.
Below 15% the imbalance is described as normal. The load bars are each part's estimated share of its own ceiling, not measured utilisation.
Comparison pages only name a part to buy if, in the same pairing, it is fully fed and adds at least 25% more frames (graphics card) or 10% (processor). Otherwise the page says that no part in the catalogue clears that bar — which is not the same as saying the build cannot be improved.
5. Game-Specific Calibrations
Different game engines stress hardware in vastly different ways. Our FPS model integrates game category definitions containing distinct performance targets:
- ●AAA Titles (e.g., Cyberpunk 2077, Alan Wake 2): Heavy graphics pipeline demands. Programmed with an ideal ratio favoring high GPU performance. Rendering limits are highly sensitive to VRAM throughput.
- ●Esports/Competitive (e.g., Counter-Strike 2, Valorant): Low rendering demands, extremely high frame-rate targets. Programmed with a CPU-biased ratio where single-thread clock speed and L3 cache size determine maximum achievable frame rates.
- ●Hybrid Competitive (e.g., Call of Duty: Warzone): Highly CPU-bound for player tracking and network updates, but demands high memory bandwidth and VRAM for massive multiplayer maps.
Engine version 2026.08 · model and text last revised 2026-09-11 · hardware catalogue 2026-08-19. Calibrated against frame rates published by review outlets.
6. The two-ceiling model
Every game is described by two independent ceilings: the frame rate the CPU alone can sustain, and the frame rate the GPU alone can sustain. Actual FPS is the lower of the two.
This is not an implementation detail; it is what stops the tool contradicting itself. The bottleneck verdict and the per-game FPS chart are derived from those same two numbers, so the headline cannot say CPU bottleneck while the chart shows a GPU-limited system. Many calculators in this space compute the two separately and end up asserting opposites on one screen.
The utilization shown in the result comes from the same place: the component setting the frame rate runs at 100%, and the other delivers exactly the fraction the pipeline allows. That is why at 4K on a flagship card the GPU shows pinned and the CPU idle, while the buying advice is still to change nothing - there is no faster GPU to buy.
7. Measured error, not claimed error
The engine is checked against 69 builds with frame rates measured and published by third parties, using five-fold cross-validation: for each group the engine is recalibrated on the other four only, then predicts the group it has not seen.
The result and its limits are published on the accuracy page, with the breakdown by game and by resolution. It is an internal validation and probably optimistic: the starting values of every refit were obtained from all the references, and there is no frozen external set yet.
8. What this model does not do
- ●Comparison pages and the accuracy figure are native resolution. Upscaling (DLSS, FSR, XeSS) and frame generation are modelled options in the calculator, but their error has not been validated.
- ●It does not model ray tracing. Turning it on shifts the load split and can invert the verdict in some titles.
- ●It estimates averages, not 1% lows. Stutter depends on factors a static model cannot capture.
- ●It does not cover laptops. The same GPU varies by around 30% depending on the power the chassis allows.
- ●It does not model cooling, motherboard quality, or custom power limits.
- ●The 11 profiled games are a sample, not the Steam catalogue. An atypical engine can deviate further.
These limits are published because an estimate whose scope is not stated cannot be verified, and a tool that cannot be verified does not deserve trust.
9. Reproducibility
Shared coefficients and per-game values are fitted by a deterministic procedure against the measured references, then copied into the code by hand. That manual step is deliberate: it forces every number to stay reviewable in the history rather than appearing by generation.
The fit is regularised toward physically reasoned values, so a parameter the references identify weakly stays where physics puts it and moves only when the data demand it. Without that, the fit would find values that improve the references by a tenth of a point and generalise badly everywhere else.