A fragment shader casts a ray per pixel against 30 animated spheres and a checkered floor, with hard shadows and up to two reflection bounces — no rasterized geometry at all. Tests raw GPU fill-rate and shader ALU throughput. Higher FPS is better.
Ray tracing renders a scene by working backward from the camera: for every pixel, a ray is cast into the scene, and whatever it hits first determines that pixel's color, rather than the more common approach (rasterization) of projecting triangles onto the screen and figuring out which pixels they cover. It's the same basic technique used by offline film-quality renderers and, more recently, by hardware-accelerated ray tracing in modern GPUs, because it makes physically accurate reflections, shadows and refraction fall out naturally from the same ray-intersection logic rather than needing separate rasterization tricks for each effect.
This benchmark implements a small real-time ray tracer entirely inside a single WebGL2 fragment shader — every pixel on screen independently intersects its own ray against a scene of thirty animated spheres and a checkered floor, computes shading and a hard shadow toward a directional light, and then follows up to two further reflection bounces off any mirror-like surface it strikes. None of the geometry is rasterized in the traditional sense; the entire image is the direct output of per-pixel ray-intersection math running on the GPU's shader cores.
The score is the average frames per second sustained over a fixed 15-second run — higher is better. Because every pixel independently performs the same batch of ray-sphere intersection tests, shadow rays and reflection bounces, the workload scales directly with screen resolution and GPU shader throughput rather than CPU speed, making it a comparatively pure measure of raw GPU compute. Results are submitted to the global leaderboard with the actual detected GPU model so hardware comparisons are meaningful across devices.