Преглед изворни кода

Object3D: Add onBeforeShadow and onAfterShadow callbacks (#27250)

* added onbeforeShadow and onAfterShadow

* add missing methods
Renaud Rohlinger пре 1 година
родитељ
комит
6476e2fa79
2 измењених фајлова са 12 додато и 0 уклоњено
  1. 4 0
      src/core/Object3D.js
  2. 8 0
      src/renderers/webgl/WebGLShadowMap.js

+ 4 - 0
src/core/Object3D.js

@@ -117,6 +117,10 @@ class Object3D extends EventDispatcher {
 
 	}
 
+	onBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
+
+	onAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
+
 	onBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}
 
 	onAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}

+ 8 - 0
src/renderers/webgl/WebGLShadowMap.js

@@ -355,8 +355,12 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
 
 							const depthMaterial = getDepthMaterial( object, groupMaterial, light, type );
 
+							object.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );
+
 							_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );
 
+							object.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, group );
+
 						}
 
 					}
@@ -365,8 +369,12 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
 
 					const depthMaterial = getDepthMaterial( object, material, light, type );
 
+					object.onBeforeShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );
+
 					_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );
 
+					object.onAfterShadow( _renderer, object, camera, shadowCamera, geometry, depthMaterial, null );
+
 				}
 
 			}