diff --git a/examples/jsm/renderers/common/Renderer.js b/examples/jsm/renderers/common/Renderer.js index ed7fe6d536b02e..e3e5da65fe5a89 100644 --- a/examples/jsm/renderers/common/Renderer.js +++ b/examples/jsm/renderers/common/Renderer.js @@ -250,6 +250,10 @@ class Renderer { // + sceneRef.onBeforeRender( this, scene, camera, renderTarget ); + + // + _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); _frustum.setFromProjectionMatrix( _projScreenMatrix, coordinateSystem ); @@ -318,6 +322,10 @@ class Renderer { this._lastRenderContext = renderContext; + // + + sceneRef.onAfterRender( this, scene, camera, renderTarget ); + } setAnimationLoop( callback ) { @@ -822,12 +830,6 @@ class Renderer { } - _getRenderObject( object, material, scene, camera, lightsNode, passId ) { - - return this._objects.get( object, material, scene, camera, lightsNode, this._currentRenderContext, passId ); - - } - _renderObject( object, scene, camera, geometry, material, group, lightsNode ) { material = scene.overrideMaterial !== null ? scene.overrideMaterial : material; @@ -836,19 +838,6 @@ class Renderer { object.onBeforeRender( this, scene, camera, geometry, material, group ); - // - - const renderObject = this._getRenderObject( object, material, scene, camera, lightsNode ); - - this._nodes.updateBefore( renderObject ); - - // - - object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); - object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); - - // - material.onBeforeRender( this, scene, camera, geometry, material, group ); // @@ -856,16 +845,16 @@ class Renderer { if ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) { material.side = BackSide; - this._renderObjectDirect( this._getRenderObject( object, material, scene, camera, lightsNode, 'backSide' ) ); // create backSide pass id + this._renderObjectDirect( object, material, scene, camera, lightsNode, 'backSide' ); // create backSide pass id material.side = FrontSide; - this._renderObjectDirect( renderObject ); // use default pass id + this._renderObjectDirect( object, material, scene, camera, lightsNode ); // use default pass id material.side = DoubleSide; } else { - this._renderObjectDirect( renderObject ); + this._renderObjectDirect( object, material, scene, camera, lightsNode ); } @@ -875,7 +864,20 @@ class Renderer { } - _renderObjectDirect( renderObject ) { + _renderObjectDirect( object, material, scene, camera, lightsNode, passId ) { + + const renderObject = this._objects.get( object, material, scene, camera, lightsNode, this._currentRenderContext, passId ); + + // + + this._nodes.updateBefore( renderObject ); + + // + + object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); + object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); + + // this._nodes.updateForRender( renderObject ); this._geometries.updateForRender( renderObject );