Skip to content
Discussion options

You must be logged in to vote

Based on production data from 45-r3f-performance/ and 02-mobile/:

Recommended: adaptive DPR via detect-gpu + thermal headroom

import { getGPUTier } from 'detect-gpu';
const tier = await getGPUTier();
const dpr = tier.tier >= 3 ? Math.min(devicePixelRatio, 2.0)
          : tier.tier === 2 ? 1.5
          : 1.0;
renderer.setPixelRatio(dpr);

For 3D-heavy scenes, 1.5x is the sweet spot even on top-tier mobile — the GPU savings from 1.5x vs 2.0x is roughly 1.77x fewer pixels, which directly translates to thermal headroom for sustained 60fps.

Hard cap: never exceed 2.0 (per Three.js convention). The diminishing visual returns above 2.0 are not worth the GPU cost.

Replies: 1 comment

Comment options

zakky8
Jun 1, 2026
Maintainer Author

You must be logged in to vote
0 replies
Answer selected by zakky8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
1 participant