1
0

3 Commits

Author SHA1 Message Date
Michael Verdi
38200c82f2 Revert "Fix stereo rendering glitches on Meta Quest browsers" 2026-01-26 23:12:43 -06:00
Michael Verdi
715e762fc9 Merge pull request #2 from Verdi/fix/quest-stereo-rendering
update video
2026-01-26 22:51:52 -06:00
Michael Verdi
065e8310e3 Merge pull request #1 from Verdi/fix/quest-stereo-rendering
Fix stereo rendering glitches on Meta Quest browsers
2026-01-26 18:23:51 -06:00

View File

@@ -428,20 +428,25 @@ function init() {
return;
}
// Use view matrix eye offset for reliable stereo detection
// This works consistently across Quest Browser updates and Safari/VisionOS
// Left eye has negative X offset, right eye has positive X offset
const viewMatrix = activeCamera.matrixWorldInverse;
const eyeOffsetX = viewMatrix.elements[12];
const xrCamera = renderer.xr.getCamera();
if (eyeOffsetX < 0) {
// Left eye - show left half of SBS video
if (xrCamera && xrCamera.cameras && xrCamera.cameras.length >= 2) {
if (activeCamera === xrCamera.cameras[0]) {
material.map.offset.x = 0;
} else {
// Right eye - show right half of SBS video
} else if (activeCamera === xrCamera.cameras[1]) {
material.map.offset.x = 0.5;
} else {
material.map.offset.x = 0;
}
material.map.repeat.x = 0.5;
} else {
const projMatrixEl8 = activeCamera.projectionMatrix.elements[8];
if (projMatrixEl8 < -0.0001) {
material.map.offset.x = 0; material.map.repeat.x = 0.5;
} else if (projMatrixEl8 > 0.0001) {
material.map.offset.x = 0.5; material.map.repeat.x = 0.5;
}
}
};
// Initialize 2D camera
@@ -1726,12 +1731,6 @@ function renderXR(timestamp, frame) {
}
}
try {
// Ensure video texture is synchronized with render loop
// This prevents glitches from texture update timing issues on Quest browsers
if (videoTexture && video && !video.paused && !video.ended) {
videoTexture.needsUpdate = true;
}
handleControllerInteractions();
renderer.render(scene, camera);
} catch (error) {