var canvas = document.createElement('canvas'); | |
var gl; | |
var debugInfo; | |
var vendor; | |
var renderer; | |
try { | |
gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl'); | |
} catch (e) { | |
} | |
if (gl) { | |
debugInfo = gl.getExtension('WEBGL_debug_renderer_info'); | |
vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL); | |
renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL); | |
} | |
// Sample output: | |
// | |
// » console.log(renderer); | |
// ATI Technologies Inc. AMD Radeon R9 M370X OpenGL Engine |
If can be usefull to anyone:
changing line https://gist.github.com/cvan/042b2448fcecefafbb6a91469484cdf8#file-webgl-detect-gpu-js-L8
to
gl = canvas.getContext('webgl', { powerPreference: "high-performance" }) || canvas.getContext('experimental-webgl', { powerPreference: "high-performance" });
allow you to create the canvas using the -if any- high performance GPU
Hey, thanks for putting this up! It really helped me.
Just wonder what the console output in M1, can anyone tell me?
The above script with M1:
{
debugInfo: {
UNMASKED_RENDERER_WEBGL: 37446,
UNMASKED_VENDOR_WEBGL: 37445
},
renderer: "Apple M1",
vendor: "Apple"
}
Or using https://github.com/pmndrs/detect-gpu
{
"gpu": "apple m1 (Apple M1)",
"isMobile": false,
"tier": 1,
"type": "FALLBACK"
}
@danigb thanks bro
Using this method on M1, sometimes getting Google SwiftShader
do you have vue3 version. thanks in advance
Just a note for anyone who'll use this to detect M1; I get the same as @danigb on Firefox, but on Chrome I get the following:
{
debugInfo: {
UNMASKED_RENDERER_WEBGL: 37446,
UNMASKED_VENDOR_WEBGL: 37445
},
renderer: "ANGLE (Apple, Apple M1 Pro, OpenGL 4.1)",
vendor: "Google Inc. (Apple)"
}
Can anyone tell me what will be the output for android phone and Windows desktop. Both for chrome and mozilla.
Hello anyone,
I have a data set of webgl debugger renderer similar to what is generated by this webgl-detect-gpu.js. My interest is to try and detect from this data which one is malicious or fraudulent. Does anyone has an idea how I could do that using a python script or bash script?