CheckerNode.js 693 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import FunctionNode from '../core/FunctionNode.js';
  2. import Node from '../core/Node.js';
  3. import UVNode from '../accessors/UVNode.js';
  4. import { ShaderNode, float, add, mul, floor, mod, sign } from '../ShaderNode.js';
  5. // Three.JS Shader Language
  6. const checkerShaderNode = ShaderNode( ( uv ) => {
  7. uv = mul( uv, 2.0 );
  8. const cx = floor( uv.x );
  9. const cy = floor( uv.y );
  10. const result = mod( add( cx, cy ), 2.0 );
  11. return sign( result );
  12. } );
  13. class CheckerNode extends Node {
  14. constructor( uv = new UVNode() ) {
  15. super( 'float' );
  16. this.uv = uv;
  17. }
  18. generate( builder, output ) {
  19. return checkerShaderNode( this.uv ).build( builder, output );
  20. }
  21. }
  22. export default CheckerNode;