Browse Source

regexp THREE.Node* to THREE.*Node

SUNAG 9 years ago
parent
commit
1558f02a70
52 changed files with 993 additions and 993 deletions
  1. 10 10
      examples/js/materials/nodes/BuilderNode.js
  2. 12 12
      examples/js/materials/nodes/ConstNode.js
  3. 8 8
      examples/js/materials/nodes/FunctionCallNode.js
  4. 21 21
      examples/js/materials/nodes/FunctionNode.js
  5. 9 9
      examples/js/materials/nodes/GLNode.js
  6. 6 6
      examples/js/materials/nodes/InputNode.js
  7. 6 6
      examples/js/materials/nodes/LibNode.js
  8. 35 35
      examples/js/materials/nodes/MaterialNode.js
  9. 5 5
      examples/js/materials/nodes/RawNode.js
  10. 15 15
      examples/js/materials/nodes/TempNode.js
  11. 106 0
      examples/js/materials/nodes/accessors/CameraNode.js
  12. 31 0
      examples/js/materials/nodes/accessors/ColorsNode.js
  13. 0 106
      examples/js/materials/nodes/accessors/NodeCamera.js
  14. 0 31
      examples/js/materials/nodes/accessors/NodeColors.js
  15. 0 31
      examples/js/materials/nodes/accessors/NodeUV.js
  16. 14 14
      examples/js/materials/nodes/accessors/NormalNode.js
  17. 19 19
      examples/js/materials/nodes/accessors/PositionNode.js
  18. 7 7
      examples/js/materials/nodes/accessors/ReflectNode.js
  19. 31 0
      examples/js/materials/nodes/accessors/UVNode.js
  20. 5 5
      examples/js/materials/nodes/extras/VelocityNode.js
  21. 16 0
      examples/js/materials/nodes/inputs/ColorNode.js
  22. 7 7
      examples/js/materials/nodes/inputs/CubeTextureNode.js
  23. 21 0
      examples/js/materials/nodes/inputs/FloatNode.js
  24. 21 0
      examples/js/materials/nodes/inputs/IntNode.js
  25. 0 16
      examples/js/materials/nodes/inputs/NodeColor.js
  26. 0 21
      examples/js/materials/nodes/inputs/NodeFloat.js
  27. 0 21
      examples/js/materials/nodes/inputs/NodeInt.js
  28. 0 16
      examples/js/materials/nodes/inputs/NodeVector2.js
  29. 0 17
      examples/js/materials/nodes/inputs/NodeVector3.js
  30. 0 16
      examples/js/materials/nodes/inputs/NodeVector4.js
  31. 7 7
      examples/js/materials/nodes/inputs/TextureNode.js
  32. 16 0
      examples/js/materials/nodes/inputs/Vector2Node.js
  33. 17 0
      examples/js/materials/nodes/inputs/Vector3Node.js
  34. 16 0
      examples/js/materials/nodes/inputs/Vector4Node.js
  35. 0 17
      examples/js/materials/nodes/interfaces/NodePhongMaterial.js
  36. 0 17
      examples/js/materials/nodes/interfaces/NodeStandardMaterial.js
  37. 17 0
      examples/js/materials/nodes/interfaces/PhongMaterialNode.js
  38. 10 10
      examples/js/materials/nodes/interfaces/PhongNode.js
  39. 17 0
      examples/js/materials/nodes/interfaces/StandardMaterialNode.js
  40. 11 11
      examples/js/materials/nodes/interfaces/StandardNode.js
  41. 78 0
      examples/js/materials/nodes/math/Math1Node.js
  42. 25 25
      examples/js/materials/nodes/math/Math2Node.js
  43. 14 14
      examples/js/materials/nodes/math/Math3Node.js
  44. 0 78
      examples/js/materials/nodes/math/NodeMath1.js
  45. 0 45
      examples/js/materials/nodes/math/NodeOperator.js
  46. 45 0
      examples/js/materials/nodes/math/OperatorNode.js
  47. 10 10
      examples/js/materials/nodes/utils/JoinNode.js
  48. 0 20
      examples/js/materials/nodes/utils/NodeTime.js
  49. 7 7
      examples/js/materials/nodes/utils/RoughnessToBlinnExponentNode.js
  50. 6 6
      examples/js/materials/nodes/utils/SwitchNode.js
  51. 20 0
      examples/js/materials/nodes/utils/TimeNode.js
  52. 272 272
      examples/webgl_materials_nodes.html

+ 10 - 10
examples/js/materials/nodes/NodeBuilder.js → examples/js/materials/nodes/BuilderNode.js

