# Nodes documentation

**URL:** <https://discourse.threejs.org/t/nodes-documentation/41244>\
**Category:** Questions\
**Created:** [August 9, 2022, 9:37pm UTC](https://discourse.threejs.org/t/nodes-documentation/41244 "2022-08-09T21:37:14Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![jimtea44](https://avatars.discourse-cdn.com/v4/letter/j/848f3c/32.png) [@jimtea44](https://discourse.threejs.org/u/jimtea44)\
**Post date:** [August 9, 2022, 9:37pm UTC](https://discourse.threejs.org/t/nodes-documentation/41244/1 "2022-08-09T21:37:14Z")

</div>

Can you please add a documentation for the nodes system (soon)?

Meanwhile, can you please convert r76 code to r143 of this demo: [three.js webgl - node material](https://rawgit.com/sunag/three.js/dev-clipnode3/examples/webgl_materials_nodes.html?e=clip)

```nohighlight
case 'clip':
	let mtl = new THREE.PhongNodeMaterial();
	var color = new THREE.ColorNode( 0xEEEEEE );
	var borderColor = new THREE.ColorNode( 0x0054df );
	var threshold = new THREE.FloatNode( .4 ); 
	var borderSize = new THREE.FloatNode( .2 );
	
	// animate uv
	var tex = new THREE.TextureNode( getTexture( "cloud" ) );
	var texArea = new THREE.SwitchNode( tex, 'w' );
	var thresholdBorder = new THREE.Math3Node(
		new THREE.OperatorNode( threshold, borderSize, THREE.OperatorNode.ADD ),
		threshold,
		texArea,
		THREE.Math3Node.SMOOTHSTEP
	);
	var thresholdEmissive = new THREE.OperatorNode(
		borderColor,
		thresholdBorder,
		THREE.OperatorNode.MUL
	);
	var clip = new THREE.ClipNode( texArea, threshold, color );
	clip.conditional = THREE.CondNode.LESS;

	mtl.color = clip;
	mtl.emissive = thresholdEmissive;

	addGui( 'threshold', threshold.value, function ( val ) {
		threshold.value = val;
	}, false, -.3, 1.3 );
	
	addGui( 'borderSize', borderSize.value, function ( val ) {
		borderSize.value = val;
	}, false, 0, .5 );
	
	addGui( 'color', color.value.getHex(), function ( val ) {
		color.value.setHex( val );
	}, true );
	
	addGui( 'borderColor', borderColor.value.getHex(), function ( val ) {
		borderColor.value.setHex( val );
	}, true );

```

`THREE.SwitchNode` or `THREE.ColorNode` are currently `undefined` and without the documentation I don’t think I will figure this out anytime soon.

I already spent 2 days on this and I made little progress.

Questions that should be answered in the documentation:

1. What node types are available?
2. What are all their properties and methods?
3. What is the execution order of everything (what is that `build()` function, what calls it, what is `addFlow()` etc.)?
4. Copy and paste snippets of common tasks (like dissolve) for r143 because r76 is too old.

Please make a better documentation as a top priority.

---

<div class="post-metadata">

**Author:** ![donmccurdy](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/donmccurdy/32/33209_2.png) [@donmccurdy](https://discourse.threejs.org/u/donmccurdy)\
**Post date:** [August 13, 2022, 6:38pm UTC](https://discourse.threejs.org/t/nodes-documentation/41244/2 "2022-08-13T18:38:18Z")

</div>

I expect documentation will be added when the node system is stable. It is not stable today. Until that happens, documentation would just fall out of date quickly and slow down progress on getting the system built.
