ShadowMaskModel.js 608 B

12345678910111213141516171819202122232425262728293031
  1. import LightingModel from '../core/LightingModel.js';
  2. import { diffuseColor } from '../core/PropertyNode.js';
  3. import { float } from '../shadernode/ShaderNode.js';
  4. class ShadowMaskModel extends LightingModel {
  5. constructor() {
  6. super();
  7. this.shadowNode = float( 1 ).toVar( 'shadowMask' );
  8. }
  9. direct( { shadowMask } ) {
  10. this.shadowNode.mulAssign( shadowMask );
  11. }
  12. finish( context ) {
  13. diffuseColor.a.mulAssign( this.shadowNode.oneMinus() );
  14. context.outgoingLight.rgb.assign( diffuseColor.rgb ); // TODO: Optimize LightsNode to avoid this assignment
  15. }
  16. }
  17. export default ShadowMaskModel;