@@ -106,12 +106,13 @@ export function createWebGLContext(glAttribs) {
106106}
107107
108108export class RenderView {
109- constructor ( projectionMatrix , viewTransform , viewport = null , eye = 'left' ) {
109+ constructor ( projectionMatrix , viewTransform , viewport = null , eye = 'left' , depthdata = null ) {
110110 this . projectionMatrix = projectionMatrix ;
111111 this . viewport = viewport ;
112112 // If an eye isn't given the left eye is assumed.
113113 this . _eye = eye ;
114114 this . _eyeIndex = ( eye == 'left' ? 0 : 1 ) ;
115+ this . depthdata = depthdata ;
115116
116117 // Compute the view matrix
117118 if ( viewTransform instanceof Float32Array ) {
@@ -722,8 +723,8 @@ export class Renderer {
722723 gl . viewport ( vp . x , vp . y , vp . width , vp . height ) ;
723724 gl . uniformMatrix4fv ( program . uniform . LEFT_PROJECTION_MATRIX , false , views [ 0 ] . projectionMatrix ) ;
724725 gl . uniformMatrix4fv ( program . uniform . LEFT_VIEW_MATRIX , false , views [ 0 ] . viewMatrix ) ;
725- gl . uniformMatrix4fv ( program . uniform . RIGHT_PROJECTION_MATRIX , false , views [ 0 ] . projectionMatrix ) ;
726- gl . uniformMatrix4fv ( program . uniform . RIGHT_VIEW_MATRIX , false , views [ 0 ] . viewMatrix ) ;
726+ gl . uniformMatrix4fv ( program . uniform . RIGHT_PROJECTION_MATRIX , false , views [ 1 ] . projectionMatrix ) ;
727+ gl . uniformMatrix4fv ( program . uniform . RIGHT_VIEW_MATRIX , false , views [ 1 ] . viewMatrix ) ;
727728 gl . uniform3fv ( program . uniform . CAMERA_POSITION , this . _cameraPositions [ 0 ] ) ;
728729 gl . uniform1i ( program . uniform . EYE_INDEX , views [ 0 ] . eyeIndex ) ;
729730 }
@@ -762,6 +763,19 @@ export class Renderer {
762763 gl . uniformMatrix4fv ( program . uniform . LEFT_VIEW_MATRIX , false , views [ 0 ] . viewMatrix ) ;
763764 gl . uniformMatrix4fv ( program . uniform . RIGHT_PROJECTION_MATRIX , false , views [ 1 ] . projectionMatrix ) ;
764765 gl . uniformMatrix4fv ( program . uniform . RIGHT_VIEW_MATRIX , false , views [ 1 ] . viewMatrix ) ;
766+
767+ // for older browser that don't support projectionMatrix and transform on the depth data
768+ gl . uniformMatrix4fv ( program . uniform . LEFT_DEPTH_PROJECTION_MATRIX , false , views [ 0 ] . projectionMatrix ) ;
769+ gl . uniformMatrix4fv ( program . uniform . LEFT_DEPTH_VIEW_MATRIX , false , views [ 0 ] . viewMatrix ) ;
770+ gl . uniformMatrix4fv ( program . uniform . RIGHT_DEPTH_PROJECTION_MATRIX , false , views [ 1 ] . projectionMatrix ) ;
771+ gl . uniformMatrix4fv ( program . uniform . RIGHT_DEPTH_VIEW_MATRIX , false , views [ 1 ] . viewMatrix ) ;
772+
773+ if ( view . depthdata && views [ 0 ] . depthdata . projectionMatrix ) {
774+ gl . uniformMatrix4fv ( program . uniform . LEFT_DEPTH_PROJECTION_MATRIX , false , views [ 0 ] . depthdata . projectionMatrix ) ;
775+ gl . uniformMatrix4fv ( program . uniform . LEFT_DEPTH_VIEW_MATRIX , false , views [ 0 ] . depthdata . transform . inverse . matrix ) ;
776+ gl . uniformMatrix4fv ( program . uniform . RIGHT_DEPTH_PROJECTION_MATRIX , false , views [ 1 ] . depthdata . projectionMatrix ) ;
777+ gl . uniformMatrix4fv ( program . uniform . RIGHT_DEPTH_VIEW_MATRIX , false , views [ 1 ] . depthdata . transform . inverse . matrix ) ;
778+ }
765779 }
766780 // TODO(AB): modify shaders which use CAMERA_POSITION and EYE_INDEX to work with Multiview
767781 gl . uniform3fv ( program . uniform . CAMERA_POSITION , this . _cameraPositions [ i ] ) ;
0 commit comments