@@ -19210,20 +19210,25 @@
1921019210 if (_clippingEnabled === true) clipping.beginShadows();
1921119211 const shadowsArray = currentRenderState.state.shadowsArray;
1921219212 shadowMap.render(shadowsArray, scene, camera);
19213- currentRenderState.setupLights(_this.physicallyCorrectLights);
19214- currentRenderState.setupLightsView(camera);
1921519213 if (_clippingEnabled === true) clipping.endShadows(); //
1921619214
1921719215 if (this.info.autoReset === true) this.info.reset(); //
1921819216
1921919217 background.render(currentRenderList, scene); // render scene
1922019218
19221- const opaqueObjects = currentRenderList.opaque;
19222- const transmissiveObjects = currentRenderList.transmissive;
19223- const transparentObjects = currentRenderList.transparent;
19224- if (opaqueObjects.length > 0) renderObjects(opaqueObjects, scene, camera);
19225- if (transmissiveObjects.length > 0) renderTransmissiveObjects(opaqueObjects, transmissiveObjects, scene, camera);
19226- if (transparentObjects.length > 0) renderObjects(transparentObjects, scene, camera); //
19219+ currentRenderState.setupLights(_this.physicallyCorrectLights);
19220+
19221+ if (camera.isArrayCamera) {
19222+ const cameras = camera.cameras;
19223+
19224+ for (let i = 0, l = cameras.length; i < l; i++) {
19225+ const camera2 = cameras[i];
19226+ renderScene(currentRenderList, scene, camera2, camera2.viewport);
19227+ }
19228+ } else {
19229+ renderScene(currentRenderList, scene, camera);
19230+ } //
19231+
1922719232
1922819233 if (_currentRenderTarget !== null) {
1922919234 // resolve multisample renderbuffers to a single-sample texture if necessary
1933619341 }
1933719342 }
1933819343
19339- function renderTransmissiveObjects(opaqueObjects, transmissiveObjects, scene, camera) {
19344+ function renderScene(currentRenderList, scene, camera, viewport) {
19345+ const opaqueObjects = currentRenderList.opaque;
19346+ const transmissiveObjects = currentRenderList.transmissive;
19347+ const transparentObjects = currentRenderList.transparent;
19348+ currentRenderState.setupLightsView(camera);
19349+ if (transmissiveObjects.length > 0) renderTransmissionPass(opaqueObjects, scene, camera);
19350+ if (viewport) state.viewport(_currentViewport.copy(viewport));
19351+ if (opaqueObjects.length > 0) renderObjects(opaqueObjects, scene, camera);
19352+ if (transmissiveObjects.length > 0) renderObjects(transmissiveObjects, scene, camera);
19353+ if (transparentObjects.length > 0) renderObjects(transparentObjects, scene, camera);
19354+ }
19355+
19356+ function renderTransmissionPass(opaqueObjects, scene, camera) {
1934019357 if (_transmissionRenderTarget === null) {
1934119358 const needsAntialias = _antialias === true && capabilities.isWebGL2 === true;
1934219359 const renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;
@@ -19366,40 +19383,19 @@
1936619383 textures.updateRenderTargetMipmap(_transmissionRenderTarget);
1936719384
1936819385 _this.setRenderTarget(currentRenderTarget);
19369-
19370- renderObjects(transmissiveObjects, scene, camera);
1937119386 }
1937219387
1937319388 function renderObjects(renderList, scene, camera) {
1937419389 const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;
1937519390
19376- if (camera.isArrayCamera) {
19377- const cameras = camera.cameras;
19391+ for (let i = 0, l = renderList.length; i < l; i++) {
19392+ const renderItem = renderList[i];
19393+ const object = renderItem.object;
19394+ const geometry = renderItem.geometry;
19395+ const material = overrideMaterial === null ? renderItem.material : overrideMaterial;
19396+ const group = renderItem.group;
1937819397
19379- for (let i = 0, l = cameras.length; i < l; i++) {
19380- const camera2 = cameras[i];
19381- state.viewport(_currentViewport.copy(camera2.viewport));
19382- currentRenderState.setupLightsView(camera2);
19383-
19384- for (let j = 0, jl = renderList.length; j < jl; j++) {
19385- const renderItem = renderList[j];
19386- const object = renderItem.object;
19387- const geometry = renderItem.geometry;
19388- const material = overrideMaterial === null ? renderItem.material : overrideMaterial;
19389- const group = renderItem.group;
19390-
19391- if (object.layers.test(camera2.layers)) {
19392- renderObject(object, scene, camera2, geometry, material, group);
19393- }
19394- }
19395- }
19396- } else {
19397- for (let j = 0, jl = renderList.length; j < jl; j++) {
19398- const renderItem = renderList[j];
19399- const object = renderItem.object;
19400- const geometry = renderItem.geometry;
19401- const material = overrideMaterial === null ? renderItem.material : overrideMaterial;
19402- const group = renderItem.group;
19398+ if (object.layers.test(camera.layers)) {
1940319399 renderObject(object, scene, camera, geometry, material, group);
1940419400 }
1940519401 }
0 commit comments