You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
764 B
49 lines
764 B
import Node, { addNodeClass } from '../core/Node.js';
|
|
import { positionView } from '../accessors/PositionNode.js';
|
|
import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
|
|
|
|
class FogNode extends Node {
|
|
|
|
constructor( colorNode, factorNode ) {
|
|
|
|
super( 'float' );
|
|
|
|
this.isFogNode = true;
|
|
|
|
this.colorNode = colorNode;
|
|
this.factorNode = factorNode;
|
|
|
|
}
|
|
|
|
getViewZNode( builder ) {
|
|
|
|
let viewZ;
|
|
|
|
const getViewZ = builder.context.getViewZ;
|
|
|
|
if ( getViewZ !== undefined ) {
|
|
|
|
viewZ = getViewZ( this );
|
|
|
|
}
|
|
|
|
return ( viewZ || positionView.z ).negate();
|
|
|
|
}
|
|
|
|
setup() {
|
|
|
|
return this.factorNode;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export default FogNode;
|
|
|
|
export const fog = nodeProxy( FogNode );
|
|
|
|
addNodeElement( 'fog', fog );
|
|
|
|
addNodeClass( 'FogNode', FogNode );
|