35 lines
		
	
	
		
			685 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			685 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | import FogNode from './FogNode.js'; | ||
|  | import { addNodeClass } from '../core/Node.js'; | ||
|  | import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js'; | ||
|  | 
 | ||
|  | class FogExp2Node extends FogNode { | ||
|  | 
 | ||
|  | 	constructor( colorNode, densityNode ) { | ||
|  | 
 | ||
|  | 		super( colorNode ); | ||
|  | 
 | ||
|  | 		this.isFogExp2Node = true; | ||
|  | 
 | ||
|  | 		this.densityNode = densityNode; | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	setup( builder ) { | ||
|  | 
 | ||
|  | 		const viewZ = this.getViewZNode( builder ); | ||
|  | 		const density = this.densityNode; | ||
|  | 
 | ||
|  | 		return density.mul( density, viewZ, viewZ ).negate().exp().oneMinus(); | ||
|  | 
 | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | export default FogExp2Node; | ||
|  | 
 | ||
|  | export const densityFog = nodeProxy( FogExp2Node ); | ||
|  | 
 | ||
|  | addNodeElement( 'densityFog', densityFog ); | ||
|  | 
 | ||
|  | addNodeClass( 'FogExp2Node', FogExp2Node ); |