提交 ce60052f 编写于 作者: F Fernando Serrano

Refactor renderObjects, fix Multiview.getNumViews() and capabilities.maxNumMultiviewsViews

上级 f5809c2f
......@@ -1381,76 +1381,63 @@ function WebGLRenderer( parameters ) {
function renderObjects( renderList, scene, camera, overrideMaterial ) {
if ( multiview.isEnabled() ) {
for ( var i = 0, l = renderList.length; i < l; i ++ ) {
var renderItem = renderList[ i ];
for ( var i = 0, l = renderList.length; i < l; i ++ ) {
var object = renderItem.object;
var geometry = renderItem.geometry;
var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
var group = renderItem.group;
renderObject( object, scene, camera, geometry, material, group );
}
} else {
var renderItem = renderList[ i ];
for ( var i = 0, l = renderList.length; i < l; i ++ ) {
var object = renderItem.object;
var geometry = renderItem.geometry;
var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
var group = renderItem.group;
var renderItem = renderList[ i ];
if ( multiview.isEnabled() ) {
var object = renderItem.object;
var geometry = renderItem.geometry;
var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
var group = renderItem.group;
_currentArrayCamera = camera;
if ( camera.isArrayCamera ) {
renderObject( object, scene, camera, geometry, material, group );
_currentArrayCamera = camera;
} else if ( camera.isArrayCamera ) {
var cameras = camera.cameras;
_currentArrayCamera = camera;
for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
var cameras = camera.cameras;
var camera2 = cameras[ j ];
for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
if ( object.layers.test( camera2.layers ) ) {
var camera2 = cameras[ j ];
if ( 'viewport' in camera2 ) { // XR
if ( object.layers.test( camera2.layers ) ) {
state.viewport( _currentViewport.copy( camera2.viewport ) );
if ( 'viewport' in camera2 ) { // XR
} else {
state.viewport( _currentViewport.copy( camera2.viewport ) );
var bounds = camera2.bounds;
} else {
var x = bounds.x * _width;
var y = bounds.y * _height;
var width = bounds.z * _width;
var height = bounds.w * _height;
var bounds = camera2.bounds;
state.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) );
var x = bounds.x * _width;
var y = bounds.y * _height;
var width = bounds.z * _width;
var height = bounds.w * _height;
}
state.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) );
currentRenderState.setupLights( camera2 );
}
renderObject( object, scene, camera2, geometry, material, group );
currentRenderState.setupLights( camera2 );
}
renderObject( object, scene, camera2, geometry, material, group );
}
} else {
}
_currentArrayCamera = null;
} else {
renderObject( object, scene, camera, geometry, material, group );
_currentArrayCamera = null;
}
renderObject( object, scene, camera, geometry, material, group );
}
......
......@@ -88,7 +88,7 @@ function WebGLCapabilities( gl, extensions, parameters ) {
var multiviewExt = extensions.get( 'OVR_multiview2' );
var multiview = isWebGL2 && ( !! multiviewExt );
var maxMultiviewViews = multiview ? gl.getParameter( multiviewExt.MAX_VIEWS_OVR ) : 1;
var maxMultiviewViews = multiview ? gl.getParameter( multiviewExt.MAX_VIEWS_OVR ) : 0;
return {
......
......@@ -28,7 +28,13 @@ function WebGLMultiview( renderer, requested, options ) {
this.getNumViews = function () {
return renderTarget ? renderTarget.numViews : 0;
if ( renderTarget && renderer.getRenderTarget() === renderTarget ) {
return renderTarget.numViews;
}
return 0;
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册