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.

56 lines
1.1 KiB

6 months ago
import TempNode from '../core/TempNode.js';
import { addNodeClass } from '../core/Node.js';
import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
class PackingNode extends TempNode {
constructor( scope, node ) {
super();
this.scope = scope;
this.node = node;
}
getNodeType( builder ) {
return this.node.getNodeType( builder );
}
setup() {
const { scope, node } = this;
let result = null;
if ( scope === PackingNode.DIRECTION_TO_COLOR ) {
result = node.mul( 0.5 ).add( 0.5 );
} else if ( scope === PackingNode.COLOR_TO_DIRECTION ) {
result = node.mul( 2.0 ).sub( 1 );
}
return result;
}
}
PackingNode.DIRECTION_TO_COLOR = 'directionToColor';
PackingNode.COLOR_TO_DIRECTION = 'colorToDirection';
export default PackingNode;
export const directionToColor = nodeProxy( PackingNode, PackingNode.DIRECTION_TO_COLOR );
export const colorToDirection = nodeProxy( PackingNode, PackingNode.COLOR_TO_DIRECTION );
addNodeElement( 'directionToColor', directionToColor );
addNodeElement( 'colorToDirection', colorToDirection );
addNodeClass( 'PackingNode', PackingNode );