CheckerNode.js 781 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import TempNode from '../core/TempNode.js';
  2. import { uv } from '../accessors/UVNode.js';
  3. import { addNodeClass } from '../core/Node.js';
  4. import { addNodeElement, tslFn, nodeProxy } from '../shadernode/ShaderNode.js';
  5. const checkerShaderNode = tslFn( ( inputs ) => {
  6. const uv = inputs.uv.mul( 2.0 );
  7. const cx = uv.x.floor();
  8. const cy = uv.y.floor();
  9. const result = cx.add( cy ).mod( 2.0 );
  10. return result.sign();
  11. } );
  12. class CheckerNode extends TempNode {
  13. constructor( uvNode = uv() ) {
  14. super( 'float' );
  15. this.uvNode = uvNode;
  16. }
  17. setup() {
  18. return checkerShaderNode( { uv: this.uvNode } );
  19. }
  20. }
  21. export default CheckerNode;
  22. export const checker = nodeProxy( CheckerNode );
  23. addNodeElement( 'checker', checker );
  24. addNodeClass( 'CheckerNode', CheckerNode );