@@ -2,7 +2,7 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeBuilder = function( material ) {
+THREE.BuilderNode = function( material ) {
 	
 	
 	this.material = material;
 	this.material = material;
 	
 	
@@ -12,8 +12,8 @@ THREE.NodeBuilder = function( material ) {
 	
 	
 };
 };
 
 
-THREE.NodeBuilder.prototype = {
-	constructor: THREE.NodeBuilder,
+THREE.BuilderNode.prototype = {
+	constructor: THREE.BuilderNode,
 
 
 	include : function ( func ) {
 	include : function ( func ) {
 		
 		
@@ -23,7 +23,7 @@ THREE.NodeBuilder.prototype = {
 	
 	
 	getFormatConstructor : function ( len ) {
 	getFormatConstructor : function ( len ) {
 		
 		
-		return THREE.NodeBuilder.constructors[len-1];
+		return THREE.BuilderNode.constructors[len-1];
 	
 	
 	},
 	},
 	
 	
@@ -75,7 +75,7 @@ THREE.NodeBuilder.prototype = {
 	
 	
 	getType : function ( format ) {
 	getType : function ( format ) {
 		
 		
-		return THREE.NodeBuilder.type[ format ];
+		return THREE.BuilderNode.type[ format ];
 	
 	
 	},
 	},
 	
 	
@@ -99,13 +99,13 @@ THREE.NodeBuilder.prototype = {
 	
 	
 	getElementByIndex : function ( index ) {
 	getElementByIndex : function ( index ) {
 		
 		
-		return THREE.NodeBuilder.elements[ index ];
+		return THREE.BuilderNode.elements[ index ];
 	
 	
 	},
 	},
 	
 	
 	getElementIndex : function ( elm ) {
 	getElementIndex : function ( elm ) {
 		
 		
-		return THREE.NodeBuilder.elements.indexOf( elm );
+		return THREE.BuilderNode.elements.indexOf( elm );
 	
 	
 	},
 	},
 	
 	
@@ -124,21 +124,21 @@ THREE.NodeBuilder.prototype = {
 	}
 	}
 };
 };
 
 
-THREE.NodeBuilder.type = {
+THREE.BuilderNode.type = {
 	float : 'fv1',
 	float : 'fv1',
 	vec2 : 'v2',
 	vec2 : 'v2',
 	vec3 : 'v3',
 	vec3 : 'v3',
 	vec4 : 'v4'
 	vec4 : 'v4'
 };
 };
 
 
-THREE.NodeBuilder.constructors = [
+THREE.BuilderNode.constructors = [
 	'', 
 	'', 
 	'vec2', 
 	'vec2', 
 	'vec3', 
 	'vec3', 
 	'vec4'
 	'vec4'
 ];
 ];
 
 
-THREE.NodeBuilder.elements = [
+THREE.BuilderNode.elements = [
 	'x', 
 	'x', 
 	'y', 
 	'y', 
 	'z', 
 	'z', 

+ 12 - 12
examples/js/materials/nodes/NodeConst.js → examples/js/materials/nodes/ConstNode.js

@@ -2,9 +2,9 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeConst = function(name, useDefine) {
+THREE.ConstNode = function(name, useDefine) {
 	
 	
-	name = name || THREE.NodeConst.PI;
+	name = name || THREE.ConstNode.PI;
 	
 	
 	var rDeclaration = /^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=(.*?)\;/i;
 	var rDeclaration = /^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=(.*?)\;/i;
 	var type = 'fv1';
 	var type = 'fv1';
@@ -31,21 +31,21 @@ THREE.NodeConst = function(name, useDefine) {
 	
 	
 	this.name = name;
 	this.name = name;
 	
 	
-	THREE.NodeTemp.call( this, type );
+	THREE.TempNode.call( this, type );
 	
 	
 };
 };
 
 
-THREE.NodeConst.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeConst.prototype.constructor = THREE.NodeConst;
+THREE.ConstNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.ConstNode.prototype.constructor = THREE.ConstNode;
 
 
-THREE.NodeConst.PI = 'PI';
-THREE.NodeConst.PI2 = 'PI2';
-THREE.NodeConst.RECIPROCAL_PI = 'RECIPROCAL_PI';
-THREE.NodeConst.RECIPROCAL_PI2 = 'RECIPROCAL_PI2';
-THREE.NodeConst.LOG2 = 'LOG2';
-THREE.NodeConst.EPSILON = 'EPSILON';
+THREE.ConstNode.PI = 'PI';
+THREE.ConstNode.PI2 = 'PI2';
+THREE.ConstNode.RECIPROCAL_PI = 'RECIPROCAL_PI';
+THREE.ConstNode.RECIPROCAL_PI2 = 'RECIPROCAL_PI2';
+THREE.ConstNode.LOG2 = 'LOG2';
+THREE.ConstNode.EPSILON = 'EPSILON';
 
 
-THREE.NodeConst.prototype.generate = function( builder, output ) {
+THREE.ConstNode.prototype.generate = function( builder, output ) {
 	
 	
 	return builder.format( this.name, this.getType( builder ), output );
 	return builder.format( this.name, this.getType( builder ), output );
 
 

+ 8 - 8
examples/js/materials/nodes/NodeFunctionCall.js → examples/js/materials/nodes/FunctionCallNode.js

@@ -2,37 +2,37 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeFunctionCall = function( value ) {
+THREE.FunctionCallNode = function( value ) {
 	
 	
-	THREE.NodeTemp.call( this );
+	THREE.TempNode.call( this );
 	
 	
 	this.setFunction( value );
 	this.setFunction( value );
 	
 	
 };
 };
 
 
-THREE.NodeFunctionCall.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeFunctionCall.prototype.constructor = THREE.NodeFunctionCall;
+THREE.FunctionCallNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.FunctionCallNode.prototype.constructor = THREE.FunctionCallNode;
 
 
-THREE.NodeFunctionCall.prototype.setFunction = function(val) {
+THREE.FunctionCallNode.prototype.setFunction = function(val) {
 	
 	
 	this.input = [];
 	this.input = [];
 	this.value = val;
 	this.value = val;
 	
 	
 };
 };
 
 
-THREE.NodeFunctionCall.prototype.getFunction = function() {
+THREE.FunctionCallNode.prototype.getFunction = function() {
 	
 	
 	return this.value;
 	return this.value;
 	
 	
 };
 };
 
 
-THREE.NodeFunctionCall.prototype.getType = function( builder ) {
+THREE.FunctionCallNode.prototype.getType = function( builder ) {
 	
 	
 	return this.value.getType( builder );
 	return this.value.getType( builder );
 	
 	
 };
 };
 
 
-THREE.NodeFunctionCall.prototype.generate = function( builder, output ) {
+THREE.FunctionCallNode.prototype.generate = function( builder, output ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	
 	

+ 21 - 21
examples/js/materials/nodes/NodeFunction.js → examples/js/materials/nodes/FunctionNode.js

@@ -3,41 +3,41 @@
  * @thanks bhouston / https://clara.io/
  * @thanks bhouston / https://clara.io/
  */
  */
 
 
-THREE.NodeFunction = function( src, includes, extensions ) {
+THREE.FunctionNode = function( src, includes, extensions ) {
 	
 	
-	THREE.NodeGL.call( this );
+	THREE.GLNode.call( this );
 	
 	
 	this.parse( src || '', includes, extensions );
 	this.parse( src || '', includes, extensions );
 	
 	
 };
 };
 
 
-THREE.NodeFunction.prototype = Object.create( THREE.NodeGL.prototype );
-THREE.NodeFunction.prototype.constructor = THREE.NodeFunction;
+THREE.FunctionNode.prototype = Object.create( THREE.GLNode.prototype );
+THREE.FunctionNode.prototype.constructor = THREE.FunctionNode;
 
 
-THREE.NodeFunction.prototype.parseReference = function( name ) {
+THREE.FunctionNode.prototype.parseReference = function( name ) {
 	
 	
 	switch(name) {
 	switch(name) {
-		case 'uv': return new THREE.NodeUV().name;
-		case 'uv2': return new THREE.NodeUV(1).name;
-		case 'position': return new THREE.NodePosition().name;
-		case 'worldPosition': return new THREE.NodePosition( THREE.NodePosition.WORLD ).name;
-		case 'normal': return new THREE.NodeNormal().name;
-		case 'normalPosition': return new THREE.NodeNormal( THREE.NodeNormal.WORLD ).name;
-		case 'viewPosition': return new THREE.NodePosition( THREE.NodeNormal.VIEW ).name;
-		case 'viewNormal': return new THREE.NodeNormal( THREE.NodeNormal.VIEW ).name;
+		case 'uv': return new THREE.UVNode().name;
+		case 'uv2': return new THREE.UVNode(1).name;
+		case 'position': return new THREE.PositionNode().name;
+		case 'worldPosition': return new THREE.PositionNode( THREE.PositionNode.WORLD ).name;
+		case 'normal': return new THREE.NormalNode().name;
+		case 'normalPosition': return new THREE.NormalNode( THREE.NormalNode.WORLD ).name;
+		case 'viewPosition': return new THREE.PositionNode( THREE.NormalNode.VIEW ).name;
+		case 'viewNormal': return new THREE.NormalNode( THREE.NormalNode.VIEW ).name;
 	}
 	}
 	
 	
 	return name;
 	return name;
 	
 	
 };
 };
 
 
-THREE.NodeFunction.prototype.getNodeType = function( builder, type ) {
+THREE.FunctionNode.prototype.getTypeNode = function( builder, type ) {
 
 
 	return builder.getType( type ) || type;
 	return builder.getType( type ) || type;
 
 
 };
 };
 
 
-THREE.NodeFunction.prototype.getInputByName = function( name ) {
+THREE.FunctionNode.prototype.getInputByName = function( name ) {
 	
 	
 	var i = this.input.length;
 	var i = this.input.length;
 	
 	
@@ -50,13 +50,13 @@ THREE.NodeFunction.prototype.getInputByName = function( name ) {
 	
 	
 };
 };
 
 
-THREE.NodeFunction.prototype.getType = function( builder ) {
+THREE.FunctionNode.prototype.getType = function( builder ) {
 	
 	
-	return this.getNodeType( builder, this.type );
+	return this.getTypeNode( builder, this.type );
 	
 	
 };
 };
 
 
-THREE.NodeFunction.prototype.getInclude = function( name ) {
+THREE.FunctionNode.prototype.getInclude = function( name ) {
 	
 	
 	var i = this.includes.length;
 	var i = this.includes.length;
 	
 	
@@ -71,7 +71,7 @@ THREE.NodeFunction.prototype.getInclude = function( name ) {
 	
 	
 };
 };
 
 
-THREE.NodeFunction.prototype.parse = function( src, includes, extensions ) {
+THREE.FunctionNode.prototype.parse = function( src, includes, extensions ) {
 	
 	
 	var rDeclaration = /^([a-z_0-9]+)\s([a-z_0-9]+)\s?\((.*?)\)/i;
 	var rDeclaration = /^([a-z_0-9]+)\s([a-z_0-9]+)\s?\((.*?)\)/i;
 	var rProperties = /[a-z_0-9]+/ig;
 	var rProperties = /[a-z_0-9]+/ig;
@@ -137,9 +137,9 @@ THREE.NodeFunction.prototype.parse = function( src, includes, extensions ) {
 				
 				
 			}
 			}
 			
 			
-			if (this.getInclude(reference) === undefined && THREE.NodeLib.contains(reference)) {
+			if (this.getInclude(reference) === undefined && THREE.LibNode.contains(reference)) {
 					
 					
-				this.includes.push( THREE.NodeLib.get(reference) );
+				this.includes.push( THREE.LibNode.get(reference) );
 				
 				
 			}
 			}
 			
 			

+ 9 - 9
examples/js/materials/nodes/NodeGL.js → examples/js/materials/nodes/GLNode.js

@@ -2,7 +2,7 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeGL = function( type ) {
+THREE.GLNode = function( type ) {
 	
 	
 	this.uuid = THREE.Math.generateUUID();
 	this.uuid = THREE.Math.generateUUID();
 	
 	
@@ -13,7 +13,7 @@ THREE.NodeGL = function( type ) {
 	
 	
 };
 };
 
 
-THREE.NodeGL.prototype.verify = function( builder ) {
+THREE.GLNode.prototype.verify = function( builder ) {
 	
 	
 	builder.isVerify = true;
 	builder.isVerify = true;
 	
 	
@@ -30,7 +30,7 @@ THREE.NodeGL.prototype.verify = function( builder ) {
 
 
 };
 };
 
 
-THREE.NodeGL.prototype.verifyAndBuildCode = function( builder, output, cache ) {
+THREE.GLNode.prototype.verifyAndBuildCode = function( builder, output, cache ) {
 	
 	
 	this.verify( builder.setCache(cache) );
 	this.verify( builder.setCache(cache) );
 	
 	
@@ -38,7 +38,7 @@ THREE.NodeGL.prototype.verifyAndBuildCode = function( builder, output, cache ) {
 	
 	
 };
 };
 
 
-THREE.NodeGL.prototype.buildCode = function( builder, output, uuid ) {
+THREE.GLNode.prototype.buildCode = function( builder, output, uuid ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	var data = { result : this.build( builder, output, uuid ) };
 	var data = { result : this.build( builder, output, uuid ) };
@@ -52,7 +52,7 @@ THREE.NodeGL.prototype.buildCode = function( builder, output, uuid ) {
 
 
 };
 };
 
 
-THREE.NodeGL.prototype.verifyNodeDeps = function( builder, data, output ) {
+THREE.GLNode.prototype.verifyDepsNode = function( builder, data, output ) {
 	
 	
 	data.deps = (data.deps || 0) + 1;
 	data.deps = (data.deps || 0) + 1;
 	
 	
@@ -67,12 +67,12 @@ THREE.NodeGL.prototype.verifyNodeDeps = function( builder, data, output ) {
 
 
 };
 };
 
 
-THREE.NodeGL.prototype.build = function( builder, output, uuid ) {
+THREE.GLNode.prototype.build = function( builder, output, uuid ) {
 
 
 	var material = builder.material;
 	var material = builder.material;
-	var data = material.getNodeData( uuid || this.uuid );
+	var data = material.getDataNode( uuid || this.uuid );
 	
 	
-	if (builder.isShader('verify')) this.verifyNodeDeps( builder, data, output );
+	if (builder.isShader('verify')) this.verifyDepsNode( builder, data, output );
 	
 	
 	if (this.allow[builder.shader] === false) {
 	if (this.allow[builder.shader] === false) {
 		throw new Error( 'Shader ' + shader + ' is not compatible with this node.' );
 		throw new Error( 'Shader ' + shader + ' is not compatible with this node.' );
@@ -87,7 +87,7 @@ THREE.NodeGL.prototype.build = function( builder, output, uuid ) {
 	
 	
 };
 };
 
 
-THREE.NodeGL.prototype.getType = function( builder ) {
+THREE.GLNode.prototype.getType = function( builder ) {
 
 
 	return this.type;
 	return this.type;
 	
 	

+ 6 - 6
examples/js/materials/nodes/NodeInput.js → examples/js/materials/nodes/InputNode.js

@@ -2,23 +2,23 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeInput = function(type, params) {
+THREE.InputNode = function(type, params) {
 	
 	
-	THREE.NodeTemp.call( this, type, params );
+	THREE.TempNode.call( this, type, params );
 	
 	
 };
 };
 
 
-THREE.NodeInput.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeInput.prototype.constructor = THREE.NodeInput;
+THREE.InputNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.InputNode.prototype.constructor = THREE.InputNode;
 
 
-THREE.NodeInput.prototype.generate = function( builder, output, uuid, type ) {
+THREE.InputNode.prototype.generate = function( builder, output, uuid, type ) {
 
 
 	var material = builder.material;
 	var material = builder.material;
 
 
 	uuid = builder.getUuid( uuid || this.uuid );
 	uuid = builder.getUuid( uuid || this.uuid );
 	type = type || this.type;
 	type = type || this.type;
 	
 	
-	var data = material.getNodeData( uuid );
+	var data = material.getDataNode( uuid );
 	
 	
 	if (builder.isShader('vertex')) {
 	if (builder.isShader('vertex')) {
 	
 	

+ 6 - 6
examples/js/materials/nodes/NodeLib.js → examples/js/materials/nodes/LibNode.js

@@ -2,7 +2,7 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeLib = {
+THREE.LibNode = {
 	nodes:{},
 	nodes:{},
 	add:function(node) {
 	add:function(node) {
 		this.nodes[node.name] = node;
 		this.nodes[node.name] = node;
@@ -22,13 +22,13 @@ THREE.NodeLib = {
 //	Luma
 //	Luma
 //
 //
 
 
-THREE.NodeLib.add(new THREE.NodeConst("vec3 LUMA = vec3(0.2125, 0.7154, 0.0721);") );
+THREE.LibNode.add(new THREE.ConstNode("vec3 LUMA = vec3(0.2125, 0.7154, 0.0721);") );
 
 
 //
 //
 //	DepthColor
 //	DepthColor
 //
 //
 			
 			
-THREE.NodeLib.add(new THREE.NodeFunction([
+THREE.LibNode.add(new THREE.FunctionNode([
 "float depthcolor( float mNear, float mFar ) {",
 "float depthcolor( float mNear, float mFar ) {",
 
 
 	"#ifdef USE_LOGDEPTHBUF_EXT",
 	"#ifdef USE_LOGDEPTHBUF_EXT",
@@ -45,7 +45,7 @@ THREE.NodeLib.add(new THREE.NodeFunction([
 //	NormalMap
 //	NormalMap
 //
 //
 			
 			
-THREE.NodeLib.add(new THREE.NodeFunction([
+THREE.LibNode.add(new THREE.FunctionNode([
 // Per-Pixel Tangent Space Normal Mapping
 // Per-Pixel Tangent Space Normal Mapping
 // http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html
 // http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html
 "vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 map, vec2 mUv, float scale ) {",
 "vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 map, vec2 mUv, float scale ) {",
@@ -67,7 +67,7 @@ THREE.NodeLib.add(new THREE.NodeFunction([
 //	Saturation
 //	Saturation
 //
 //
 
 
-THREE.NodeLib.add(new THREE.NodeFunction([
+THREE.LibNode.add(new THREE.FunctionNode([
 // Algorithm from Chapter 16 of OpenGL Shading Language
 // Algorithm from Chapter 16 of OpenGL Shading Language
 "vec3 saturation_rgb(vec3 rgb, float adjustment) {",
 "vec3 saturation_rgb(vec3 rgb, float adjustment) {",
 	"vec3 intensity = vec3(dot(rgb, LUMA));",
 	"vec3 intensity = vec3(dot(rgb, LUMA));",
@@ -79,7 +79,7 @@ THREE.NodeLib.add(new THREE.NodeFunction([
 //	Luminance
 //	Luminance
 //
 //
 
 
-THREE.NodeLib.add(new THREE.NodeFunction([
+THREE.LibNode.add(new THREE.FunctionNode([
 // Algorithm from Chapter 10 of Graphics Shaders.
 // Algorithm from Chapter 10 of Graphics Shaders.
 "float luminance_rgb(vec3 rgb) {",
 "float luminance_rgb(vec3 rgb) {",
 	"return dot(rgb, LUMA);",
 	"return dot(rgb, LUMA);",

+ 35 - 35
examples/js/materials/nodes/NodeMaterial.js → examples/js/materials/nodes/MaterialNode.js

@@ -2,19 +2,19 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeMaterial = function( vertex, fragment ) {
+THREE.MaterialNode = function( vertex, fragment ) {
 	
 	
 	THREE.ShaderMaterial.call( this );
 	THREE.ShaderMaterial.call( this );
 	
 	
-	this.vertex = vertex || new THREE.NodeRaw( new THREE.NodePosition( THREE.NodePosition.PROJECTION ) );
-	this.fragment = fragment || new THREE.NodeRaw( new THREE.NodeColor( 0xFF0000 ) );
+	this.vertex = vertex || new THREE.RawNode( new THREE.PositionNode( THREE.PositionNode.PROJECTION ) );
+	this.fragment = fragment || new THREE.RawNode( new THREE.ColorNode( 0xFF0000 ) );
 	
 	
 };
 };
 
 
-THREE.NodeMaterial.prototype = Object.create( THREE.ShaderMaterial.prototype );
-THREE.NodeMaterial.prototype.constructor = THREE.NodeMaterial;
+THREE.MaterialNode.prototype = Object.create( THREE.ShaderMaterial.prototype );
+THREE.MaterialNode.prototype.constructor = THREE.MaterialNode;
 
 
-THREE.NodeMaterial.Type = {
+THREE.MaterialNode.Type = {
 	t : 'sampler2D',
 	t : 'sampler2D',
 	tc : 'samplerCube',
 	tc : 'samplerCube',
 	bv1 : 'bool',
 	bv1 : 'bool',
@@ -26,7 +26,7 @@ THREE.NodeMaterial.Type = {
 	v4 : 'vec4'
 	v4 : 'vec4'
 };
 };
 
 
-THREE.NodeMaterial.GetShortcuts = function( prop, name ) {
+THREE.MaterialNode.GetShortcuts = function( prop, name ) {
 	
 	
 	return {
 	return {
 		get: function () { return this[prop][name]; },
 		get: function () { return this[prop][name]; },
@@ -35,7 +35,7 @@ THREE.NodeMaterial.GetShortcuts = function( prop, name ) {
 
 
 };
 };
 
 
-THREE.NodeMaterial.Shortcuts = function( proto, prop, list ) {
+THREE.MaterialNode.Shortcuts = function( proto, prop, list ) {
 	
 	
 	var shortcuts = {};
 	var shortcuts = {};
 	
 	
@@ -51,7 +51,7 @@ THREE.NodeMaterial.Shortcuts = function( proto, prop, list ) {
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.updateAnimation = function( delta ) {
+THREE.MaterialNode.prototype.updateAnimation = function( delta ) {
 	
 	
 	for(var i = 0; i < this.requestUpdate.length; ++i) {
 	for(var i = 0; i < this.requestUpdate.length; ++i) {
 
 
@@ -61,7 +61,7 @@ THREE.NodeMaterial.prototype.updateAnimation = function( delta ) {
 	
 	
 };
 };
 
 
-THREE.NodeMaterial.prototype.build = function() {
+THREE.MaterialNode.prototype.build = function() {
 	
 	
 	var vertex, fragment;
 	var vertex, fragment;
 	
 	
@@ -102,7 +102,7 @@ THREE.NodeMaterial.prototype.build = function() {
 	this.vertexNode = '';
 	this.vertexNode = '';
 	this.fragmentNode = '';
 	this.fragmentNode = '';
 	
 	
-	var builder = new THREE.NodeBuilder(this);
+	var builder = new THREE.BuilderNode(this);
 	
 	
 	vertex = this.vertex.build( builder.setShader('vertex'), 'v4' );
 	vertex = this.vertex.build( builder.setShader('vertex'), 'v4' );
 	fragment = this.fragment.build( builder.setShader('fragment'), 'v4' );
 	fragment = this.fragment.build( builder.setShader('fragment'), 'v4' );
@@ -214,19 +214,19 @@ THREE.NodeMaterial.prototype.build = function() {
 	return this;
 	return this;
 };
 };
 
 
-THREE.NodeMaterial.prototype.define = function(name, value) {
+THREE.MaterialNode.prototype.define = function(name, value) {
 
 
 	this.defines[name] = value == undefined ? 1 : value;
 	this.defines[name] = value == undefined ? 1 : value;
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.isDefined = function(name) {
+THREE.MaterialNode.prototype.isDefined = function(name) {
 
 
 	return this.defines[name] != undefined;
 	return this.defines[name] != undefined;
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.mergeUniform = function( uniforms ) {
+THREE.MaterialNode.prototype.mergeUniform = function( uniforms ) {
 	
 	
 	for (var name in uniforms) {
 	for (var name in uniforms) {
 		
 		
@@ -236,7 +236,7 @@ THREE.NodeMaterial.prototype.mergeUniform = function( uniforms ) {
 	
 	
 };
 };
 
 
-THREE.NodeMaterial.prototype.createUniform = function( value, type, needsUpdate ) {
+THREE.MaterialNode.prototype.createUniform = function( value, type, needsUpdate ) {
 	
 	
 	var index = this.uniformList.length;
 	var index = this.uniformList.length;
 	
 	
@@ -253,7 +253,7 @@ THREE.NodeMaterial.prototype.createUniform = function( value, type, needsUpdate
 	
 	
 };
 };
 
 
-THREE.NodeMaterial.prototype.getVertexTemp = function( uuid, type ) {
+THREE.MaterialNode.prototype.getVertexTemp = function( uuid, type ) {
 	
 	
 	if (!this.vertexTemps[ uuid ]) {
 	if (!this.vertexTemps[ uuid ]) {
 		
 		
@@ -270,7 +270,7 @@ THREE.NodeMaterial.prototype.getVertexTemp = function( uuid, type ) {
 	
 	
 };
 };
 
 
-THREE.NodeMaterial.prototype.getIncludes = function( incs ) {
+THREE.MaterialNode.prototype.getIncludes = function( incs ) {
 	
 	
 	function sortByPosition(a, b){
 	function sortByPosition(a, b){
 		return b.deps - a.deps;
 		return b.deps - a.deps;
@@ -293,7 +293,7 @@ THREE.NodeMaterial.prototype.getIncludes = function( incs ) {
 	}
 	}
 }();
 }();
 
 
-THREE.NodeMaterial.prototype.getFragmentTemp = function( uuid, type ) {
+THREE.MaterialNode.prototype.getFragmentTemp = function( uuid, type ) {
 	
 	
 	if (!this.fragmentTemps[ uuid ]) {
 	if (!this.fragmentTemps[ uuid ]) {
 		
 		
@@ -310,37 +310,37 @@ THREE.NodeMaterial.prototype.getFragmentTemp = function( uuid, type ) {
 	
 	
 };
 };
 
 
-THREE.NodeMaterial.prototype.addVertexPars = function( code ) {
+THREE.MaterialNode.prototype.addVertexPars = function( code ) {
 
 
 	this.vertexPars += code + '\n';
 	this.vertexPars += code + '\n';
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.addFragmentPars = function( code ) {
+THREE.MaterialNode.prototype.addFragmentPars = function( code ) {
 
 
 	this.fragmentPars += code + '\n';
 	this.fragmentPars += code + '\n';
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.addVertexCode = function( code ) {
+THREE.MaterialNode.prototype.addVertexCode = function( code ) {
 
 
 	this.vertexCode += code + '\n';
 	this.vertexCode += code + '\n';
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.addFragmentCode = function( code ) {
+THREE.MaterialNode.prototype.addFragmentCode = function( code ) {
 
 
 	this.fragmentCode += code + '\n';
 	this.fragmentCode += code + '\n';
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.addVertexNode = function( code ) {
+THREE.MaterialNode.prototype.addVertexNode = function( code ) {
 
 
 	this.vertexNode += code + '\n';
 	this.vertexNode += code + '\n';
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.clearVertexNode = function() {
+THREE.MaterialNode.prototype.clearVertexNode = function() {
 
 
 	var code = this.fragmentNode;
 	var code = this.fragmentNode;
 	
 	
@@ -350,13 +350,13 @@ THREE.NodeMaterial.prototype.clearVertexNode = function() {
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.addFragmentNode = function( code ) {
+THREE.MaterialNode.prototype.addFragmentNode = function( code ) {
 
 
 	this.fragmentNode += code + '\n';
 	this.fragmentNode += code + '\n';
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.clearFragmentNode = function() {
+THREE.MaterialNode.prototype.clearFragmentNode = function() {
 
 
 	var code = this.fragmentNode;
 	var code = this.fragmentNode;
 	
 	
@@ -366,7 +366,7 @@ THREE.NodeMaterial.prototype.clearFragmentNode = function() {
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.getCodePars = function( pars, prefix ) {
+THREE.MaterialNode.prototype.getCodePars = function( pars, prefix ) {
 
 
 	prefix = prefix || '';
 	prefix = prefix || '';
 
 
@@ -380,7 +380,7 @@ THREE.NodeMaterial.prototype.getCodePars = function( pars, prefix ) {
 		
 		
 		if (parsType == 't' && parsValue instanceof THREE.CubeTexture) parsType = 'tc';
 		if (parsType == 't' && parsValue instanceof THREE.CubeTexture) parsType = 'tc';
 		
 		
-		var type = THREE.NodeMaterial.Type[ parsType ];
+		var type = THREE.MaterialNode.Type[ parsType ];
 		
 		
 		if (type == undefined) throw new Error( "Node pars " + parsType + " not found." );
 		if (type == undefined) throw new Error( "Node pars " + parsType + " not found." );
 		
 		
@@ -391,7 +391,7 @@ THREE.NodeMaterial.prototype.getCodePars = function( pars, prefix ) {
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.getVertexUniform = function( value, type, needsUpdate ) {
+THREE.MaterialNode.prototype.getVertexUniform = function( value, type, needsUpdate ) {
 
 
 	var uniform = this.createUniform( value, type, needsUpdate );
 	var uniform = this.createUniform( value, type, needsUpdate );
 	
 	
@@ -404,7 +404,7 @@ THREE.NodeMaterial.prototype.getVertexUniform = function( value, type, needsUpda
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.getFragmentUniform = function( value, type, needsUpdate ) {
+THREE.MaterialNode.prototype.getFragmentUniform = function( value, type, needsUpdate ) {
 
 
 	var uniform = this.createUniform( value, type, needsUpdate );
 	var uniform = this.createUniform( value, type, needsUpdate );
 	
 	
@@ -417,19 +417,19 @@ THREE.NodeMaterial.prototype.getFragmentUniform = function( value, type, needsUp
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.getNodeData = function( uuid ) {
+THREE.MaterialNode.prototype.getDataNode = function( uuid ) {
 
 
 	return this.nodeData[uuid] = this.nodeData[uuid] || {};
 	return this.nodeData[uuid] = this.nodeData[uuid] || {};
 
 
 };
 };
 
 
-THREE.NodeMaterial.prototype.include = function( shader, node ) {
+THREE.MaterialNode.prototype.include = function( shader, node ) {
 	
 	
 	var includes;
 	var includes;
 	
 	
-	node = typeof node === 'string' ? THREE.NodeLib.get(node) : node;
+	node = typeof node === 'string' ? THREE.LibNode.get(node) : node;
 	
 	
-	if (node instanceof THREE.NodeFunction) {
+	if (node instanceof THREE.FunctionNode) {
 	
 	
 		for (var i = 0; i < node.includes.length; i++) {
 		for (var i = 0; i < node.includes.length; i++) {
 			
 			
@@ -440,7 +440,7 @@ THREE.NodeMaterial.prototype.include = function( shader, node ) {
 		includes = this.functions[shader] = this.functions[shader] || [];
 		includes = this.functions[shader] = this.functions[shader] || [];
 		
 		
 	}
 	}
-	else if (node instanceof THREE.NodeConst) {
+	else if (node instanceof THREE.ConstNode) {
 		
 		
 		includes = this.consts[shader] = this.consts[shader] || [];
 		includes = this.consts[shader] = this.consts[shader] || [];
 	
 	

+ 5 - 5
examples/js/materials/nodes/NodeRaw.js → examples/js/materials/nodes/RawNode.js

@@ -2,18 +2,18 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeRaw = function( value ) {
+THREE.RawNode = function( value ) {
 	
 	
-	THREE.NodeGL.call( this, 'v4' );
+	THREE.GLNode.call( this, 'v4' );
 	
 	
 	this.value = value;
 	this.value = value;
 	
 	
 };
 };
 
 
-THREE.NodeRaw.prototype = Object.create( THREE.NodeGL.prototype );
-THREE.NodeRaw.prototype.constructor = THREE.NodeRaw;
+THREE.RawNode.prototype = Object.create( THREE.GLNode.prototype );
+THREE.RawNode.prototype.constructor = THREE.RawNode;
 
 
-THREE.NodeGL.prototype.generate = function( builder ) {
+THREE.GLNode.prototype.generate = function( builder ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	
 	

+ 15 - 15
examples/js/materials/nodes/NodeTemp.js → examples/js/materials/nodes/TempNode.js

@@ -3,9 +3,9 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeTemp = function( type, params ) {
+THREE.TempNode = function( type, params ) {
 	
 	
-	THREE.NodeGL.call( this, type );
+	THREE.GLNode.call( this, type );
 	
 	
 	params = params || {};
 	params = params || {};
 	
 	
@@ -14,10 +14,10 @@ THREE.NodeTemp = function( type, params ) {
 	
 	
 };
 };
 
 
-THREE.NodeTemp.prototype = Object.create( THREE.NodeGL.prototype );
-THREE.NodeTemp.prototype.constructor = THREE.NodeTemp;
+THREE.TempNode.prototype = Object.create( THREE.GLNode.prototype );
+THREE.TempNode.prototype.constructor = THREE.TempNode;
 
 
-THREE.NodeTemp.prototype.build = function( builder, output, uuid ) {
+THREE.TempNode.prototype.build = function( builder, output, uuid ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	
 	
@@ -33,21 +33,21 @@ THREE.NodeTemp.prototype.build = function( builder, output, uuid ) {
 		
 		
 		uuid = builder.getUuid( uuid || this.constructor.uuid || this.uuid, !isUnique );
 		uuid = builder.getUuid( uuid || this.constructor.uuid || this.uuid, !isUnique );
 		
 		
-		var data = material.getNodeData( uuid );
+		var data = material.getDataNode( uuid );
 		
 		
 		if (builder.isShader('verify')) {
 		if (builder.isShader('verify')) {
 		
 		
 			if (data.deps || 0 > 0) {
 			if (data.deps || 0 > 0) {
-				this.verifyNodeDeps( builder, data, output );
+				this.verifyDepsNode( builder, data, output );
 				return '';
 				return '';
 			}
 			}
 			
 			
-			return THREE.NodeGL.prototype.build.call( this, builder, output, uuid );
+			return THREE.GLNode.prototype.build.call( this, builder, output, uuid );
 			
 			
 		}
 		}
 		else if (data.deps == 1) {
 		else if (data.deps == 1) {
 		
 		
-			return THREE.NodeGL.prototype.build.call( this, builder, output, uuid );
+			return THREE.GLNode.prototype.build.call( this, builder, output, uuid );
 			
 			
 		}
 		}
 		
 		
@@ -61,7 +61,7 @@ THREE.NodeTemp.prototype.build = function( builder, output, uuid ) {
 		}
 		}
 		else {
 		else {
 			
 			
-			name = THREE.NodeTemp.prototype.generate.call( this, builder, output, uuid, data.output );
+			name = THREE.TempNode.prototype.generate.call( this, builder, output, uuid, data.output );
 			
 			
 			var code = this.generate( builder, type, uuid );
 			var code = this.generate( builder, type, uuid );
 			
 			
@@ -81,19 +81,19 @@ THREE.NodeTemp.prototype.build = function( builder, output, uuid ) {
 	
 	
 };
 };
 
 
-THREE.NodeTemp.prototype.isShared = function() {
+THREE.TempNode.prototype.isShared = function() {
 	
 	
 	return this.shared;
 	return this.shared;
 	
 	
 };
 };
 
 
-THREE.NodeTemp.prototype.isUnique = function() {
+THREE.TempNode.prototype.isUnique = function() {
 	
 	
 	return this.unique;
 	return this.unique;
 	
 	
 };
 };
 
 
-THREE.NodeTemp.prototype.getTemp = function( builder, uuid ) {
+THREE.TempNode.prototype.getTemp = function( builder, uuid ) {
 	
 	
 	uuid = uuid || this.uuid;
 	uuid = uuid || this.uuid;
 	
 	
@@ -104,9 +104,9 @@ THREE.NodeTemp.prototype.getTemp = function( builder, uuid ) {
 
 
 };
 };
 
 
-THREE.NodeTemp.prototype.generate = function( builder, output, uuid, type ) {
+THREE.TempNode.prototype.generate = function( builder, output, uuid, type ) {
 	
 	
-	if (!this.isShared()) console.error("THREE.NodeTemp is not shared!");
+	if (!this.isShared()) console.error("THREE.TempNode is not shared!");
 	
 	
 	uuid = uuid || this.uuid;
 	uuid = uuid || this.uuid;
 	
 	

+ 106 - 0
examples/js/materials/nodes/accessors/CameraNode.js

@@ -0,0 +1,106 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.CameraNode = function( scope, camera ) {
+	
+	THREE.TempNode.call( this, 'v3' );
+	
+	this.scope = scope || THREE.CameraNode.POSITION;
+	this.camera = camera;
+	
+	switch(scope) {
+		
+		case THREE.CameraNode.DEPTH:
+			
+			this.near = new THREE.FloatNode( camera ? camera.near : 1);
+			this.far = new THREE.FloatNode(camera ? camera.far : 1200);
+			
+			break;
+	
+	}
+	
+	this.requestUpdate = this.camera !== undefined;
+	
+};
+
+THREE.CameraNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.CameraNode.prototype.constructor = THREE.CameraNode;
+
+THREE.CameraNode.POSITION = 'position';
+THREE.CameraNode.DEPTH = 'depth';
+
+THREE.CameraNode.prototype.getType = function( builder ) {
+	
+	switch(this.scope) {
+		case THREE.CameraNode.DEPTH:
+			return 'fv1';
+	}
+	
+	return this.type;
+	
+};
+
+THREE.CameraNode.prototype.isUnique = function( builder ) {
+	
+	switch(this.scope) {
+		case THREE.CameraNode.DEPTH:
+			return true;
+	}
+	
+	return false;
+	
+};
+
+THREE.CameraNode.prototype.isShared = function( builder ) {
+	
+	switch(this.scope) {
+		case THREE.CameraNode.POSITION:
+			return false;
+	}
+	
+	return true;
+	
+};
+
+THREE.CameraNode.prototype.generate = function( builder, output ) {
+	
+	var material = builder.material;
+	var result;
+	
+	switch (this.scope) {
+	
+		case THREE.CameraNode.POSITION:
+	
+			result = 'cameraPosition';
+			
+			break;
+			
+		case THREE.CameraNode.DEPTH:
+			
+			builder.include('depthcolor');
+			
+			result = 'depthcolor(' + this.near.build( builder, 'fv1' ) + ',' + this.far.build( builder, 'fv1' ) + ')';
+		
+			break;
+			
+	}
+	
+	return builder.format( result, this.getType( builder ), output );
+
+};
+
+THREE.CameraNode.prototype.updateAnimation = function( delta ) {
+	
+	switch(this.scope) {
+		
+		case THREE.CameraNode.DEPTH:
+		
+			this.near.number = camera.near;
+			this.far.number = camera.far;
+		
+			break;
+	
+	}
+	
+};

+ 31 - 0
examples/js/materials/nodes/accessors/ColorsNode.js

@@ -0,0 +1,31 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.ColorsNode = function( index ) {
+	
+	THREE.TempNode.call( this, 'v4', {share:false} );
+	
+	this.index = index || 0;
+	
+};
+
+THREE.ColorsNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.ColorsNode.prototype.constructor = THREE.ColorsNode;
+
+THREE.ColorsNode.vertexDict = ['color', 'color2'];
+THREE.ColorsNode.fragmentDict = ['vColor', 'vColor2'];
+
+THREE.ColorsNode.prototype.generate = function( builder, output ) {
+	
+	var material = builder.material;
+	var result;
+	
+	material.requestAttrib.color[this.index] = true; 
+	
+	if (builder.isShader('vertex')) result = THREE.ColorsNode.vertexDict[this.index];
+	else result = THREE.ColorsNode.fragmentDict[this.index];
+	
+	return builder.format( result, this.getType( builder ), output );
+
+};

+ 0 - 106
examples/js/materials/nodes/accessors/NodeCamera.js

@@ -1,106 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeCamera = function( scope, camera ) {
-	
-	THREE.NodeTemp.call( this, 'v3' );
-	
-	this.scope = scope || THREE.NodeCamera.POSITION;
-	this.camera = camera;
-	
-	switch(scope) {
-		
-		case THREE.NodeCamera.DEPTH:
-			
-			this.near = new THREE.NodeFloat( camera ? camera.near : 1);
-			this.far = new THREE.NodeFloat(camera ? camera.far : 1200);
-			
-			break;
-	
-	}
-	
-	this.requestUpdate = this.camera !== undefined;
-	
-};
-
-THREE.NodeCamera.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeCamera.prototype.constructor = THREE.NodeCamera;
-
-THREE.NodeCamera.POSITION = 'position';
-THREE.NodeCamera.DEPTH = 'depth';
-
-THREE.NodeCamera.prototype.getType = function( builder ) {
-	
-	switch(this.scope) {
-		case THREE.NodeCamera.DEPTH:
-			return 'fv1';
-	}
-	
-	return this.type;
-	
-};
-
-THREE.NodeCamera.prototype.isUnique = function( builder ) {
-	
-	switch(this.scope) {
-		case THREE.NodeCamera.DEPTH:
-			return true;
-	}
-	
-	return false;
-	
-};
-
-THREE.NodeCamera.prototype.isShared = function( builder ) {
-	
-	switch(this.scope) {
-		case THREE.NodeCamera.POSITION:
-			return false;
-	}
-	
-	return true;
-	
-};
-
-THREE.NodeCamera.prototype.generate = function( builder, output ) {
-	
-	var material = builder.material;
-	var result;
-	
-	switch (this.scope) {
-	
-		case THREE.NodeCamera.POSITION:
-	
-			result = 'cameraPosition';
-			
-			break;
-			
-		case THREE.NodeCamera.DEPTH:
-			
-			builder.include('depthcolor');
-			
-			result = 'depthcolor(' + this.near.build( builder, 'fv1' ) + ',' + this.far.build( builder, 'fv1' ) + ')';
-		
-			break;
-			
-	}
-	
-	return builder.format( result, this.getType( builder ), output );
-
-};
-
-THREE.NodeCamera.prototype.updateAnimation = function( delta ) {
-	
-	switch(this.scope) {
-		
-		case THREE.NodeCamera.DEPTH:
-		
-			this.near.number = camera.near;
-			this.far.number = camera.far;
-		
-			break;
-	
-	}
-	
-};

+ 0 - 31
examples/js/materials/nodes/accessors/NodeColors.js

@@ -1,31 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeColors = function( index ) {
-	
-	THREE.NodeTemp.call( this, 'v4', {share:false} );
-	
-	this.index = index || 0;
-	
-};
-
-THREE.NodeColors.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeColors.prototype.constructor = THREE.NodeColors;
-
-THREE.NodeColors.vertexDict = ['color', 'color2'];
-THREE.NodeColors.fragmentDict = ['vColor', 'vColor2'];
-
-THREE.NodeColors.prototype.generate = function( builder, output ) {
-	
-	var material = builder.material;
-	var result;
-	
-	material.requestAttrib.color[this.index] = true; 
-	
-	if (builder.isShader('vertex')) result = THREE.NodeColors.vertexDict[this.index];
-	else result = THREE.NodeColors.fragmentDict[this.index];
-	
-	return builder.format( result, this.getType( builder ), output );
-
-};

+ 0 - 31
examples/js/materials/nodes/accessors/NodeUV.js

@@ -1,31 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeUV = function( index ) {
-	
-	THREE.NodeTemp.call( this, 'v2', {shared:false} );
-	
-	this.index = index || 0;
-	
-};
-
-THREE.NodeUV.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeUV.prototype.constructor = THREE.NodeUV;
-
-THREE.NodeUV.vertexDict = ['uv', 'uv2'];
-THREE.NodeUV.fragmentDict = ['vUv', 'vUv2'];
-
-THREE.NodeUV.prototype.generate = function( builder, output ) {
-	
-	var material = builder.material;
-	var result;
-	
-	material.requestAttrib.uv[this.index] = true; 
-	
-	if (builder.isShader('vertex')) result = THREE.NodeUV.vertexDict[this.index];
-	else result = THREE.NodeUV.fragmentDict[this.index];
-	
-	return builder.format( result, this.getType( builder ), output );
-
-};

+ 14 - 14
examples/js/materials/nodes/accessors/NodeNormal.js → examples/js/materials/nodes/accessors/NormalNode.js

@@ -2,25 +2,25 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeNormal = function( scope ) {
+THREE.NormalNode = function( scope ) {
 	
 	
-	THREE.NodeTemp.call( this, 'v3' );
+	THREE.TempNode.call( this, 'v3' );
 	
 	
-	this.scope = scope || THREE.NodeNormal.LOCAL;
+	this.scope = scope || THREE.NormalNode.LOCAL;
 	
 	
 };
 };
 
 
-THREE.NodeNormal.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeNormal.prototype.constructor = THREE.NodeNormal;
+THREE.NormalNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.NormalNode.prototype.constructor = THREE.NormalNode;
 
 
-THREE.NodeNormal.LOCAL = 'local';
-THREE.NodeNormal.WORLD = 'world';
-THREE.NodeNormal.VIEW = 'view';
+THREE.NormalNode.LOCAL = 'local';
+THREE.NormalNode.WORLD = 'world';
+THREE.NormalNode.VIEW = 'view';
 
 
-THREE.NodeNormal.prototype.isShared = function( builder ) {
+THREE.NormalNode.prototype.isShared = function( builder ) {
 	
 	
 	switch(this.method) {
 	switch(this.method) {
-		case THREE.NodeNormal.WORLD:
+		case THREE.NormalNode.WORLD:
 			return true;
 			return true;
 	}
 	}
 	
 	
@@ -28,14 +28,14 @@ THREE.NodeNormal.prototype.isShared = function( builder ) {
 	
 	
 };
 };
 
 
-THREE.NodeNormal.prototype.generate = function( builder, output ) {
+THREE.NormalNode.prototype.generate = function( builder, output ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	var result;
 	var result;
 	
 	
 	switch (this.scope) {
 	switch (this.scope) {
 	
 	
-		case THREE.NodeNormal.LOCAL:
+		case THREE.NormalNode.LOCAL:
 	
 	
 			material.requestAttrib.normal = true;
 			material.requestAttrib.normal = true;
 	
 	
@@ -44,7 +44,7 @@ THREE.NodeNormal.prototype.generate = function( builder, output ) {
 			
 			
 			break;
 			break;
 			
 			
-		case THREE.NodeNormal.WORLD:
+		case THREE.NormalNode.WORLD:
 	
 	
 			material.requestAttrib.worldNormal = true;
 			material.requestAttrib.worldNormal = true;
 			
 			
@@ -53,7 +53,7 @@ THREE.NodeNormal.prototype.generate = function( builder, output ) {
 			
 			
 			break;
 			break;
 			
 			
-		case THREE.NodeNormal.VIEW:
+		case THREE.NormalNode.VIEW:
 	
 	
 			result = 'vNormal';
 			result = 'vNormal';
 			
 			

+ 19 - 19
examples/js/materials/nodes/accessors/NodePosition.js → examples/js/materials/nodes/accessors/PositionNode.js

@@ -2,26 +2,26 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodePosition = function( scope ) {
+THREE.PositionNode = function( scope ) {
 	
 	
-	THREE.NodeTemp.call( this, 'v3' );
+	THREE.TempNode.call( this, 'v3' );
 	
 	
-	this.scope = scope || THREE.NodePosition.LOCAL;
+	this.scope = scope || THREE.PositionNode.LOCAL;
 	
 	
 };
 };
 
 
-THREE.NodePosition.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodePosition.prototype.constructor = THREE.NodePosition;
+THREE.PositionNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.PositionNode.prototype.constructor = THREE.PositionNode;
 
 
-THREE.NodePosition.LOCAL = 'local';
-THREE.NodePosition.WORLD = 'world';
-THREE.NodePosition.VIEW = 'view';
-THREE.NodePosition.PROJECTION = 'projection';
+THREE.PositionNode.LOCAL = 'local';
+THREE.PositionNode.WORLD = 'world';
+THREE.PositionNode.VIEW = 'view';
+THREE.PositionNode.PROJECTION = 'projection';
 
 
-THREE.NodePosition.prototype.getType = function( builder ) {
+THREE.PositionNode.prototype.getType = function( builder ) {
 	
 	
 	switch(this.method) {
 	switch(this.method) {
-		case THREE.NodePosition.PROJECTION:
+		case THREE.PositionNode.PROJECTION:
 			return 'v4';
 			return 'v4';
 	}
 	}
 	
 	
@@ -29,11 +29,11 @@ THREE.NodePosition.prototype.getType = function( builder ) {
 	
 	
 };
 };
 
 
-THREE.NodePosition.prototype.isShared = function( builder ) {
+THREE.PositionNode.prototype.isShared = function( builder ) {
 	
 	
 	switch(this.method) {
 	switch(this.method) {
-		case THREE.NodePosition.LOCAL:
-		case THREE.NodePosition.WORLD:
+		case THREE.PositionNode.LOCAL:
+		case THREE.PositionNode.WORLD:
 			return false;
 			return false;
 	}
 	}
 	
 	
@@ -41,14 +41,14 @@ THREE.NodePosition.prototype.isShared = function( builder ) {
 	
 	
 };
 };
 
 
-THREE.NodePosition.prototype.generate = function( builder, output ) {
+THREE.PositionNode.prototype.generate = function( builder, output ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	var result;
 	var result;
 	
 	
 	switch (this.scope) {
 	switch (this.scope) {
 	
 	
-		case THREE.NodePosition.LOCAL:
+		case THREE.PositionNode.LOCAL:
 	
 	
 			material.requestAttrib.position = true;
 			material.requestAttrib.position = true;
 			
 			
@@ -57,7 +57,7 @@ THREE.NodePosition.prototype.generate = function( builder, output ) {
 			
 			
 			break;
 			break;
 			
 			
-		case THREE.NodePosition.WORLD:
+		case THREE.PositionNode.WORLD:
 	
 	
 			material.requestAttrib.worldPosition = true;
 			material.requestAttrib.worldPosition = true;
 			
 			
@@ -66,14 +66,14 @@ THREE.NodePosition.prototype.generate = function( builder, output ) {
 			
 			
 			break;
 			break;
 			
 			
-		case THREE.NodePosition.VIEW:
+		case THREE.PositionNode.VIEW:
 	
 	
 			if (builder.isShader('vertex')) result = '-mvPosition.xyz';
 			if (builder.isShader('vertex')) result = '-mvPosition.xyz';
 			else result = 'vViewPosition';
 			else result = 'vViewPosition';
 			
 			
 			break;
 			break;
 			
 			
-		case THREE.NodePosition.PROJECTION:
+		case THREE.PositionNode.PROJECTION:
 	
 	
 			if (builder.isShader('vertex')) result = '(projectionMatrix * modelViewMatrix * vec4( position, 1.0 ))';
 			if (builder.isShader('vertex')) result = '(projectionMatrix * modelViewMatrix * vec4( position, 1.0 ))';
 			else result = 'vec4( 0.0 )';
 			else result = 'vec4( 0.0 )';

+ 7 - 7
examples/js/materials/nodes/accessors/NodeReflect.js → examples/js/materials/nodes/accessors/ReflectNode.js

@@ -2,18 +2,18 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeReflect = function() {
+THREE.ReflectNode = function() {
 	
 	
-	THREE.NodeTemp.call( this, 'v3', {unique:true} );
+	THREE.TempNode.call( this, 'v3', {unique:true} );
 	
 	
-	this.worldPosition = new THREE.NodePosition( THREE.NodePosition.WORLD );
+	this.worldPosition = new THREE.PositionNode( THREE.PositionNode.WORLD );
 	
 	
 };
 };
 
 
-THREE.NodeReflect.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeReflect.prototype.constructor = THREE.NodeReflect;
+THREE.ReflectNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.ReflectNode.prototype.constructor = THREE.ReflectNode;
 
 
-THREE.NodeReflect.prototype.generate = function( builder, output ) {
+THREE.ReflectNode.prototype.generate = function( builder, output ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	
 	
@@ -30,7 +30,7 @@ THREE.NodeReflect.prototype.generate = function( builder, output ) {
 	}
 	}
 	else {
 	else {
 		
 		
-		console.warn("THREE.NodeReflect is not compatible with " + builder.shader + " shader");
+		console.warn("THREE.ReflectNode is not compatible with " + builder.shader + " shader");
 		
 		
 		return builder.format( 'vec3( 0.0 )', this.type, output );
 		return builder.format( 'vec3( 0.0 )', this.type, output );
 	
 	

+ 31 - 0
examples/js/materials/nodes/accessors/UVNode.js

@@ -0,0 +1,31 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.UVNode = function( index ) {
+	
+	THREE.TempNode.call( this, 'v2', {shared:false} );
+	
+	this.index = index || 0;
+	
+};
+
+THREE.UVNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.UVNode.prototype.constructor = THREE.UVNode;
+
+THREE.UVNode.vertexDict = ['uv', 'uv2'];
+THREE.UVNode.fragmentDict = ['vUv', 'vUv2'];
+
+THREE.UVNode.prototype.generate = function( builder, output ) {
+	
+	var material = builder.material;
+	var result;
+	
+	material.requestAttrib.uv[this.index] = true; 
+	
+	if (builder.isShader('vertex')) result = THREE.UVNode.vertexDict[this.index];
+	else result = THREE.UVNode.fragmentDict[this.index];
+	
+	return builder.format( result, this.getType( builder ), output );
+
+};

+ 5 - 5
examples/js/materials/nodes/extras/NodeVelocity.js → examples/js/materials/nodes/extras/VelocityNode.js

@@ -2,9 +2,9 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeVelocity = function( target, params ) {
+THREE.VelocityNode = function( target, params ) {
 	
 	
-	THREE.NodeVector3.call( this );
+	THREE.Vector3Node.call( this );
 	
 	
 	this.requestUpdate = true;
 	this.requestUpdate = true;
 	
 	
@@ -18,10 +18,10 @@ THREE.NodeVelocity = function( target, params ) {
 	
 	
 };
 };
 
 
-THREE.NodeVelocity.prototype = Object.create( THREE.NodeVector3.prototype );
-THREE.NodeVelocity.prototype.constructor = THREE.NodeVelocity;
+THREE.VelocityNode.prototype = Object.create( THREE.Vector3Node.prototype );
+THREE.VelocityNode.prototype.constructor = THREE.VelocityNode;
 
 
-THREE.NodeVelocity.prototype.updateAnimation = function( delta ) {
+THREE.VelocityNode.prototype.updateAnimation = function( delta ) {
 	
 	
 	this.velocity.subVectors( this.target.position, this.position );
 	this.velocity.subVectors( this.target.position, this.position );
 	this.position.copy( this.target.position );
 	this.position.copy( this.target.position );

+ 16 - 0
examples/js/materials/nodes/inputs/ColorNode.js

@@ -0,0 +1,16 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.ColorNode = function( color ) {
+	
+	THREE.InputNode.call( this, 'c', {share:false} );
+	
+	this.value = new THREE.Color( color || 0 );
+	
+};
+
+THREE.ColorNode.prototype = Object.create( THREE.InputNode.prototype );
+THREE.ColorNode.prototype.constructor = THREE.ColorNode;
+
+THREE.MaterialNode.Shortcuts( THREE.ColorNode.prototype, 'value', [ 'r', 'g', 'b' ] );

+ 7 - 7
examples/js/materials/nodes/inputs/NodeCubeTexture.js → examples/js/materials/nodes/inputs/CubeTextureNode.js

@@ -2,22 +2,22 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeCubeTexture = function( value, coord, bias ) {
+THREE.CubeTextureNode = function( value, coord, bias ) {
 	
 	
-	THREE.NodeInput.call( this, 'v4' );
+	THREE.InputNode.call( this, 'v4' );
 
 
 	this.value = value;
 	this.value = value;
-	this.coord = coord || new THREE.NodeReflect();
+	this.coord = coord || new THREE.ReflectNode();
 	this.bias = bias;
 	this.bias = bias;
 	
 	
 };
 };
 
 
-THREE.NodeCubeTexture.prototype = Object.create( THREE.NodeInput.prototype );
-THREE.NodeCubeTexture.prototype.constructor = THREE.NodeCubeTexture;
+THREE.CubeTextureNode.prototype = Object.create( THREE.InputNode.prototype );
+THREE.CubeTextureNode.prototype.constructor = THREE.CubeTextureNode;
 
 
-THREE.NodeCubeTexture.prototype.generate = function( builder, output ) {
+THREE.CubeTextureNode.prototype.generate = function( builder, output ) {
 
 
-	var cubetex = THREE.NodeInput.prototype.generate.call( this, builder, output, this.value.uuid, 't' );
+	var cubetex = THREE.InputNode.prototype.generate.call( this, builder, output, this.value.uuid, 't' );
 	var coord = this.coord.build( builder, 'v3' );
 	var coord = this.coord.build( builder, 'v3' );
 	var bias = this.bias ? this.bias.build( builder, 'fv1' ) : undefined;;
 	var bias = this.bias ? this.bias.build( builder, 'fv1' ) : undefined;;
 	
 	

+ 21 - 0
examples/js/materials/nodes/inputs/FloatNode.js

@@ -0,0 +1,21 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.FloatNode = function( value ) {
+	
+	THREE.InputNode.call( this, 'fv1', {share:false} );
+	
+	this.value = [ value || 0 ];
+	
+};
+
+THREE.FloatNode.prototype = Object.create( THREE.InputNode.prototype );
+THREE.FloatNode.prototype.constructor = THREE.FloatNode;
+
+Object.defineProperties( THREE.FloatNode.prototype, {
+	number: {
+		get: function () { return this.value[0]; },
+		set: function ( val ) { this.value[0] = val; }
+	}
+});

+ 21 - 0
examples/js/materials/nodes/inputs/IntNode.js

@@ -0,0 +1,21 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.IntNode = function( value ) {
+	
+	THREE.InputNode.call( this, 'fv1', {share:false} );
+	
+	this.value = [ Math.floor(value || 0) ];
+	
+};
+
+THREE.IntNode.prototype = Object.create( THREE.InputNode.prototype );
+THREE.IntNode.prototype.constructor = THREE.IntNode;
+
+Object.defineProperties( THREE.IntNode.prototype, {
+	number: {
+		get: function () { return this.value[0]; },
+		set: function ( val ) { this.value[0] = Math.floor(val); }
+	}
+});

+ 0 - 16
examples/js/materials/nodes/inputs/NodeColor.js

@@ -1,16 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeColor = function( color ) {
-	
-	THREE.NodeInput.call( this, 'c', {share:false} );
-	
-	this.value = new THREE.Color( color || 0 );
-	
-};
-
-THREE.NodeColor.prototype = Object.create( THREE.NodeInput.prototype );
-THREE.NodeColor.prototype.constructor = THREE.NodeColor;
-
-THREE.NodeMaterial.Shortcuts( THREE.NodeColor.prototype, 'value', [ 'r', 'g', 'b' ] );

+ 0 - 21
examples/js/materials/nodes/inputs/NodeFloat.js

@@ -1,21 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeFloat = function( value ) {
-	
-	THREE.NodeInput.call( this, 'fv1', {share:false} );
-	
-	this.value = [ value || 0 ];
-	
-};
-
-THREE.NodeFloat.prototype = Object.create( THREE.NodeInput.prototype );
-THREE.NodeFloat.prototype.constructor = THREE.NodeFloat;
-
-Object.defineProperties( THREE.NodeFloat.prototype, {
-	number: {
-		get: function () { return this.value[0]; },
-		set: function ( val ) { this.value[0] = val; }
-	}
-});

+ 0 - 21
examples/js/materials/nodes/inputs/NodeInt.js

@@ -1,21 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeInt = function( value ) {
-	
-	THREE.NodeInput.call( this, 'fv1', {share:false} );
-	
-	this.value = [ Math.floor(value || 0) ];
-	
-};
-
-THREE.NodeInt.prototype = Object.create( THREE.NodeInput.prototype );
-THREE.NodeInt.prototype.constructor = THREE.NodeInt;
-
-Object.defineProperties( THREE.NodeInt.prototype, {
-	number: {
-		get: function () { return this.value[0]; },
-		set: function ( val ) { this.value[0] = Math.floor(val); }
-	}
-});

+ 0 - 16
examples/js/materials/nodes/inputs/NodeVector2.js

@@ -1,16 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeVector2 = function( x, y ) {
-	
-	THREE.NodeInput.call( this, 'v2', {share:false} );
-	
-	this.value = new THREE.Vector2( x, y );
-	
-};
-
-THREE.NodeVector2.prototype = Object.create( THREE.NodeInput.prototype );
-THREE.NodeVector2.prototype.constructor = THREE.NodeVector2;
-
-THREE.NodeMaterial.Shortcuts( THREE.NodeVector2.prototype, 'value', [ 'x', 'y' ] );

+ 0 - 17
examples/js/materials/nodes/inputs/NodeVector3.js

@@ -1,17 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeVector3 = function( x, y, z ) {
-	
-	THREE.NodeInput.call( this, 'v3', {share:false} );
-	
-	this.type = 'v3';
-	this.value = new THREE.Vector3( x, y, z );
-	
-};
-
-THREE.NodeVector3.prototype = Object.create( THREE.NodeInput.prototype );
-THREE.NodeVector3.prototype.constructor = THREE.NodeVector3;
-
-THREE.NodeMaterial.Shortcuts( THREE.NodeVector3.prototype, 'value', [ 'x', 'y', 'z' ] );

+ 0 - 16
examples/js/materials/nodes/inputs/NodeVector4.js

@@ -1,16 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeVector4 = function( x, y, z, w ) {
-	
-	THREE.NodeInput.call( this, 'v4', {share:false} );
-	
-	this.value = new THREE.Vector4( x, y, z, w );
-	
-};
-
-THREE.NodeVector4.prototype = Object.create( THREE.NodeInput.prototype );
-THREE.NodeVector4.prototype.constructor = THREE.NodeVector4;
-
-THREE.NodeMaterial.Shortcuts( THREE.NodeVector4.prototype, 'value', [ 'x', 'y', 'z', 'w' ] );

+ 7 - 7
examples/js/materials/nodes/inputs/NodeTexture.js → examples/js/materials/nodes/inputs/TextureNode.js

@@ -2,22 +2,22 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeTexture = function( value, coord, bias ) {
+THREE.TextureNode = function( value, coord, bias ) {
 	
 	
-	THREE.NodeInput.call( this, 'v4' );
+	THREE.InputNode.call( this, 'v4' );
 	
 	
 	this.value = value;
 	this.value = value;
-	this.coord = coord || new THREE.NodeUV();
+	this.coord = coord || new THREE.UVNode();
 	this.bias = bias;
 	this.bias = bias;
 	
 	
 };
 };
 
 
-THREE.NodeTexture.prototype = Object.create( THREE.NodeInput.prototype );
-THREE.NodeTexture.prototype.constructor = THREE.NodeTexture;
+THREE.TextureNode.prototype = Object.create( THREE.InputNode.prototype );
+THREE.TextureNode.prototype.constructor = THREE.TextureNode;
 
 
-THREE.NodeTexture.prototype.generate = function( builder, output ) {
+THREE.TextureNode.prototype.generate = function( builder, output ) {
 
 
-	var tex = THREE.NodeInput.prototype.generate.call( this, builder, output, this.value.uuid, 't' );
+	var tex = THREE.InputNode.prototype.generate.call( this, builder, output, this.value.uuid, 't' );
 	var coord = this.coord.build( builder, 'v2' );
 	var coord = this.coord.build( builder, 'v2' );
 	var bias = this.bias ? this.bias.build( builder, 'fv1' ) : undefined;
 	var bias = this.bias ? this.bias.build( builder, 'fv1' ) : undefined;
 	
 	

+ 16 - 0
examples/js/materials/nodes/inputs/Vector2Node.js

@@ -0,0 +1,16 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.Vector2Node = function( x, y ) {
+	
+	THREE.InputNode.call( this, 'v2', {share:false} );
+	
+	this.value = new THREE.Vector2( x, y );
+	
+};
+
+THREE.Vector2Node.prototype = Object.create( THREE.InputNode.prototype );
+THREE.Vector2Node.prototype.constructor = THREE.Vector2Node;
+
+THREE.MaterialNode.Shortcuts( THREE.Vector2Node.prototype, 'value', [ 'x', 'y' ] );

+ 17 - 0
examples/js/materials/nodes/inputs/Vector3Node.js

@@ -0,0 +1,17 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.Vector3Node = function( x, y, z ) {
+	
+	THREE.InputNode.call( this, 'v3', {share:false} );
+	
+	this.type = 'v3';
+	this.value = new THREE.Vector3( x, y, z );
+	
+};
+
+THREE.Vector3Node.prototype = Object.create( THREE.InputNode.prototype );
+THREE.Vector3Node.prototype.constructor = THREE.Vector3Node;
+
+THREE.MaterialNode.Shortcuts( THREE.Vector3Node.prototype, 'value', [ 'x', 'y', 'z' ] );

+ 16 - 0
examples/js/materials/nodes/inputs/Vector4Node.js

@@ -0,0 +1,16 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.Vector4Node = function( x, y, z, w ) {
+	
+	THREE.InputNode.call( this, 'v4', {share:false} );
+	
+	this.value = new THREE.Vector4( x, y, z, w );
+	
+};
+
+THREE.Vector4Node.prototype = Object.create( THREE.InputNode.prototype );
+THREE.Vector4Node.prototype.constructor = THREE.Vector4Node;
+
+THREE.MaterialNode.Shortcuts( THREE.Vector4Node.prototype, 'value', [ 'x', 'y', 'z', 'w' ] );

+ 0 - 17
examples/js/materials/nodes/interfaces/NodePhongMaterial.js

@@ -1,17 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodePhongMaterial = function() {
-	
-	this.node = new THREE.NodePhong();
-	
-	THREE.NodeMaterial.call( this, this.node, this.node );
-	
-};
-
-THREE.NodePhongMaterial.prototype = Object.create( THREE.NodeMaterial.prototype );
-THREE.NodePhongMaterial.prototype.constructor = THREE.NodePhongMaterial;
-
-THREE.NodeMaterial.Shortcuts( THREE.NodePhongMaterial.prototype, 'node', 
-[ 'color',  'alpha', 'specular', 'shininess', 'normal', 'normalScale', 'emissive', 'ambient', 'shadow', 'ao', 'environment', 'reflectivity', 'transform' ] );

+ 0 - 17
examples/js/materials/nodes/interfaces/NodeStandardMaterial.js

@@ -1,17 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeStandardMaterial = function() {
-	
-	this.node = new THREE.NodeStandard();
-	
-	THREE.NodeMaterial.call( this, this.node, this.node );
-	
-};
-
-THREE.NodeStandardMaterial.prototype = Object.create( THREE.NodeMaterial.prototype );
-THREE.NodeStandardMaterial.prototype.constructor = THREE.NodeStandardMaterial;
-
-THREE.NodeMaterial.Shortcuts( THREE.NodeStandardMaterial.prototype, 'node', 
-[ 'color',  'alpha', 'roughness', 'metalness', 'normal', 'normalScale', 'emissive', 'ambient', 'shadow', 'ao', 'environment', 'reflectivity', 'transform' ] );

+ 17 - 0
examples/js/materials/nodes/interfaces/PhongMaterialNode.js

@@ -0,0 +1,17 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.PhongMaterialNode = function() {
+	
+	this.node = new THREE.PhongNode();
+	
+	THREE.MaterialNode.call( this, this.node, this.node );
+	
+};
+
+THREE.PhongMaterialNode.prototype = Object.create( THREE.MaterialNode.prototype );
+THREE.PhongMaterialNode.prototype.constructor = THREE.PhongMaterialNode;
+
+THREE.MaterialNode.Shortcuts( THREE.PhongMaterialNode.prototype, 'node', 
+[ 'color',  'alpha', 'specular', 'shininess', 'normal', 'normalScale', 'emissive', 'ambient', 'shadow', 'ao', 'environment', 'reflectivity', 'transform' ] );

+ 10 - 10
examples/js/materials/nodes/interfaces/NodePhong.js → examples/js/materials/nodes/interfaces/PhongNode.js

@@ -2,20 +2,20 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodePhong = function() {
+THREE.PhongNode = function() {
 	
 	
-	THREE.NodeGL.call( this );
+	THREE.GLNode.call( this );
 	
 	
-	this.color = new THREE.NodeColor( 0xEEEEEE );
-	this.specular = new THREE.NodeColor( 0x111111 );
-	this.shininess = new THREE.NodeFloat( 30 );
+	this.color = new THREE.ColorNode( 0xEEEEEE );
+	this.specular = new THREE.ColorNode( 0x111111 );
+	this.shininess = new THREE.FloatNode( 30 );
 	
 	
 };
 };
 
 
-THREE.NodePhong.prototype = Object.create( THREE.NodeGL.prototype );
-THREE.NodePhong.prototype.constructor = THREE.NodePhong;
+THREE.PhongNode.prototype = Object.create( THREE.GLNode.prototype );
+THREE.PhongNode.prototype.constructor = THREE.PhongNode;
 
 
-THREE.NodePhong.prototype.build = function( builder ) {
+THREE.PhongNode.prototype.build = function( builder ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	var code;
 	var code;
@@ -160,7 +160,7 @@ THREE.NodePhong.prototype.build = function( builder ) {
 			shininess.code,
 			shininess.code,
 			"	float shininess = max(0.0001," + shininess.result + ");",
 			"	float shininess = max(0.0001," + shininess.result + ");",
 			
 			
-			"	float specularStrength = 1.0;" // Ignored in NodeMaterial ( replace to specular )
+			"	float specularStrength = 1.0;" // Ignored in MaterialNode ( replace to specular )
 		];	
 		];	
 		
 		
 		if (alpha) {
 		if (alpha) {
@@ -183,7 +183,7 @@ THREE.NodePhong.prototype.build = function( builder ) {
 			output.push(
 			output.push(
 				'normal = perturbNormal2Arb(-vViewPosition,normal,' +
 				'normal = perturbNormal2Arb(-vViewPosition,normal,' +
 				normal.result + ',' +
 				normal.result + ',' +
-				new THREE.NodeUV().build( builder, 'v2' ) + ',' +
+				new THREE.UVNode().build( builder, 'v2' ) + ',' +
 				(normalScale ? normalScale.result : '1.0') + ');'
 				(normalScale ? normalScale.result : '1.0') + ');'
 			);
 			);
 
 

+ 17 - 0
examples/js/materials/nodes/interfaces/StandardMaterialNode.js

@@ -0,0 +1,17 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.StandardMaterialNode = function() {
+	
+	this.node = new THREE.StandardNode();
+	
+	THREE.MaterialNode.call( this, this.node, this.node );
+	
+};
+
+THREE.StandardMaterialNode.prototype = Object.create( THREE.MaterialNode.prototype );
+THREE.StandardMaterialNode.prototype.constructor = THREE.StandardMaterialNode;
+
+THREE.MaterialNode.Shortcuts( THREE.StandardMaterialNode.prototype, 'node', 
+[ 'color',  'alpha', 'roughness', 'metalness', 'normal', 'normalScale', 'emissive', 'ambient', 'shadow', 'ao', 'environment', 'reflectivity', 'transform' ] );

+ 11 - 11
examples/js/materials/nodes/interfaces/NodeStandard.js → examples/js/materials/nodes/interfaces/StandardNode.js

@@ -2,20 +2,20 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeStandard = function() {
+THREE.StandardNode = function() {
 	
 	
-	THREE.NodeGL.call( this );
+	THREE.GLNode.call( this );
 	
 	
-	this.color = new THREE.NodeColor( 0xEEEEEE );
-	this.roughness = new THREE.NodeFloat( 0.5 );
-	this.metalness = new THREE.NodeFloat( 0.5 );
+	this.color = new THREE.ColorNode( 0xEEEEEE );
+	this.roughness = new THREE.FloatNode( 0.5 );
+	this.metalness = new THREE.FloatNode( 0.5 );
 	
 	
 };
 };
 
 
-THREE.NodeStandard.prototype = Object.create( THREE.NodeGL.prototype );
-THREE.NodeStandard.prototype.constructor = THREE.NodeStandard;
+THREE.StandardNode.prototype = Object.create( THREE.GLNode.prototype );
+THREE.StandardNode.prototype.constructor = THREE.StandardNode;
 
 
-THREE.NodeStandard.prototype.build = function( builder ) {
+THREE.StandardNode.prototype.build = function( builder ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	var code;
 	var code;
@@ -96,7 +96,7 @@ THREE.NodeStandard.prototype.build = function( builder ) {
 		
 		
 		// CubeMap blur effect (PBR)
 		// CubeMap blur effect (PBR)
 		
 		
-		builder.require.cubeTextureBias = builder.require.cubeTextureBias || new THREE.NodeRoughnessToBlinnExponent();
+		builder.require.cubeTextureBias = builder.require.cubeTextureBias || new THREE.RoughnessToBlinnExponentNode();
 		
 		
 		// verify all nodes to reuse generate codes
 		// verify all nodes to reuse generate codes
 		
 		
@@ -114,7 +114,7 @@ THREE.NodeStandard.prototype.build = function( builder ) {
 		if (this.normal) this.normal.verify( builder );
 		if (this.normal) this.normal.verify( builder );
 		if (this.normalScale && this.normal) this.normalScale.verify( builder );
 		if (this.normalScale && this.normal) this.normalScale.verify( builder );
 		
 		
-		if (this.environment) this.environment.verify( builder.setCache('env') ); // isolate environment from others inputs ( see NodeTexture, NodeCubeTexture )
+		if (this.environment) this.environment.verify( builder.setCache('env') ); // isolate environment from others inputs ( see TextureNode, CubeTextureNode )
 		if (this.reflectivity && this.environment) this.reflectivity.verify( builder );
 		if (this.reflectivity && this.environment) this.reflectivity.verify( builder );
 		
 		
 		// build code
 		// build code
@@ -197,7 +197,7 @@ THREE.NodeStandard.prototype.build = function( builder ) {
 			output.push(
 			output.push(
 				'normal = perturbNormal2Arb(-vViewPosition,normal,' +
 				'normal = perturbNormal2Arb(-vViewPosition,normal,' +
 				normal.result + ',' +
 				normal.result + ',' +
-				new THREE.NodeUV().build( builder, 'v2' ) + ',' +
+				new THREE.UVNode().build( builder, 'v2' ) + ',' +
 				(normalScale ? normalScale.result : '1.0') + ');'
 				(normalScale ? normalScale.result : '1.0') + ');'
 			);
 			);
 
 

+ 78 - 0
examples/js/materials/nodes/math/Math1Node.js

@@ -0,0 +1,78 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.Math1Node = function( a, method ) {
+	
+	THREE.TempNode.call( this );
+	
+	this.a = a;
+	
+	this.method = method || THREE.Math1Node.SIN;
+	
+};
+
+THREE.Math1Node.prototype = Object.create( THREE.TempNode.prototype );
+THREE.Math1Node.prototype.constructor = THREE.Math1Node;
+
+THREE.Math1Node.RAD = 'radians';
+THREE.Math1Node.DEG = 'degrees';
+THREE.Math1Node.EXP = 'exp';
+THREE.Math1Node.EXP2 = 'exp2';
+THREE.Math1Node.LOG = 'log';
+THREE.Math1Node.LOG2 = 'log2';
+THREE.Math1Node.INVERSE_SQRT = 'inversesqrt';
+THREE.Math1Node.FLOOR = 'floor';
+THREE.Math1Node.CEIL = 'ceil';
+THREE.Math1Node.NORMALIZE = 'normalize';
+THREE.Math1Node.FRACT = 'fract';
+THREE.Math1Node.SAT = 'saturate';
+THREE.Math1Node.SIN = 'sin';
+THREE.Math1Node.COS = 'cos';
+THREE.Math1Node.TAN = 'tan';
+THREE.Math1Node.ASIN = 'asin';
+THREE.Math1Node.ACOS = 'acos';
+THREE.Math1Node.ARCTAN = 'atan';
+THREE.Math1Node.ABS = 'abc';
+THREE.Math1Node.SIGN = 'sign';
+THREE.Math1Node.LENGTH = 'length';
+THREE.Math1Node.NEGATE = 'negate';
+THREE.Math1Node.INVERT = 'invert';
+
+THREE.Math1Node.prototype.getType = function( builder ) {
+	
+	switch(this.method) {
+		case THREE.Math1Node.DISTANCE:
+			return 'fv1';
+	}
+	
+	return this.a.getType( builder );
+	
+};
+
+THREE.Math1Node.prototype.generate = function( builder, output ) {
+	
+	var material = builder.material;
+	
+	var type = this.getType( builder );
+	
+	var result = this.a.build( builder, type );
+	
+	switch(this.method) {
+		
+		case THREE.Math1Node.NEGATE:
+			result = '(-' + result + ')';
+			break;
+		
+		case THREE.Math1Node.INVERT:
+			result = '(1.0-' + result + ')';
+			break;
+		
+		default:
+			result = this.method + '(' + result + ')';
+			break;
+	}
+	
+	return builder.format( result, type, output );
+
+};

+ 25 - 25
examples/js/materials/nodes/math/NodeMath2.js → examples/js/materials/nodes/math/Math2Node.js

@@ -2,31 +2,31 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeMath2 = function( a, b, method ) {
+THREE.Math2Node = function( a, b, method ) {
 	
 	
-	THREE.NodeTemp.call( this );
+	THREE.TempNode.call( this );
 	
 	
 	this.a = a;
 	this.a = a;
 	this.b = b;
 	this.b = b;
 	
 	
-	this.method = method || THREE.NodeMath2.DISTANCE;
+	this.method = method || THREE.Math2Node.DISTANCE;
 	
 	
 };
 };
 
 
-THREE.NodeMath2.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeMath2.prototype.constructor = THREE.NodeMath2;
+THREE.Math2Node.prototype = Object.create( THREE.TempNode.prototype );
+THREE.Math2Node.prototype.constructor = THREE.Math2Node;
 
 
-THREE.NodeMath2.MIN = 'min';
-THREE.NodeMath2.MAX = 'max';
-THREE.NodeMath2.MOD = 'mod';
-THREE.NodeMath2.STEP = 'step';
-THREE.NodeMath2.REFLECT = 'reflect';
-THREE.NodeMath2.DISTANCE = 'distance';
-THREE.NodeMath2.DOT = 'dot';
-THREE.NodeMath2.CROSS = 'cross';
-THREE.NodeMath2.POW = 'pow';
+THREE.Math2Node.MIN = 'min';
+THREE.Math2Node.MAX = 'max';
+THREE.Math2Node.MOD = 'mod';
+THREE.Math2Node.STEP = 'step';
+THREE.Math2Node.REFLECT = 'reflect';
+THREE.Math2Node.DISTANCE = 'distance';
+THREE.Math2Node.DOT = 'dot';
+THREE.Math2Node.CROSS = 'cross';
+THREE.Math2Node.POW = 'pow';
 
 
-THREE.NodeMath2.prototype.getInputType = function( builder ) {
+THREE.Math2Node.prototype.getInputType = function( builder ) {
 	
 	
 	// use the greater length vector
 	// use the greater length vector
 	if (builder.getFormatLength( this.b.getType( builder ) ) > builder.getFormatLength( this.a.getType( builder ) )) {
 	if (builder.getFormatLength( this.b.getType( builder ) ) > builder.getFormatLength( this.a.getType( builder ) )) {
@@ -37,21 +37,21 @@ THREE.NodeMath2.prototype.getInputType = function( builder ) {
 	
 	
 };
 };
 
 
-THREE.NodeMath2.prototype.getType = function( builder ) {
+THREE.Math2Node.prototype.getType = function( builder ) {
 	
 	
 	switch(this.method) {
 	switch(this.method) {
-		case THREE.NodeMath2.DISTANCE:
-		case THREE.NodeMath2.DOT:
+		case THREE.Math2Node.DISTANCE:
+		case THREE.Math2Node.DOT:
 			return 'fv1';
 			return 'fv1';
 		
 		
-		case THREE.NodeMath2.CROSS:
+		case THREE.Math2Node.CROSS:
 			return 'v3';
 			return 'v3';
 	}
 	}
 	
 	
 	return this.getInputType( builder );
 	return this.getInputType( builder );
 };
 };
 
 
-THREE.NodeMath2.prototype.generate = function( builder, output ) {
+THREE.Math2Node.prototype.generate = function( builder, output ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	
 	
@@ -64,19 +64,19 @@ THREE.NodeMath2.prototype.generate = function( builder, output ) {
 	// optimzer
 	// optimzer
 	
 	
 	switch(this.method) {
 	switch(this.method) {
-		case THREE.NodeMath2.CROSS:
+		case THREE.Math2Node.CROSS:
 			a = this.a.build( builder, 'v3' );
 			a = this.a.build( builder, 'v3' );
 			b = this.b.build( builder, 'v3' );
 			b = this.b.build( builder, 'v3' );
 			break;
 			break;
 		
 		
-		case THREE.NodeMath2.STEP:
+		case THREE.Math2Node.STEP:
 			a = this.a.build( builder, al == 1 ? 'fv1' : type );
 			a = this.a.build( builder, al == 1 ? 'fv1' : type );
 			b = this.b.build( builder, type );
 			b = this.b.build( builder, type );
 			break;
 			break;
 			
 			
-		case THREE.NodeMath2.MIN:
-		case THREE.NodeMath2.MAX:
-		case THREE.NodeMath2.MODULO:
+		case THREE.Math2Node.MIN:
+		case THREE.Math2Node.MAX:
+		case THREE.Math2Node.MODULO:
 			a = this.a.build( builder, type );
 			a = this.a.build( builder, type );
 			b = this.b.build( builder, bl == 1 ? 'fv1' : type );
 			b = this.b.build( builder, bl == 1 ? 'fv1' : type );
 			break;
 			break;

+ 14 - 14
examples/js/materials/nodes/math/NodeMath3.js → examples/js/materials/nodes/math/Math3Node.js

@@ -2,27 +2,27 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeMath3 = function( a, b, c, method ) {
+THREE.Math3Node = function( a, b, c, method ) {
 	
 	
-	THREE.NodeTemp.call( this );
+	THREE.TempNode.call( this );
 	
 	
 	this.a = a;
 	this.a = a;
 	this.b = b;
 	this.b = b;
 	this.c = c;
 	this.c = c;
 	
 	
-	this.method = method || THREE.NodeMath3.MIX;
+	this.method = method || THREE.Math3Node.MIX;
 	
 	
 };
 };
 
 
-THREE.NodeMath3.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeMath3.prototype.constructor = THREE.NodeMath3;
+THREE.Math3Node.prototype = Object.create( THREE.TempNode.prototype );
+THREE.Math3Node.prototype.constructor = THREE.Math3Node;
 
 
-THREE.NodeMath3.MIX = 'mix';
-THREE.NodeMath3.REFRACT = 'refract';
-THREE.NodeMath3.SMOOTHSTEP = 'smoothstep';
-THREE.NodeMath3.FACEFORWARD = 'faceforward';
+THREE.Math3Node.MIX = 'mix';
+THREE.Math3Node.REFRACT = 'refract';
+THREE.Math3Node.SMOOTHSTEP = 'smoothstep';
+THREE.Math3Node.FACEFORWARD = 'faceforward';
 
 
-THREE.NodeMath3.prototype.getType = function( builder ) {
+THREE.Math3Node.prototype.getType = function( builder ) {
 	
 	
 	var a = builder.getFormatLength( this.a.getType( builder ) );
 	var a = builder.getFormatLength( this.a.getType( builder ) );
 	var b = builder.getFormatLength( this.b.getType( builder ) );
 	var b = builder.getFormatLength( this.b.getType( builder ) );
@@ -40,7 +40,7 @@ THREE.NodeMath3.prototype.getType = function( builder ) {
 	
 	
 };
 };
 
 
-THREE.NodeMath3.prototype.generate = function( builder, output ) {
+THREE.Math3Node.prototype.generate = function( builder, output ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	
 	
@@ -54,14 +54,14 @@ THREE.NodeMath3.prototype.generate = function( builder, output ) {
 	// optimzer
 	// optimzer
 	
 	
 	switch(this.method) {
 	switch(this.method) {
-		case THREE.NodeMath3.REFRACT:
+		case THREE.Math3Node.REFRACT:
 			a = this.a.build( builder, type );
 			a = this.a.build( builder, type );
 			b = this.b.build( builder, type );
 			b = this.b.build( builder, type );
 			c = this.c.build( builder, 'fv1' );
 			c = this.c.build( builder, 'fv1' );
 			break;
 			break;
 		
 		
-		case THREE.NodeMath3.MIX:
-		case THREE.NodeMath3.SMOOTHSTEP:
+		case THREE.Math3Node.MIX:
+		case THREE.Math3Node.SMOOTHSTEP:
 			a = this.a.build( builder, type );
 			a = this.a.build( builder, type );
 			b = this.b.build( builder, type );
 			b = this.b.build( builder, type );
 			c = this.c.build( builder, cl == 1 ? 'fv1' : type );
 			c = this.c.build( builder, cl == 1 ? 'fv1' : type );

+ 0 - 78
examples/js/materials/nodes/math/NodeMath1.js

@@ -1,78 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeMath1 = function( a, method ) {
-	
-	THREE.NodeTemp.call( this );
-	
-	this.a = a;
-	
-	this.method = method || THREE.NodeMath1.SIN;
-	
-};
-
-THREE.NodeMath1.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeMath1.prototype.constructor = THREE.NodeMath1;
-
-THREE.NodeMath1.RAD = 'radians';
-THREE.NodeMath1.DEG = 'degrees';
-THREE.NodeMath1.EXP = 'exp';
-THREE.NodeMath1.EXP2 = 'exp2';
-THREE.NodeMath1.LOG = 'log';
-THREE.NodeMath1.LOG2 = 'log2';
-THREE.NodeMath1.INVERSE_SQRT = 'inversesqrt';
-THREE.NodeMath1.FLOOR = 'floor';
-THREE.NodeMath1.CEIL = 'ceil';
-THREE.NodeMath1.NORMALIZE = 'normalize';
-THREE.NodeMath1.FRACT = 'fract';
-THREE.NodeMath1.SAT = 'saturate';
-THREE.NodeMath1.SIN = 'sin';
-THREE.NodeMath1.COS = 'cos';
-THREE.NodeMath1.TAN = 'tan';
-THREE.NodeMath1.ASIN = 'asin';
-THREE.NodeMath1.ACOS = 'acos';
-THREE.NodeMath1.ARCTAN = 'atan';
-THREE.NodeMath1.ABS = 'abc';
-THREE.NodeMath1.SIGN = 'sign';
-THREE.NodeMath1.LENGTH = 'length';
-THREE.NodeMath1.NEGATE = 'negate';
-THREE.NodeMath1.INVERT = 'invert';
-
-THREE.NodeMath1.prototype.getType = function( builder ) {
-	
-	switch(this.method) {
-		case THREE.NodeMath1.DISTANCE:
-			return 'fv1';
-	}
-	
-	return this.a.getType( builder );
-	
-};
-
-THREE.NodeMath1.prototype.generate = function( builder, output ) {
-	
-	var material = builder.material;
-	
-	var type = this.getType( builder );
-	
-	var result = this.a.build( builder, type );
-	
-	switch(this.method) {
-		
-		case THREE.NodeMath1.NEGATE:
-			result = '(-' + result + ')';
-			break;
-		
-		case THREE.NodeMath1.INVERT:
-			result = '(1.0-' + result + ')';
-			break;
-		
-		default:
-			result = this.method + '(' + result + ')';
-			break;
-	}
-	
-	return builder.format( result, type, output );
-
-};

+ 0 - 45
examples/js/materials/nodes/math/NodeOperator.js

@@ -1,45 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
- 
-THREE.NodeOperator = function( a, b, op ) {
-	
-	THREE.NodeTemp.call( this );
-	
-	this.op = op || THREE.NodeOperator.ADD;
-	
-	this.a = a;
-	this.b = b;
-	
-};
-
-THREE.NodeOperator.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeOperator.prototype.constructor = THREE.NodeOperator;
-
-THREE.NodeOperator.ADD = '+';
-THREE.NodeOperator.SUB = '-';
-THREE.NodeOperator.MUL = '*';
-THREE.NodeOperator.DIV = '/';
-
-THREE.NodeOperator.prototype.getType = function( builder ) {
-	
-	// use the greater length vector
-	if (builder.getFormatLength( this.b.getType( builder ) ) > builder.getFormatLength( this.a.getType( builder ) )) {
-		return this.b.getType( builder );
-	}
-	
-	return this.a.getType( builder );
-
-};
-
-THREE.NodeOperator.prototype.generate = function( builder, output ) {
-	
-	var material = builder.material;
-	var data = material.getNodeData( this.uuid );
-	
-	var a = this.a.build( builder, output );
-	var b = this.b.build( builder, output );
-	
-	return '(' + a + this.op + b + ')';
-
-};

+ 45 - 0
examples/js/materials/nodes/math/OperatorNode.js

@@ -0,0 +1,45 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+ 
+THREE.OperatorNode = function( a, b, op ) {
+	
+	THREE.TempNode.call( this );
+	
+	this.op = op || THREE.OperatorNode.ADD;
+	
+	this.a = a;
+	this.b = b;
+	
+};
+
+THREE.OperatorNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.OperatorNode.prototype.constructor = THREE.OperatorNode;
+
+THREE.OperatorNode.ADD = '+';
+THREE.OperatorNode.SUB = '-';
+THREE.OperatorNode.MUL = '*';
+THREE.OperatorNode.DIV = '/';
+
+THREE.OperatorNode.prototype.getType = function( builder ) {
+	
+	// use the greater length vector
+	if (builder.getFormatLength( this.b.getType( builder ) ) > builder.getFormatLength( this.a.getType( builder ) )) {
+		return this.b.getType( builder );
+	}
+	
+	return this.a.getType( builder );
+
+};
+
+THREE.OperatorNode.prototype.generate = function( builder, output ) {
+	
+	var material = builder.material;
+	var data = material.getDataNode( this.uuid );
+	
+	var a = this.a.build( builder, output );
+	var b = this.b.build( builder, output );
+	
+	return '(' + a + this.op + b + ')';
+
+};

+ 10 - 10
examples/js/materials/nodes/utils/NodeJoin.js → examples/js/materials/nodes/utils/JoinNode.js

@@ -2,9 +2,9 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeJoin = function( x, y, z, w ) {
+THREE.JoinNode = function( x, y, z, w ) {
 	
 	
-	THREE.NodeGL.call( this, 'fv1' );
+	THREE.GLNode.call( this, 'fv1' );
 	
 	
 	this.x = x;
 	this.x = x;
 	this.y = y;
 	this.y = y;
@@ -13,14 +13,14 @@ THREE.NodeJoin = function( x, y, z, w ) {
 	
 	
 };
 };
 
 
-THREE.NodeJoin.prototype = Object.create( THREE.NodeGL.prototype );
-THREE.NodeJoin.prototype.constructor = THREE.NodeJoin;
+THREE.JoinNode.prototype = Object.create( THREE.GLNode.prototype );
+THREE.JoinNode.prototype.constructor = THREE.JoinNode;
 
 
-THREE.NodeJoin.inputs = ['x','y','z','w'];
+THREE.JoinNode.inputs = ['x','y','z','w'];
 
 
-THREE.NodeJoin.prototype.getNumElements = function() {
+THREE.JoinNode.prototype.getNumElements = function() {
 	
 	
-	var inputs = THREE.NodeJoin.inputs;
+	var inputs = THREE.JoinNode.inputs;
 	var i = inputs.length;
 	var i = inputs.length;
 	
 	
 	while (i--) {
 	while (i--) {
@@ -34,20 +34,20 @@ THREE.NodeJoin.prototype.getNumElements = function() {
 	
 	
 };
 };
 
 
-THREE.NodeJoin.prototype.getType = function( builder ) {
+THREE.JoinNode.prototype.getType = function( builder ) {
 	
 	
 	return builder.getFormatByLength( this.getNumElements() );
 	return builder.getFormatByLength( this.getNumElements() );
 	
 	
 };
 };
 
 
-THREE.NodeJoin.prototype.generate = function( builder, output ) {
+THREE.JoinNode.prototype.generate = function( builder, output ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	
 	
 	var type = this.getType( builder );
 	var type = this.getType( builder );
 	var length = this.getNumElements();
 	var length = this.getNumElements();
 	
 	
-	var inputs = THREE.NodeJoin.inputs;
+	var inputs = THREE.JoinNode.inputs;
 	var outputs = [];
 	var outputs = [];
 	
 	
 	for(var i = 0; i < length; i++) {
 	for(var i = 0; i < length; i++) {

+ 0 - 20
examples/js/materials/nodes/utils/NodeTime.js

@@ -1,20 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-THREE.NodeTime = function( value ) {
-	
-	THREE.NodeFloat.call( this, value );
-	
-	this.requestUpdate = true;
-	
-};
-
-THREE.NodeTime.prototype = Object.create( THREE.NodeFloat.prototype );
-THREE.NodeTime.prototype.constructor = THREE.NodeTime;
-
-THREE.NodeTime.prototype.updateAnimation = function( delta ) {
-	
-	this.number += delta;
-	
-};

+ 7 - 7
examples/js/materials/nodes/utils/NodeRoughnessToBlinnExponent.js → examples/js/materials/nodes/utils/RoughnessToBlinnExponentNode.js

@@ -2,16 +2,16 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeRoughnessToBlinnExponent = function() {
+THREE.RoughnessToBlinnExponentNode = function() {
 	
 	
-	THREE.NodeTemp.call( this, 'fv1', {unique:true} );
+	THREE.TempNode.call( this, 'fv1', {unique:true} );
 	
 	
 };
 };
 
 
-THREE.NodeRoughnessToBlinnExponent.prototype = Object.create( THREE.NodeTemp.prototype );
-THREE.NodeRoughnessToBlinnExponent.prototype.constructor = THREE.NodeRoughnessToBlinnExponent;
+THREE.RoughnessToBlinnExponentNode.prototype = Object.create( THREE.TempNode.prototype );
+THREE.RoughnessToBlinnExponentNode.prototype.constructor = THREE.RoughnessToBlinnExponentNode;
 
 
-THREE.NodeRoughnessToBlinnExponent.prototype.generate = function( builder, output ) {
+THREE.RoughnessToBlinnExponentNode.prototype.generate = function( builder, output ) {
 	
 	
 	var material = builder.material;
 	var material = builder.material;
 	
 	
@@ -24,7 +24,7 @@ THREE.NodeRoughnessToBlinnExponent.prototype.generate = function( builder, outpu
 		}
 		}
 		else {
 		else {
 			
 			
-			console.warn("THREE.NodeRoughnessToBlinnExponent is compatible with StandardMaterial only");
+			console.warn("THREE.RoughnessToBlinnExponentNode is compatible with StandardMaterial only");
 			
 			
 			material.addFragmentNode('float specularMIPLevel = 0.0;');
 			material.addFragmentNode('float specularMIPLevel = 0.0;');
 		
 		
@@ -35,7 +35,7 @@ THREE.NodeRoughnessToBlinnExponent.prototype.generate = function( builder, outpu
 	}
 	}
 	else {
 	else {
 		
 		
-		console.warn("THREE.NodeRoughnessToBlinnExponent is not compatible with " + builder.shader + " shader");
+		console.warn("THREE.RoughnessToBlinnExponentNode is not compatible with " + builder.shader + " shader");
 		
 		
 		return builder.format( '0.0', this.type, output );
 		return builder.format( '0.0', this.type, output );
 	
 	

+ 6 - 6
examples/js/materials/nodes/utils/NodeSwitch.js → examples/js/materials/nodes/utils/SwitchNode.js

@@ -2,9 +2,9 @@
  * @author sunag / http://www.sunag.com.br/
  * @author sunag / http://www.sunag.com.br/
  */
  */
 
 
-THREE.NodeSwitch = function( a, component ) {
+THREE.SwitchNode = function( a, component ) {
 	
 	
-	THREE.NodeGL.call( this, 'fv1' );
+	THREE.GLNode.call( this, 'fv1' );
 	
 	
 	this.component = component || 'x';
 	this.component = component || 'x';
 	
 	
@@ -12,16 +12,16 @@ THREE.NodeSwitch = function( a, component ) {
 	
 	
 };
 };
 
 
-THREE.NodeSwitch.prototype = Object.create( THREE.NodeGL.prototype );
-THREE.NodeSwitch.prototype.constructor = THREE.NodeSwitch;
+THREE.SwitchNode.prototype = Object.create( THREE.GLNode.prototype );
+THREE.SwitchNode.prototype.constructor = THREE.SwitchNode;
 
 
-THREE.NodeSwitch.prototype.getType = function( builder ) {
+THREE.SwitchNode.prototype.getType = function( builder ) {
 	
 	
 	return builder.getFormatByLength( this.component.length );
 	return builder.getFormatByLength( this.component.length );
 	
 	
 };
 };
 
 
-THREE.NodeSwitch.prototype.generate = function( builder, output ) {
+THREE.SwitchNode.prototype.generate = function( builder, output ) {
 	
 	
 	var type = this.a.getType( builder );
 	var type = this.a.getType( builder );
 	var inputLength = builder.getFormatLength( type ) - 1;
 	var inputLength = builder.getFormatLength( type ) - 1;

+ 20 - 0
examples/js/materials/nodes/utils/TimeNode.js

@@ -0,0 +1,20 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+THREE.TimeNode = function( value ) {
+	
+	THREE.FloatNode.call( this, value );
+	
+	this.requestUpdate = true;
+	
+};
+
+THREE.TimeNode.prototype = Object.create( THREE.FloatNode.prototype );
+THREE.TimeNode.prototype.constructor = THREE.TimeNode;
+
+THREE.TimeNode.prototype.updateAnimation = function( delta ) {
+	
+	this.number += delta;
+	
+};

+ 272 - 272
examples/webgl_materials_nodes.html

@@ -1,7 +1,7 @@
 <!doctype html>
 <!doctype html>
 <html lang="en">
 <html lang="en">
 	<head>
 	<head>
-		<title>WebGL NodeMaterial</title>
+		<title>WebGL MaterialNode</title>
 		<meta charset="utf-8">
 		<meta charset="utf-8">
 		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
 		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
 		<style>
 		<style>
@@ -39,56 +39,56 @@
 		<script src="js/controls/OrbitControls.js"></script>
 		<script src="js/controls/OrbitControls.js"></script>
 		<script src="js/libs/dat.gui.min.js"></script>
 		<script src="js/libs/dat.gui.min.js"></script>
 		
 		
-		<!-- NodeMaterial Base -->
-		<script src="js/materials/nodes/NodeGL.js"></script>
-		<script src="js/materials/nodes/NodeBuilder.js"></script>
-		<script src="js/materials/nodes/NodeRaw.js"></script>
-		<script src="js/materials/nodes/NodeTemp.js"></script>
-		<script src="js/materials/nodes/NodeInput.js"></script>
-		<script src="js/materials/nodes/NodeMaterial.js"></script>
-		<script src="js/materials/nodes/NodeConst.js"></script>
-		<script src="js/materials/nodes/NodeFunction.js"></script>
-		<script src="js/materials/nodes/NodeFunctionCall.js"></script>
-		<script src="js/materials/nodes/NodeLib.js"></script>
+		<!-- MaterialNode Base -->
+		<script src="js/materials/nodes/GLNode.js"></script>
+		<script src="js/materials/nodes/BuilderNode.js"></script>
+		<script src="js/materials/nodes/RawNode.js"></script>
+		<script src="js/materials/nodes/TempNode.js"></script>
+		<script src="js/materials/nodes/InputNode.js"></script>
+		<script src="js/materials/nodes/MaterialNode.js"></script>
+		<script src="js/materials/nodes/ConstNode.js"></script>
+		<script src="js/materials/nodes/FunctionNode.js"></script>
+		<script src="js/materials/nodes/FunctionCallNode.js"></script>
+		<script src="js/materials/nodes/LibNode.js"></script>
 		
 		
 		<!-- Accessors -->
 		<!-- Accessors -->
-		<script src="js/materials/nodes/accessors/NodeColors.js"></script>
-		<script src="js/materials/nodes/accessors/NodeCamera.js"></script>
-		<script src="js/materials/nodes/accessors/NodeNormal.js"></script>
-		<script src="js/materials/nodes/accessors/NodePosition.js"></script>
-		<script src="js/materials/nodes/accessors/NodeReflect.js"></script>
-		<script src="js/materials/nodes/accessors/NodeUV.js"></script>
+		<script src="js/materials/nodes/accessors/ColorsNode.js"></script>
+		<script src="js/materials/nodes/accessors/CameraNode.js"></script>
+		<script src="js/materials/nodes/accessors/NormalNode.js"></script>
+		<script src="js/materials/nodes/accessors/PositionNode.js"></script>
+		<script src="js/materials/nodes/accessors/ReflectNode.js"></script>
+		<script src="js/materials/nodes/accessors/UVNode.js"></script>
 		
 		
 		<!-- Inputs -->
 		<!-- Inputs -->
-		<script src="js/materials/nodes/inputs/NodeColor.js"></script>
-		<script src="js/materials/nodes/inputs/NodeFloat.js"></script>
-		<script src="js/materials/nodes/inputs/NodeInt.js"></script>
-		<script src="js/materials/nodes/inputs/NodeVector2.js"></script>
-		<script src="js/materials/nodes/inputs/NodeVector3.js"></script>
-		<script src="js/materials/nodes/inputs/NodeVector4.js"></script>
-		<script src="js/materials/nodes/inputs/NodeTexture.js"></script>
-		<script src="js/materials/nodes/inputs/NodeCubeTexture.js"></script>
+		<script src="js/materials/nodes/inputs/ColorNode.js"></script>
+		<script src="js/materials/nodes/inputs/FloatNode.js"></script>
+		<script src="js/materials/nodes/inputs/IntNode.js"></script>
+		<script src="js/materials/nodes/inputs/Vector2Node.js"></script>
+		<script src="js/materials/nodes/inputs/Vector3Node.js"></script>
+		<script src="js/materials/nodes/inputs/Vector4Node.js"></script>
+		<script src="js/materials/nodes/inputs/TextureNode.js"></script>
+		<script src="js/materials/nodes/inputs/CubeTextureNode.js"></script>
 		
 		
 		<!-- Math -->
 		<!-- Math -->
-		<script src="js/materials/nodes/math/NodeMath1.js"></script>
-		<script src="js/materials/nodes/math/NodeMath2.js"></script>
-		<script src="js/materials/nodes/math/NodeMath3.js"></script>
-		<script src="js/materials/nodes/math/NodeOperator.js"></script>
+		<script src="js/materials/nodes/math/Math1Node.js"></script>
+		<script src="js/materials/nodes/math/Math2Node.js"></script>
+		<script src="js/materials/nodes/math/Math3Node.js"></script>
+		<script src="js/materials/nodes/math/OperatorNode.js"></script>
 		
 		
 		<!-- Utils -->
 		<!-- Utils -->
-		<script src="js/materials/nodes/utils/NodeJoin.js"></script>
-		<script src="js/materials/nodes/utils/NodeSwitch.js"></script>
-		<script src="js/materials/nodes/utils/NodeTime.js"></script>
-		<script src="js/materials/nodes/utils/NodeRoughnessToBlinnExponent.js"></script>
+		<script src="js/materials/nodes/utils/JoinNode.js"></script>
+		<script src="js/materials/nodes/utils/SwitchNode.js"></script>
+		<script src="js/materials/nodes/utils/TimeNode.js"></script>
+		<script src="js/materials/nodes/utils/RoughnessToBlinnExponentNode.js"></script>
 		
 		
 		<!-- Interfaces -->
 		<!-- Interfaces -->
-		<script src="js/materials/nodes/interfaces/NodePhong.js"></script>
-		<script src="js/materials/nodes/interfaces/NodePhongMaterial.js"></script>
-		<script src="js/materials/nodes/interfaces/NodeStandard.js"></script>
-		<script src="js/materials/nodes/interfaces/NodeStandardMaterial.js"></script>
+		<script src="js/materials/nodes/interfaces/PhongNode.js"></script>
+		<script src="js/materials/nodes/interfaces/PhongMaterialNode.js"></script>
+		<script src="js/materials/nodes/interfaces/StandardNode.js"></script>
+		<script src="js/materials/nodes/interfaces/StandardMaterialNode.js"></script>
 		
 		
 		<!-- Extras -->
 		<!-- Extras -->
-		<script src="js/materials/nodes/extras/NodeVelocity.js"></script>
+		<script src="js/materials/nodes/extras/VelocityNode.js"></script>
 		
 		
 		<script>
 		<script>
 
 
@@ -253,7 +253,7 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					
 					
 					//mtl.color = // albedo color
 					//mtl.color = // albedo color
 					//mtl.alpha = // opacity (0 at 1)
 					//mtl.alpha = // opacity (0 at 1)
@@ -269,15 +269,15 @@
 					//mtl.reflectivity = // environment intensity
 					//mtl.reflectivity = // environment intensity
 					//mtl.transform = // vertex transformation
 					//mtl.transform = // vertex transformation
 					
 					
-					var mask = new THREE.NodeSwitch(new THREE.NodeTexture(decalDiffuse), 'w');
+					var mask = new THREE.SwitchNode(new THREE.TextureNode(decalDiffuse), 'w');
 					
 					
-					mtl.color = new THREE.NodeTexture(grass);
-					mtl.specular = new THREE.NodeFloat(.5);
-					mtl.shininess = new THREE.NodeFloat(15);
-					mtl.environment = new THREE.NodeCubeTexture(cubemap);
+					mtl.color = new THREE.TextureNode(grass);
+					mtl.specular = new THREE.FloatNode(.5);
+					mtl.shininess = new THREE.FloatNode(15);
+					mtl.environment = new THREE.CubeTextureNode(cubemap);
 					mtl.reflectivity = mask;
 					mtl.reflectivity = mask;
-					mtl.normal = new THREE.NodeTexture(grassNormal);
-					mtl.normalScale = new THREE.NodeMath1( mask, THREE.NodeMath1.INVERT );					
+					mtl.normal = new THREE.TextureNode(grassNormal);
+					mtl.normalScale = new THREE.Math1Node( mask, THREE.Math1Node.INVERT );					
 					
 					
 					break;
 					break;
 				
 				
@@ -285,7 +285,7 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodeStandardMaterial();
+					mtl = new THREE.StandardMaterialNode();
 					
 					
 					//mtl.color = // albedo color
 					//mtl.color = // albedo color
 					//mtl.alpha = // opacity (0 at 1)
 					//mtl.alpha = // opacity (0 at 1)
@@ -301,41 +301,41 @@
 					//mtl.reflectivity = // environment intensity
 					//mtl.reflectivity = // environment intensity
 					//mtl.transform = // vertex transformation
 					//mtl.transform = // vertex transformation
 					
 					
-					var mask = new THREE.NodeSwitch(new THREE.NodeTexture(decalDiffuse), 'w');
+					var mask = new THREE.SwitchNode(new THREE.TextureNode(decalDiffuse), 'w');
 					
 					
-					var normalScale = new THREE.NodeFloat(.3);
+					var normalScale = new THREE.FloatNode(.3);
 					
 					
-					var roughnessA = new THREE.NodeFloat(.5);
-					var metalnessA = new THREE.NodeFloat(.5);
+					var roughnessA = new THREE.FloatNode(.5);
+					var metalnessA = new THREE.FloatNode(.5);
 					
 					
-					var roughnessB = new THREE.NodeFloat(0);
-					var metalnessB = new THREE.NodeFloat(1);
+					var roughnessB = new THREE.FloatNode(0);
+					var metalnessB = new THREE.FloatNode(1);
 
 
-					var roughness = new THREE.NodeMath3(
+					var roughness = new THREE.Math3Node(
 						roughnessA,
 						roughnessA,
 						roughnessB,
 						roughnessB,
 						mask,
 						mask,
-						THREE.NodeMath3.MIX
+						THREE.Math3Node.MIX
 					);					
 					);					
 					
 					
-					var metalness = new THREE.NodeMath3(
+					var metalness = new THREE.Math3Node(
 						metalnessA,
 						metalnessA,
 						metalnessB,
 						metalnessB,
 						mask,
 						mask,
-						THREE.NodeMath3.MIX
+						THREE.Math3Node.MIX
 					);
 					);
 					
 					
-					var normalMask = new THREE.NodeOperator(
-						new THREE.NodeMath1( mask, THREE.NodeMath1.INVERT ),
+					var normalMask = new THREE.OperatorNode(
+						new THREE.Math1Node( mask, THREE.Math1Node.INVERT ),
 						normalScale,
 						normalScale,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					mtl.color = new THREE.NodeColor(0xFFFFFF);
+					mtl.color = new THREE.ColorNode(0xFFFFFF);
 					mtl.roughness = roughness;
 					mtl.roughness = roughness;
 					mtl.metalness = metalness;
 					mtl.metalness = metalness;
-					mtl.environment = new THREE.NodeCubeTexture(cubemap);
-					mtl.normal = new THREE.NodeTexture(grassNormal);
+					mtl.environment = new THREE.CubeTextureNode(cubemap);
+					mtl.normal = new THREE.TextureNode(grassNormal);
 					mtl.normalScale = normalMask;
 					mtl.normalScale = normalMask;
 					
 					
 					// GUI
 					// GUI
@@ -382,67 +382,67 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					
 					
-					var time = new THREE.NodeTime();
-					var speed = new THREE.NodeFloat(5);
-					var scale = new THREE.NodeFloat(1);
-					var worldScale = new THREE.NodeFloat(.4);
-					var colorA = new THREE.NodeColor(0xFFFFFF);
-					var colorB = new THREE.NodeColor(0x0054df);
+					var time = new THREE.TimeNode();
+					var speed = new THREE.FloatNode(5);
+					var scale = new THREE.FloatNode(1);
+					var worldScale = new THREE.FloatNode(.4);
+					var colorA = new THREE.ColorNode(0xFFFFFF);
+					var colorB = new THREE.ColorNode(0x0054df);
 					
 					
-					var uv = new THREE.NodeUV();
+					var uv = new THREE.UVNode();
 					
 					
-					var timeScale = new THREE.NodeOperator(
+					var timeScale = new THREE.OperatorNode(
 						time,
 						time,
 						speed,
 						speed,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var worldScl = new THREE.NodeOperator(
-						new THREE.NodePosition(),
+					var worldScl = new THREE.OperatorNode(
+						new THREE.PositionNode(),
 						worldScale,
 						worldScale,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var posContinuous = new THREE.NodeOperator(
+					var posContinuous = new THREE.OperatorNode(
 						worldScl,
 						worldScl,
 						timeScale,
 						timeScale,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var wave = new THREE.NodeMath1(posContinuous, THREE.NodeMath1.SIN);
-					wave = new THREE.NodeSwitch(wave, 'x');
+					var wave = new THREE.Math1Node(posContinuous, THREE.Math1Node.SIN);
+					wave = new THREE.SwitchNode(wave, 'x');
 					
 					
-					var waveScale = new THREE.NodeOperator(
+					var waveScale = new THREE.OperatorNode(
 						wave,
 						wave,
 						scale,
 						scale,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var displaceY = new THREE.NodeJoin(
-						new THREE.NodeFloat(),
+					var displaceY = new THREE.JoinNode(
+						new THREE.FloatNode(),
 						waveScale,
 						waveScale,
-						new THREE.NodeFloat()
+						new THREE.FloatNode()
 					);
 					);
 					
 					
-					var displace = new THREE.NodeOperator(
-						new THREE.NodeNormal(),
+					var displace = new THREE.OperatorNode(
+						new THREE.NormalNode(),
 						displaceY,
 						displaceY,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var blend = new THREE.NodeOperator(
-						new THREE.NodePosition(),
+					var blend = new THREE.OperatorNode(
+						new THREE.PositionNode(),
 						displaceY,
 						displaceY,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var color = new THREE.NodeMath3(
+					var color = new THREE.Math3Node(
 						colorB,
 						colorB,
 						colorA,
 						colorA,
 						wave,
 						wave,
-						THREE.NodeMath3.MIX
+						THREE.Math3Node.MIX
 					);
 					);
 					
 					
 					mtl.color = color;
 					mtl.color = color;
@@ -494,37 +494,37 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					
 					
 					var intensity = 1.3;
 					var intensity = 1.3;
-					var power = new THREE.NodeFloat(3);
-					var color = new THREE.NodeColor(0xFFFFFF);
+					var power = new THREE.FloatNode(3);
+					var color = new THREE.ColorNode(0xFFFFFF);
 						
 						
-					var viewZ = new THREE.NodeMath2(
-						new THREE.NodeNormal( THREE.NodeNormal.VIEW ), 
-						new THREE.NodeVector3(0, 0, -intensity), 
-						THREE.NodeMath2.DOT
+					var viewZ = new THREE.Math2Node(
+						new THREE.NormalNode( THREE.NormalNode.VIEW ), 
+						new THREE.Vector3Node(0, 0, -intensity), 
+						THREE.Math2Node.DOT
 					);
 					);
 					
 					
-					var rim = new THREE.NodeOperator(
+					var rim = new THREE.OperatorNode(
 						viewZ,
 						viewZ,
-						new THREE.NodeFloat(intensity),
-						THREE.NodeOperator.ADD
+						new THREE.FloatNode(intensity),
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var rimPower = new THREE.NodeMath2(
+					var rimPower = new THREE.Math2Node(
 						rim, 
 						rim, 
 						power, 
 						power, 
-						THREE.NodeMath2.POW
+						THREE.Math2Node.POW
 					);
 					);
 					
 					
-					var rimColor = new THREE.NodeOperator(
+					var rimColor = new THREE.OperatorNode(
 						rimPower,
 						rimPower,
 						color,
 						color,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					mtl.color = new THREE.NodeColor(0x111111);
+					mtl.color = new THREE.ColorNode(0x111111);
 					mtl.emissive = rimColor;					
 					mtl.emissive = rimColor;					
 					
 					
 					//	GUI
 					//	GUI
@@ -580,39 +580,39 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					
 					
-					var reflectance = new THREE.NodeFloat(1.3);
-					var power = new THREE.NodeFloat(1);
-					var color = new THREE.NodeCubeTexture(cubemap);
+					var reflectance = new THREE.FloatNode(1.3);
+					var power = new THREE.FloatNode(1);
+					var color = new THREE.CubeTextureNode(cubemap);
 						
 						
-					var viewZ = new THREE.NodeMath2(
-						new THREE.NodeNormal( THREE.NodeNormal.VIEW ), 
-						new THREE.NodeVector3(0, 0, -1), 
-						THREE.NodeMath2.DOT
+					var viewZ = new THREE.Math2Node(
+						new THREE.NormalNode( THREE.NormalNode.VIEW ), 
+						new THREE.Vector3Node(0, 0, -1), 
+						THREE.Math2Node.DOT
 					);
 					);
 					
 					
-					var theta = new THREE.NodeOperator(
+					var theta = new THREE.OperatorNode(
 						viewZ,
 						viewZ,
-						new THREE.NodeFloat(1),
-						THREE.NodeOperator.ADD
+						new THREE.FloatNode(1),
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var thetaPower = new THREE.NodeMath2(
+					var thetaPower = new THREE.Math2Node(
 						theta, 
 						theta, 
 						power, 
 						power, 
-						THREE.NodeMath2.POW
+						THREE.Math2Node.POW
 					);
 					);
 					
 					
-					var fresnel = new THREE.NodeOperator(
+					var fresnel = new THREE.OperatorNode(
 						reflectance,
 						reflectance,
 						thetaPower,
 						thetaPower,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					mtl.color = new THREE.NodeColor(0x3399FF);
+					mtl.color = new THREE.ColorNode(0x3399FF);
 					mtl.environment = color;
 					mtl.environment = color;
-					mtl.reflectivity = new THREE.NodeMath1( fresnel, THREE.NodeMath1.SAT );
+					mtl.reflectivity = new THREE.Math1Node( fresnel, THREE.Math1Node.SAT );
 					
 					
 					//	GUI
 					//	GUI
 					
 					
@@ -634,35 +634,35 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					
 					
-					var tex1 = new THREE.NodeTexture(grass);
-					var tex2 = new THREE.NodeTexture(brick);
+					var tex1 = new THREE.TextureNode(grass);
+					var tex2 = new THREE.TextureNode(brick);
 					
 					
-					var offset = new THREE.NodeFloat(0);
-					var scale = new THREE.NodeFloat(1);
-					var uv = new THREE.NodeUV();
+					var offset = new THREE.FloatNode(0);
+					var scale = new THREE.FloatNode(1);
+					var uv = new THREE.UVNode();
 					
 					
-					var uvOffset = new THREE.NodeOperator(
+					var uvOffset = new THREE.OperatorNode(
 						offset,
 						offset,
 						uv,
 						uv,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var uvScale = new THREE.NodeOperator(
+					var uvScale = new THREE.OperatorNode(
 						uvOffset,
 						uvOffset,
 						scale,
 						scale,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var mask = new THREE.NodeTexture(decalDiffuse, uvScale);
-					var maskAlphaChannel = new THREE.NodeSwitch(mask, 'w');
+					var mask = new THREE.TextureNode(decalDiffuse, uvScale);
+					var maskAlphaChannel = new THREE.SwitchNode(mask, 'w');
 					
 					
-					var blend = new THREE.NodeMath3(
+					var blend = new THREE.Math3Node(
 						tex1,
 						tex1,
 						tex2,
 						tex2,
 						maskAlphaChannel,
 						maskAlphaChannel,
-						THREE.NodeMath3.MIX
+						THREE.Math3Node.MIX
 					);
 					);
 					
 					
 					mtl.color = blend;
 					mtl.color = blend;
@@ -687,12 +687,12 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodeStandardMaterial();
+					mtl = new THREE.StandardMaterialNode();
 					
 					
-					var tex = new THREE.NodeTexture(brick);
-					var sat = new THREE.NodeFloat(0);
+					var tex = new THREE.TextureNode(brick);
+					var sat = new THREE.FloatNode(0);
 					
 					
-					var satrgb = new THREE.NodeFunction([
+					var satrgb = new THREE.FunctionNode([
 					"vec3 satrgb(vec3 rgb, float adjustment) {",
 					"vec3 satrgb(vec3 rgb, float adjustment) {",
 						//"const vec3 W = vec3(0.2125, 0.7154, 0.0721);", // LUMA
 						//"const vec3 W = vec3(0.2125, 0.7154, 0.0721);", // LUMA
 						"vec3 intensity = vec3(dot(rgb, LUMA));",
 						"vec3 intensity = vec3(dot(rgb, LUMA));",
@@ -700,7 +700,7 @@
 					"}"
 					"}"
 					].join( "\n" ));
 					].join( "\n" ));
 			
 			
-					var saturation = new THREE.NodeFunctionCall(satrgb);
+					var saturation = new THREE.FunctionCallNode(satrgb);
 					saturation.input.rgb = tex;
 					saturation.input.rgb = tex;
 					saturation.input.adjustment = sat;
 					saturation.input.adjustment = sat;
 					
 					
@@ -710,7 +710,7 @@
 					//saturation.input[1] = sat;
 					//saturation.input[1] = sat;
 			
 			
 					mtl.color = saturation;
 					mtl.color = saturation;
-					mtl.environment = new THREE.NodeCubeTexture(cubemap); // optional
+					mtl.environment = new THREE.CubeTextureNode(cubemap); // optional
 			
 			
 					//	GUI
 					//	GUI
 			
 			
@@ -726,32 +726,32 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					
 					
-					var top = new THREE.NodeTexture(grass);
-					var bottom = new THREE.NodeTexture(brick);
+					var top = new THREE.TextureNode(grass);
+					var bottom = new THREE.TextureNode(brick);
 					
 					
-					var normal = new THREE.NodeNormal( THREE.NodeNormal.WORLD );
-					var normalY = new THREE.NodeSwitch(normal, 'y');
+					var normal = new THREE.NormalNode( THREE.NormalNode.WORLD );
+					var normalY = new THREE.SwitchNode(normal, 'y');
 			
 			
-					var hard = new THREE.NodeFloat(9);
-					var offset = new THREE.NodeFloat(-2.5);
+					var hard = new THREE.FloatNode(9);
+					var offset = new THREE.FloatNode(-2.5);
 			
 			
-					var hardClamp = new THREE.NodeOperator(
+					var hardClamp = new THREE.OperatorNode(
 						normalY,
 						normalY,
 						hard,
 						hard,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var offsetClamp = new THREE.NodeOperator(
+					var offsetClamp = new THREE.OperatorNode(
 						hardClamp,
 						hardClamp,
 						offset,
 						offset,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var clamp0at1 = new THREE.NodeMath1( offsetClamp, THREE.NodeMath1.SAT );
+					var clamp0at1 = new THREE.Math1Node( offsetClamp, THREE.Math1Node.SAT );
 					
 					
-					var blend = new THREE.NodeMath3(top,bottom,clamp0at1,THREE.NodeMath3.MIX);
+					var blend = new THREE.Math3Node(top,bottom,clamp0at1,THREE.Math3Node.MIX);
 			
 			
 					mtl.color = blend;
 					mtl.color = blend;
 			
 			
@@ -775,57 +775,57 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					
 					
-					var time = new THREE.NodeTime();
-					var scale = new THREE.NodeFloat(2);
-					var speed = new THREE.NodeFloat(.2);
-					var colorA = new THREE.NodeColor(0xFFFFFF);
-					var colorB = new THREE.NodeColor(0x0054df);
+					var time = new THREE.TimeNode();
+					var scale = new THREE.FloatNode(2);
+					var speed = new THREE.FloatNode(.2);
+					var colorA = new THREE.ColorNode(0xFFFFFF);
+					var colorB = new THREE.ColorNode(0x0054df);
 					
 					
-					var uv = new THREE.NodeUV();
+					var uv = new THREE.UVNode();
 					
 					
-					var timeScl = new THREE.NodeOperator(
+					var timeScl = new THREE.OperatorNode(
 						time,
 						time,
 						speed,
 						speed,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var displaceOffset = new THREE.NodeOperator(
+					var displaceOffset = new THREE.OperatorNode(
 						timeScl,
 						timeScl,
 						uv,
 						uv,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var tex = new THREE.NodeTexture(cloud, displaceOffset);
-					var texArea = new THREE.NodeSwitch(tex, 'w');
+					var tex = new THREE.TextureNode(cloud, displaceOffset);
+					var texArea = new THREE.SwitchNode(tex, 'w');
 					
 					
-					var displace = new THREE.NodeOperator(
-						new THREE.NodeNormal(),
+					var displace = new THREE.OperatorNode(
+						new THREE.NormalNode(),
 						texArea,
 						texArea,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var displaceScale = new THREE.NodeOperator(
+					var displaceScale = new THREE.OperatorNode(
 						displace,
 						displace,
 						scale,
 						scale,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var blend = new THREE.NodeOperator(
-						new THREE.NodePosition(),
+					var blend = new THREE.OperatorNode(
+						new THREE.PositionNode(),
 						displaceScale,
 						displaceScale,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var color = new THREE.NodeMath3(
+					var color = new THREE.Math3Node(
 						colorB,
 						colorB,
 						colorA,
 						colorA,
 						texArea,
 						texArea,
-						THREE.NodeMath3.MIX
+						THREE.Math3Node.MIX
 					);
 					);
 					
 					
-					mtl.color = mtl.specular = new THREE.NodeColor(0);
+					mtl.color = mtl.specular = new THREE.ColorNode(0);
 					mtl.emissive = color;
 					mtl.emissive = color;
 					mtl.transform = blend;
 					mtl.transform = blend;
 					
 					
@@ -861,45 +861,45 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					
 					
-					var time = new THREE.NodeTime();
-					var uv = new THREE.NodeUV();
+					var time = new THREE.TimeNode();
+					var uv = new THREE.UVNode();
 					
 					
-					var timeSpeedA = new THREE.NodeOperator(
+					var timeSpeedA = new THREE.OperatorNode(
 						time,
 						time,
-						new THREE.NodeVector2(0.3, 0.1),
-						THREE.NodeOperator.MUL
+						new THREE.Vector2Node(0.3, 0.1),
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var timeSpeedB = new THREE.NodeOperator(
+					var timeSpeedB = new THREE.OperatorNode(
 						time,
 						time,
-						new THREE.NodeVector2(0.15, 0.4),
-						THREE.NodeOperator.MUL
+						new THREE.Vector2Node(0.15, 0.4),
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var uvOffsetA = new THREE.NodeOperator(
+					var uvOffsetA = new THREE.OperatorNode(
 						timeSpeedA,
 						timeSpeedA,
 						uv,
 						uv,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var uvOffsetB = new THREE.NodeOperator(
+					var uvOffsetB = new THREE.OperatorNode(
 						timeSpeedB,
 						timeSpeedB,
 						uv,
 						uv,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var cloudA = new THREE.NodeTexture(cloud, uvOffsetA);
-					var cloudB = new THREE.NodeTexture(cloud, uvOffsetB);
+					var cloudA = new THREE.TextureNode(cloud, uvOffsetA);
+					var cloudB = new THREE.TextureNode(cloud, uvOffsetB);
 					
 					
-					var clouds = new THREE.NodeOperator(
+					var clouds = new THREE.OperatorNode(
 						cloudA,
 						cloudA,
 						cloudB,
 						cloudB,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					mtl.environment = new THREE.NodeColor(0xFFFFFF);
+					mtl.environment = new THREE.ColorNode(0xFFFFFF);
 					mtl.alpha = clouds;
 					mtl.alpha = clouds;
 					
 					
 					//	GUI
 					//	GUI
@@ -916,21 +916,21 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					var colorA = new THREE.NodeColor(0xFFFFFF);
-					var colorB = new THREE.NodeColor(0x0054df);
+					var colorA = new THREE.ColorNode(0xFFFFFF);
+					var colorB = new THREE.ColorNode(0x0054df);
 					
 					
-					var depth = new THREE.NodeCamera( THREE.NodeCamera.DEPTH );
+					var depth = new THREE.CameraNode( THREE.CameraNode.DEPTH );
 					depth.near.number = 1;
 					depth.near.number = 1;
 					depth.far.number = 200;
 					depth.far.number = 200;
 					
 					
-					var colors = new THREE.NodeMath3(
+					var colors = new THREE.Math3Node(
 						colorB,
 						colorB,
 						colorA,
 						colorA,
 						depth,
 						depth,
-						THREE.NodeMath3.MIX
+						THREE.Math3Node.MIX
 					);
 					);
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					mtl.color = colors;
 					mtl.color = colors;
 					
 					
 					//	GUI
 					//	GUI
@@ -965,15 +965,15 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodeStandardMaterial();
+					mtl = new THREE.StandardMaterialNode();
 					
 					
-					var hash2 = new THREE.NodeFunction([
+					var hash2 = new THREE.FunctionNode([
 					"vec2 hash2(vec2 p) {",
 					"vec2 hash2(vec2 p) {",
 						"return fract(sin(vec2(dot(p, vec2(123.4, 748.6)), dot(p, vec2(547.3, 659.3))))*5232.85324);",
 						"return fract(sin(vec2(dot(p, vec2(123.4, 748.6)), dot(p, vec2(547.3, 659.3))))*5232.85324);",
 					"}"
 					"}"
 					].join( "\n" ));
 					].join( "\n" ));
 					
 					
-					var voronoi = new THREE.NodeFunction([
+					var voronoi = new THREE.FunctionNode([
 					// Based off of iq's described here: http://www.iquilezles.org/www/articles/voronoili
 					// Based off of iq's described here: http://www.iquilezles.org/www/articles/voronoili
 					"float voronoi(vec2 p, in float time) {",
 					"float voronoi(vec2 p, in float time) {",
 						"vec2 n = floor(p);",
 						"vec2 n = floor(p);",
@@ -997,7 +997,7 @@
 					"}"
 					"}"
 					].join( "\n" ), [hash2]); // define hash2 as dependencies
 					].join( "\n" ), [hash2]); // define hash2 as dependencies
 					
 					
-					var voronoiLayers = new THREE.NodeFunction([
+					var voronoiLayers = new THREE.FunctionNode([
 					// based on https://www.shadertoy.com/view/4tXSDf
 					// based on https://www.shadertoy.com/view/4tXSDf
 					"float voronoiLayers(vec2 p, in float time) {",
 					"float voronoiLayers(vec2 p, in float time) {",
 						"float v = 0.0;",
 						"float v = 0.0;",
@@ -1011,74 +1011,74 @@
 					"}"
 					"}"
 					].join( "\n" ), [voronoi]); // define voronoi as dependencies
 					].join( "\n" ), [voronoi]); // define voronoi as dependencies
 
 
-					var time = new THREE.NodeTime();
-					var timeScale = new THREE.NodeFloat(2);
+					var time = new THREE.TimeNode();
+					var timeScale = new THREE.FloatNode(2);
 					
 					
-					var alpha = new THREE.NodeFloat(1);
-					var scale = new THREE.NodeFloat(.1);
-					var intensity = new THREE.NodeFloat(1.5);
+					var alpha = new THREE.FloatNode(1);
+					var scale = new THREE.FloatNode(.1);
+					var intensity = new THREE.FloatNode(1.5);
 					
 					
-					var color = new THREE.NodeColor(0xFFFFFF);
-					var colorA = new THREE.NodeColor(0xFFFFFF);
-					var colorB = new THREE.NodeColor(0x0054df);
+					var color = new THREE.ColorNode(0xFFFFFF);
+					var colorA = new THREE.ColorNode(0xFFFFFF);
+					var colorB = new THREE.ColorNode(0x0054df);
 					
 					
-					var worldPos = new THREE.NodePosition( THREE.NodePosition.WORLD );
-					var worldPosTop = new THREE.NodeSwitch(worldPos, 'xz');
+					var worldPos = new THREE.PositionNode( THREE.PositionNode.WORLD );
+					var worldPosTop = new THREE.SwitchNode(worldPos, 'xz');
 					
 					
-					var pos = new THREE.NodePosition( THREE.NodePosition.WORLD );
-					var posNorm = new THREE.NodeMath1(pos, THREE.NodeMath1.NORMALIZE);
+					var pos = new THREE.PositionNode( THREE.PositionNode.WORLD );
+					var posNorm = new THREE.Math1Node(pos, THREE.Math1Node.NORMALIZE);
 					
 					
-					var mask = new THREE.NodeSwitch(posNorm, 'y');
+					var mask = new THREE.SwitchNode(posNorm, 'y');
 					
 					
 					// clamp0at1
 					// clamp0at1
-					mask = new THREE.NodeMath1( mask, THREE.NodeMath1.SAT );
+					mask = new THREE.Math1Node( mask, THREE.Math1Node.SAT );
 					
 					
-					var timeOffset = new THREE.NodeOperator(
+					var timeOffset = new THREE.OperatorNode(
 						time,
 						time,
 						timeScale,
 						timeScale,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);					
 					);					
 					
 					
-					var uvPos = new THREE.NodeOperator(
+					var uvPos = new THREE.OperatorNode(
 						worldPosTop,
 						worldPosTop,
 						scale,
 						scale,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);	
 					);	
 					
 					
-					var voronoi = new THREE.NodeFunctionCall(voronoiLayers);
+					var voronoi = new THREE.FunctionCallNode(voronoiLayers);
 					voronoi.input.p = uvPos;
 					voronoi.input.p = uvPos;
 					voronoi.input.time = timeOffset;
 					voronoi.input.time = timeOffset;
 					
 					
-					var maskCaustic = new THREE.NodeOperator(
+					var maskCaustic = new THREE.OperatorNode(
 						alpha,
 						alpha,
 						mask,
 						mask,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);	
 					);	
 					
 					
-					var voronoiIntensity = new THREE.NodeOperator(
+					var voronoiIntensity = new THREE.OperatorNode(
 						voronoi,
 						voronoi,
 						intensity,
 						intensity,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);	
 					);	
 					
 					
-					var voronoiColors = new THREE.NodeMath3(
+					var voronoiColors = new THREE.Math3Node(
 						colorB,
 						colorB,
 						colorA,
 						colorA,
-						new THREE.NodeMath1( voronoiIntensity, THREE.NodeMath1.SAT ), // mix needs clamp
-						THREE.NodeMath3.MIX
+						new THREE.Math1Node( voronoiIntensity, THREE.Math1Node.SAT ), // mix needs clamp
+						THREE.Math3Node.MIX
 					);
 					);
 					
 					
-					var caustic = new THREE.NodeMath3(
+					var caustic = new THREE.Math3Node(
 						color,
 						color,
 						voronoiColors,
 						voronoiColors,
 						maskCaustic,
 						maskCaustic,
-						THREE.NodeMath3.MIX
+						THREE.Math3Node.MIX
 					);
 					);
 					
 					
-					var causticLights = new THREE.NodeOperator(
+					var causticLights = new THREE.OperatorNode(
 						voronoiIntensity,
 						voronoiIntensity,
 						maskCaustic,
 						maskCaustic,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
 					mtl.color = caustic;
 					mtl.color = caustic;
@@ -1136,46 +1136,46 @@
 					
 					
 					move = true;
 					move = true;
 					
 					
-					mtl = new THREE.NodeStandardMaterial();
+					mtl = new THREE.StandardMaterialNode();
 					
 					
-					var scale = new THREE.NodeFloat(2);
-					var colorA = new THREE.NodeColor(0xFF6633);
-					var colorB = new THREE.NodeColor(0x3366FF);
+					var scale = new THREE.FloatNode(2);
+					var colorA = new THREE.ColorNode(0xFF6633);
+					var colorB = new THREE.ColorNode(0x3366FF);
 					
 					
-					var pos = new THREE.NodePosition();
-					var posNorm = new THREE.NodeMath1(pos, THREE.NodeMath1.NORMALIZE);					
+					var pos = new THREE.PositionNode();
+					var posNorm = new THREE.Math1Node(pos, THREE.Math1Node.NORMALIZE);					
 					
 					
-					var mask = new THREE.NodeSwitch(posNorm, 'y');
+					var mask = new THREE.SwitchNode(posNorm, 'y');
 					
 					
-					var velocity = new THREE.NodeVelocity( mesh, {
+					var velocity = new THREE.VelocityNode( mesh, {
 						type:'elastic', 
 						type:'elastic', 
 						spring:.8, 
 						spring:.8, 
 						friction:.9
 						friction:.9
 					} );
 					} );
 					
 					
-					var velocityArea = new THREE.NodeOperator(
+					var velocityArea = new THREE.OperatorNode(
 						mask,
 						mask,
 						scale,
 						scale,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var softVelocity = new THREE.NodeOperator(
+					var softVelocity = new THREE.OperatorNode(
 						velocity,
 						velocity,
 						velocityArea,
 						velocityArea,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var softPosition = new THREE.NodeOperator(
-						new THREE.NodePosition(),
+					var softPosition = new THREE.OperatorNode(
+						new THREE.PositionNode(),
 						softVelocity,
 						softVelocity,
-						THREE.NodeOperator.ADD
+						THREE.OperatorNode.ADD
 					);
 					);
 					
 					
-					var colors = new THREE.NodeMath3(
+					var colors = new THREE.Math3Node(
 						colorB,
 						colorB,
 						colorA,
 						colorA,
 						mask,
 						mask,
-						THREE.NodeMath3.MIX
+						THREE.Math3Node.MIX
 					);
 					);
 					
 					
 					mtl.color = colors;
 					mtl.color = colors;
@@ -1219,36 +1219,36 @@
 					
 					
 					//	MATERIAL
 					//	MATERIAL
 					
 					
-					mtl = new THREE.NodePhongMaterial();
+					mtl = new THREE.PhongMaterialNode();
 					
 					
-					var time = new THREE.NodeTime();
-					var speed = new THREE.NodeFloat(.5);
+					var time = new THREE.TimeNode();
+					var speed = new THREE.FloatNode(.5);
 					
 					
-					var color = new THREE.NodeColor(0x98ff00);
+					var color = new THREE.ColorNode(0x98ff00);
 					
 					
-					var timeSpeed = new THREE.NodeOperator(
+					var timeSpeed = new THREE.OperatorNode(
 						time,
 						time,
 						speed,
 						speed,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var sinCycleInSecs = new THREE.NodeOperator(
+					var sinCycleInSecs = new THREE.OperatorNode(
 						timeSpeed, 
 						timeSpeed, 
-						new THREE.NodeConst( THREE.NodeConst.PI2 ),
-						THREE.NodeOperator.MUL
+						new THREE.ConstNode( THREE.ConstNode.PI2 ),
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var cycle = new THREE.NodeMath1(sinCycleInSecs, THREE.NodeMath1.SIN);
+					var cycle = new THREE.Math1Node(sinCycleInSecs, THREE.Math1Node.SIN);
 					
 					
-					var cycleColor = new THREE.NodeOperator(
+					var cycleColor = new THREE.OperatorNode(
 						cycle,
 						cycle,
 						color,
 						color,
-						THREE.NodeOperator.MUL
+						THREE.OperatorNode.MUL
 					);
 					);
 					
 					
-					var cos = new THREE.NodeMath1(cycleColor, THREE.NodeMath1.SIN);
+					var cos = new THREE.Math1Node(cycleColor, THREE.Math1Node.SIN);
 					
 					
-					mtl.color = new THREE.NodeColor(0);
+					mtl.color = new THREE.ColorNode(0);
 					mtl.emissive = cos;
 					mtl.emissive = cos;
 					
 					
 					//	GUI
 					//	GUI