diff --git a/examples/jsm/renderers/common/Renderer.js b/examples/jsm/renderers/common/Renderer.js index 2c36709b91cdf0..4fd5c76bd15730 100644 --- a/examples/jsm/renderers/common/Renderer.js +++ b/examples/jsm/renderers/common/Renderer.js @@ -1384,6 +1384,8 @@ class Renderer { object.onBeforeRender( this, scene, camera, geometry, material, group ); + material.onBeforeRender( this, scene, camera, geometry, material, group ); + // if ( scene.overrideMaterial !== null ) { diff --git a/src/materials/Material.js b/src/materials/Material.js index cd16da40c4960d..27fb784f01e860 100644 --- a/src/materials/Material.js +++ b/src/materials/Material.js @@ -100,6 +100,10 @@ class Material extends EventDispatcher { } + onBuild( /* shaderobject, renderer */ ) {} + + onBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {} + onBeforeCompile( /* shaderobject, renderer */ ) {} customProgramCacheKey() { @@ -516,19 +520,6 @@ class Material extends EventDispatcher { } - onBuild( /* shaderobject, renderer */ ) { - - console.warn( 'Material: onBuild() has been removed.' ); // @deprecated, r166 - - } - - onBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) { - - console.warn( 'Material: onBeforeRender() has been removed.' ); // @deprecated, r166 - - } - - } export { Material }; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 7ad491b76f6355..1827223e1891e2 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1599,6 +1599,8 @@ class WebGLRenderer { object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); + material.onBeforeRender( _this, scene, camera, geometry, object, group ); + if ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) { material.side = BackSide; @@ -1673,6 +1675,8 @@ class WebGLRenderer { parameters.uniforms = programCache.getUniforms( material ); + material.onBuild( object, parameters, _this ); + material.onBeforeCompile( parameters, _this ); program = programCache.acquireProgram( parameters, programCacheKey );