← Back
Experiments

WebXR

Browser-based XR experiments — stereo rendering, A-Frame integration, custom GLSL shaders, and VR mode via the WebXR Device API.

Compatibility Tests
SBS Stereo Image — WebXR
Side-by-side source image split per eye via onBeforeRender uniform. Image floats spatially at 3.5 m — parallax from headset IPD, not screen-locked.
working WebXR Three.js r128 onBeforeRender GLSL UV split
Stereo Image on Three.js Plane
Three.js plane with a custom GLSL stereo shader, left/right eye split using WebXR camera layer index. VRButton entry.
working WebXR Three.js r128 VRButton GLSL stereo shader
Three.js Shader Gradient
Rotating cube with a custom vertex-colour gradient shader. Pure Three.js, no WebXR — baseline shader test.
working Three.js r128 ShaderMaterial Gradient GLSL
Three.js Cube in A-Frame
Custom A-Frame component that registers a Three.js mesh with a GLSL gradient shader inside the A-Frame scene graph.
working A-Frame 1.2.0 Three.js r128 Custom component Gradient GLSL
A-Frame Shader Debug
A-Frame custom shader component outputting a flat debug colour. Tests the registerShader path without stereo complexity.
working A-Frame 1.2.0 registerShader GLSL debug
A-Frame Stereo Shader
Attempts left/right eye split in an A-Frame custom shader via renderer.xr.getCamera() in onBeforeRender — unreliable camera index detection.
broken WebXR A-Frame 1.2.0 Stereo shader
Three.js Stereo Shared Uniforms
Three.js stereo plane with shared uniform eye index — crashes on undefined xrCamera reference when switching eye in the render loop.
broken WebXR Three.js r128 Shared uniforms VRButton
Three.js-only Stereoscope
Placeholder — file is empty.
placeholder