32 lines
		
	
	
		
			608 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			32 lines
		
	
	
		
			608 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | import LightingModel from '../core/LightingModel.js'; | ||
|  | import { diffuseColor } from '../core/PropertyNode.js'; | ||
|  | import { float } from '../shadernode/ShaderNode.js'; | ||
|  | 
 | ||
|  | class ShadowMaskModel extends LightingModel { | ||
|  | 
 | ||
|  | 	constructor() { | ||
|  | 
 | ||
|  | 		super(); | ||
|  | 
 | ||
|  | 		this.shadowNode = float( 1 ).toVar( 'shadowMask' ); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	direct( { shadowMask } ) { | ||
|  | 
 | ||
|  | 		this.shadowNode.mulAssign( shadowMask ); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	finish( context ) { | ||
|  | 
 | ||
|  | 		diffuseColor.a.mulAssign( this.shadowNode.oneMinus() ); | ||
|  | 
 | ||
|  | 		context.outgoingLight.rgb.assign( diffuseColor.rgb ); // TODO: Optimize LightsNode to avoid this assignment
 | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | export default ShadowMaskModel; |