فهرست منبع

add CheckerNode (#22592)

sunag 3 سال پیش
والد
کامیت
5b654654ad
2فایلهای تغییر یافته به همراه43 افزوده شده و 1 حذف شده
  1. 7 1
      examples/jsm/renderers/nodes/Nodes.js
  2. 36 0
      examples/jsm/renderers/nodes/procedural/CheckerNode.js

+ 7 - 1
examples/jsm/renderers/nodes/Nodes.js

@@ -68,6 +68,9 @@ import SplitNode from './utils/SplitNode.js';
 import SpriteSheetUVNode from './utils/SpriteSheetUVNode.js';
 import TimerNode from './utils/TimerNode.js';
 
+// procedural
+import CheckerNode from './procedural/CheckerNode.js';
+
 // core
 export * from './core/constants.js';
 
@@ -151,6 +154,9 @@ export {
 	JoinNode,
 	SplitNode,
 	SpriteSheetUVNode,
-	TimerNode
+	TimerNode,
+
+	// procedural
+	CheckerNode
 };
 

+ 36 - 0
examples/jsm/renderers/nodes/procedural/CheckerNode.js

@@ -0,0 +1,36 @@
+import FunctionNode from '../core/FunctionNode.js';
+import Node from '../core/Node.js';
+import UVNode from '../accessors/UVNode.js';
+
+const checker = new FunctionNode( `
+float ( vec2 uv ) {
+
+	uv *= 2.0;
+
+	float cx = floor( uv.x );
+	float cy = floor( uv.y );
+	float result = mod( cx + cy, 2.0 );
+
+	return sign( result );
+
+}` );
+
+class CheckerNode extends Node {
+
+	constructor( uv = new UVNode() ) {
+
+		super( 'float' );
+
+		this.uv = uv;
+
+	}
+
+	generate( builder, output ) {
+
+		return checker.call( { uv: this.uv } ).build( builder, output );
+
+	}
+
+}
+
+export default CheckerNode;