GPU检测
基于3D渲染基准测试分数对GPU进行分类,使开发人员能够为图形密集型应用程序提供合理的默认设置。可以将其视为GPU的用户代理检测,但功能更强大。
演示
安装
默认情况下,我们使用UNPKG CDN托管基准数据。如果您想自己提供基准数据,请从benchmarks.tar.gz下载所需的基准测试数据,并从公共目录提供服务。
确保已安装Node.js。
$ npm install detect-gpu
使用
import { getGPUTier } from 'detect-gpu';
(async () => {
const gpuTier = await getGPUTier();
// 示例输出:
// {
// "tier": 1,
// "isMobile": false,
// "type": "BENCHMARK",
// "fps": 21,
// "gpu": "intel iris graphics 6100"
// }
})();
detect-gpu
使用渲染基准测试分数(帧率,按分辨率归一化)来确定应分配给用户GPU的等级。如果无法创建WebGLContext
,GPU被列入黑名单或GPU报告渲染帧率低于15 fps
,则分配tier: 0
。此时应提供一个非WebGL体验的备选方案。
根据报告的fps
,GPU被分类为tier: 1 (>= 15 fps)
、tier: 2 (>= 30 fps)
或tier: 3 (>= 60 fps)
。等级越高,您可以为用户提供的图形密集型工作负载就越多。
API
getGPUTier({
/**
* 托管基准数据的目录URL。
*
* @default https://unpkg.com/detect-gpu@{version}/dist/benchmarks
*/
benchmarksURL?: string;
/**
* 可选择传入WebGL上下文,以避免在内部创建临时上下文。
*/
glContext?: WebGLRenderingContext | WebGL2RenderingContext;
/**
* 如果系统性能低或没有可用的硬件GPU,是否失败。
*
* @default false
*/
failIfMajorPerformanceCaveat?: boolean;
/**
* 移动设备的每个等级的帧率。
*
* @defaultValue [0, 15, 30, 60]
*/
mobileTiers?: number[];
/**
* 桌面设备的每个等级的帧率。
*
* @defaultValue [0, 15, 30, 60]
*/
desktopTiers?: number[];
/**
* 可选择覆盖特定参数。主要用于测试。
*/
override?: {
renderer?: string;
/**
* 覆盖设备是否为iPad。
*/
isIpad?: boolean;
/**
* 覆盖设备是否为移动设备。
*/
isMobile?: boolean;
/**
* 覆盖设备屏幕大小。
*/
screenSize?: { width: number; height: number };
/**
* 覆盖基准数据的加载方式
*/
loadBenchmarks?: (file: string) => Promise<ModelEntry[]>;
};
})
支持
我们特别注意确保所有支持WebGL
的浏览器也受detect-gpu
支持,包括IE 11
。
更新日志
许可证
我的工作基于MIT许可证发布。
detect-gpu
使用来自https://gfxbench.com的移动和桌面基准测试分数。