awacke1's picture
Update index.html
788c035
raw
history blame
2.77 kB
<!DOCTYPE html>
<html>
<head>
<title>Three.js GPU Detector</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<style>
body {
margin: 0;
padding: 0;
}
canvas {
width: 100%;
height: 100%;
}
.info {
position: absolute;
top: 10px;
left: 10px;
color: #fff;
}
</style>
</head>
<body>
<div class="info"></div>
<script>
// Create a WebGL renderer
var renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// Create a scene and camera
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;
// Create a cube
var geometry = new THREE.BoxGeometry();
var material = new THREE.MeshBasicMaterial();
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);
// Create a raytracer
var raycaster = new THREE.Raycaster();
var mouse = new THREE.Vector2();
var intersects = [];
// Detect the GPU memory and type
var gl = renderer.getContext();
var extension = gl.getExtension('WEBGL_debug_renderer_info');
var memory = gl.getParameter(gl.MAX_TEXTURE_SIZE);
var type = gl.getParameter(extension.UNMASKED_RENDERER_WEBGL);
// Display the GPU information
var info = document.querySelector('.info');
info.innerHTML = 'GPU Memory: ' + memory + '<br>GPU Type: ' + type;
// Display the frames per second
var stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.top = '10px';
stats.domElement.style.right = '10px';
document.body.appendChild(stats.domElement);
// Render the scene and handle mouse events
function render() {
requestAnimationFrame(render);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
// Raytrace on mouse move
raycaster.setFromCamera(mouse, camera);
intersects = raycaster.intersectObjects(scene.children);
if (intersects.length > 0) {
intersects[0].object.material.color.set(0xff0000);
} else {
cube.material.color.set(0x00ff00);
}
renderer.render(scene, camera);
// Display the frames per second
stats.update();
}
render();
// Handle mouse events
function onDocumentMouseMove(event) {
event.preventDefault();
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
}
document.addEventListener('mousemove', onDocumentMouseMove, false);
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.min.js"></script>
</body>
</html>