添加关照、全局等高线、修改图层问题
This commit is contained in:
34
static/sdk/three/jsm/nodes/fog/FogExp2Node.js
Normal file
34
static/sdk/three/jsm/nodes/fog/FogExp2Node.js
Normal file
@ -0,0 +1,34 @@
|
||||
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 );
|
48
static/sdk/three/jsm/nodes/fog/FogNode.js
Normal file
48
static/sdk/three/jsm/nodes/fog/FogNode.js
Normal file
@ -0,0 +1,48 @@
|
||||
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 );
|
35
static/sdk/three/jsm/nodes/fog/FogRangeNode.js
Normal file
35
static/sdk/three/jsm/nodes/fog/FogRangeNode.js
Normal file
@ -0,0 +1,35 @@
|
||||
import FogNode from './FogNode.js';
|
||||
import { smoothstep } from '../math/MathNode.js';
|
||||
import { addNodeClass } from '../core/Node.js';
|
||||
import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
|
||||
|
||||
class FogRangeNode extends FogNode {
|
||||
|
||||
constructor( colorNode, nearNode, farNode ) {
|
||||
|
||||
super( colorNode );
|
||||
|
||||
this.isFogRangeNode = true;
|
||||
|
||||
this.nearNode = nearNode;
|
||||
this.farNode = farNode;
|
||||
|
||||
}
|
||||
|
||||
setup( builder ) {
|
||||
|
||||
const viewZ = this.getViewZNode( builder );
|
||||
|
||||
return smoothstep( this.nearNode, this.farNode, viewZ );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default FogRangeNode;
|
||||
|
||||
export const rangeFog = nodeProxy( FogRangeNode );
|
||||
|
||||
addNodeElement( 'rangeFog', rangeFog );
|
||||
|
||||
addNodeClass( 'FogRangeNode', FogRangeNode );
|
Reference in New Issue
Block a user