diff --git a/src/core/Clock.js b/src/core/Clock.js index fc0f5e04620693..ee1a528b07b1d1 100644 --- a/src/core/Clock.js +++ b/src/core/Clock.js @@ -58,7 +58,7 @@ class Clock { */ this.running = false; - warn( 'THREE.Clock: This module has been deprecated. Please use THREE.Timer instead.' ); // @deprecated, r183 + warn( 'Clock: This module has been deprecated. Please use THREE.Timer instead.' ); // @deprecated, r183 } diff --git a/src/renderers/common/RenderBundle.js b/src/renderers/common/RenderBundle.js index 84598acb067dd2..e774d7796e6140 100644 --- a/src/renderers/common/RenderBundle.js +++ b/src/renderers/common/RenderBundle.js @@ -11,11 +11,13 @@ class RenderBundle { * * @param {BundleGroup} bundleGroup - The bundle group. * @param {Camera} camera - The camera the bundle group is rendered with. + * @param {RenderContext} renderContext - The render context the bundle is rendered with. */ - constructor( bundleGroup, camera ) { + constructor( bundleGroup, camera, renderContext ) { this.bundleGroup = bundleGroup; this.camera = camera; + this.renderContext = renderContext; } diff --git a/src/renderers/common/RenderBundles.js b/src/renderers/common/RenderBundles.js index e4aef7ec5dd035..19bb629197d2d0 100644 --- a/src/renderers/common/RenderBundles.js +++ b/src/renderers/common/RenderBundles.js @@ -29,26 +29,29 @@ class RenderBundles { * * @param {BundleGroup} bundleGroup - The bundle group. * @param {Camera} camera - The camera the bundle group is rendered with. + * @param {RenderContext} renderContext - The render context the bundle is rendered with. * @return {RenderBundle} The render bundle. */ - get( bundleGroup, camera ) { + get( bundleGroup, camera, renderContext ) { const bundles = this.bundles; _chainKeys[ 0 ] = bundleGroup; _chainKeys[ 1 ] = camera; + _chainKeys[ 2 ] = renderContext; let bundle = bundles.get( _chainKeys ); if ( bundle === undefined ) { - bundle = new RenderBundle( bundleGroup, camera ); + bundle = new RenderBundle( bundleGroup, camera, renderContext ); bundles.set( _chainKeys, bundle ); } _chainKeys[ 0 ] = null; _chainKeys[ 1 ] = null; + _chainKeys[ 2 ] = null; return bundle; diff --git a/src/renderers/common/Renderer.js b/src/renderers/common/Renderer.js index d4716b6ffba054..dfcff43c3f6893 100644 --- a/src/renderers/common/Renderer.js +++ b/src/renderers/common/Renderer.js @@ -1213,17 +1213,11 @@ class Renderer { // - const renderBundle = this._bundles.get( bundleGroup, camera ); + const renderBundle = this._bundles.get( bundleGroup, camera, renderContext ); const renderBundleData = this.backend.get( renderBundle ); - if ( renderBundleData.renderContexts === undefined ) renderBundleData.renderContexts = new Set(); - - // - const needsUpdate = bundleGroup.version !== renderBundleData.version; - const renderBundleNeedsUpdate = renderBundleData.renderContexts.has( renderContext ) === false || needsUpdate; - - renderBundleData.renderContexts.add( renderContext ); + const renderBundleNeedsUpdate = needsUpdate || renderBundleData.bundleGPU === undefined; if ( renderBundleNeedsUpdate ) {