Parcourir la source

unify Math1..3 to MathNode

sunag il y a 6 ans
Parent
commit
4665931e7b

+ 1 - 3
examples/js/nodes/Nodes.js

@@ -50,9 +50,7 @@ export { ResolutionNode } from './accessors/ResolutionNode.js';
 
 // math
 
-export { Math1Node } from './math/Math1Node.js';
-export { Math2Node } from './math/Math2Node.js';
-export { Math3Node } from './math/Math3Node.js';
+export { MathNode } from './math/MathNode.js';
 export { OperatorNode } from './math/OperatorNode.js';
 export { CondNode } from './math/CondNode.js';
 

+ 2 - 6
examples/js/nodes/THREE.Nodes.js

@@ -50,9 +50,7 @@ import {
 
 	// math
 
-	Math1Node,
-	Math2Node,
-	Math3Node,
+	MathNode,
 	OperatorNode,
 	CondNode,
 
@@ -163,9 +161,7 @@ THREE.ResolutionNode = ResolutionNode;
 
 // math
 
-THREE.Math1Node = Math1Node;
-THREE.Math2Node = Math2Node;
-THREE.Math3Node = Math3Node;
+THREE.MathNode = MathNode;
 THREE.OperatorNode = OperatorNode;
 THREE.CondNode = CondNode;
 

+ 7 - 7
examples/js/nodes/math/CondNode.js

@@ -32,10 +32,10 @@ CondNode.prototype.nodeType = "Cond";
 CondNode.prototype.getType = function ( builder ) {
 
 	if (this.ifNode) {
-		
+
 		var ifType = this.ifNode.getType( builder );
 		var elseType = this.elseNode.getType( builder );
-		
+
 		if ( builder.getTypeLength( elseType ) > builder.getTypeLength( ifType ) ) {
 
 			return elseType;
@@ -43,7 +43,7 @@ CondNode.prototype.getType = function ( builder ) {
 		}
 
 		return ifType;
-		
+
 	}
 	
 	return 'b';
@@ -69,18 +69,18 @@ CondNode.prototype.generate = function ( builder, output ) {
 		a = this.a.build( builder, condType ),
 		b = this.b.build( builder, condType ),
 		code;
-		
+
 	if (this.ifNode) {
-		
+
 		var ifCode = this.ifNode.build( builder, type ),
 			elseCode = this.elseNode.build( builder, type );
 		
 		code = '( ' + [ a, this.op, b, '?', ifCode, ':', elseCode ].join( ' ' ) + ' )';
-		
+
 	} else {
 
 		code = '( ' + a + ' ' + this.op + ' ' +  b  + ' )';
-		
+
 	}
 
 	return builder.format( code, this.getType( builder ), output );

+ 0 - 117
examples/js/nodes/math/Math1Node.js

@@ -1,117 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-import { TempNode } from '../core/TempNode.js';
-
-function Math1Node( a, method ) {
-
-	TempNode.call( this );
-
-	this.a = a;
-
-	this.method = method;
-
-}
-
-Math1Node.RAD = 'radians';
-Math1Node.DEG = 'degrees';
-Math1Node.EXP = 'exp';
-Math1Node.EXP2 = 'exp2';
-Math1Node.LOG = 'log';
-Math1Node.LOG2 = 'log2';
-Math1Node.SQRT = 'sqrt';
-Math1Node.INV_SQRT = 'inversesqrt';
-Math1Node.FLOOR = 'floor';
-Math1Node.CEIL = 'ceil';
-Math1Node.NORMALIZE = 'normalize';
-Math1Node.FRACT = 'fract';
-Math1Node.SATURATE = 'saturate';
-Math1Node.SIN = 'sin';
-Math1Node.COS = 'cos';
-Math1Node.TAN = 'tan';
-Math1Node.ASIN = 'asin';
-Math1Node.ACOS = 'acos';
-Math1Node.ARCTAN = 'atan';
-Math1Node.ABS = 'abs';
-Math1Node.SIGN = 'sign';
-Math1Node.LENGTH = 'length';
-Math1Node.NEGATE = 'negate';
-Math1Node.INVERT = 'invert';
-
-Math1Node.prototype = Object.create( TempNode.prototype );
-Math1Node.prototype.constructor = Math1Node;
-Math1Node.prototype.nodeType = "Math1";
-
-Math1Node.prototype.getType = function ( builder ) {
-
-	switch ( this.method ) {
-
-		case Math1Node.LENGTH:
-
-			return 'f';
-
-	}
-
-	return this.a.getType( builder );
-
-};
-
-Math1Node.prototype.generate = function ( builder, output ) {
-
-	var type = this.getType( builder ),
-		result = this.a.build( builder, type );
-
-	switch ( this.method ) {
-
-		case Math1Node.NEGATE:
-
-			result = '( -' + result + ' )';
-
-			break;
-
-		case Math1Node.INVERT:
-
-			result = '( 1.0 - ' + result + ' )';
-
-			break;
-
-		default:
-
-			result = this.method + '( ' + result + ' )';
-
-			break;
-
-	}
-
-	return builder.format( result, type, output );
-
-};
-
-Math1Node.prototype.copy = function ( source ) {
-
-	TempNode.prototype.copy.call( this, source );
-
-	this.a = source.a;
-	this.method = source.method;
-
-};
-
-Math1Node.prototype.toJSON = function ( meta ) {
-
-	var data = this.getJSONNode( meta );
-
-	if ( ! data ) {
-
-		data = this.createJSONNode( meta );
-
-		data.a = this.a.toJSON( meta ).uuid;
-		data.method = this.method;
-
-	}
-
-	return data;
-
-};
-
-export { Math1Node };

+ 0 - 140
examples/js/nodes/math/Math2Node.js

@@ -1,140 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-import { TempNode } from '../core/TempNode.js';
-
-function Math2Node( a, b, method ) {
-
-	TempNode.call( this );
-
-	this.a = a;
-	this.b = b;
-
-	this.method = method;
-
-}
-
-Math2Node.MIN = 'min';
-Math2Node.MAX = 'max';
-Math2Node.MOD = 'mod';
-Math2Node.STEP = 'step';
-Math2Node.REFLECT = 'reflect';
-Math2Node.DISTANCE = 'distance';
-Math2Node.DOT = 'dot';
-Math2Node.CROSS = 'cross';
-Math2Node.POW = 'pow';
-
-Math2Node.prototype = Object.create( TempNode.prototype );
-Math2Node.prototype.constructor = Math2Node;
-Math2Node.prototype.nodeType = "Math2";
-
-Math2Node.prototype.getInputType = function ( builder ) {
-
-	// use the greater length vector
-
-	if ( builder.getTypeLength( this.b.getType( builder ) ) > builder.getTypeLength( this.a.getType( builder ) ) ) {
-
-		return this.b.getType( builder );
-
-	}
-
-	return this.a.getType( builder );
-
-};
-
-Math2Node.prototype.getType = function ( builder ) {
-
-	switch ( this.method ) {
-
-		case Math2Node.DISTANCE:
-		case Math2Node.DOT:
-
-			return 'f';
-
-		case Math2Node.CROSS:
-
-			return 'v3';
-
-	}
-
-	return this.getInputType( builder );
-
-};
-
-Math2Node.prototype.generate = function ( builder, output ) {
-
-	var a, b,
-		type = this.getInputType( builder ),
-		al = builder.getTypeLength( this.a.getType( builder ) ),
-		bl = builder.getTypeLength( this.b.getType( builder ) );
-
-	// optimzer
-
-	switch ( this.method ) {
-
-		case Math2Node.CROSS:
-
-			a = this.a.build( builder, 'v3' );
-			b = this.b.build( builder, 'v3' );
-
-			break;
-
-		case Math2Node.STEP:
-
-			a = this.a.build( builder, al === 1 ? 'f' : type );
-			b = this.b.build( builder, type );
-
-			break;
-
-		case Math2Node.MIN:
-		case Math2Node.MAX:
-		case Math2Node.MOD:
-
-			a = this.a.build( builder, type );
-			b = this.b.build( builder, bl === 1 ? 'f' : type );
-
-			break;
-
-		default:
-
-			a = this.a.build( builder, type );
-			b = this.b.build( builder, type );
-
-			break;
-
-	}
-
-	return builder.format( this.method + '( ' + a + ', ' + b + ' )', this.getType( builder ), output );
-
-};
-
-Math2Node.prototype.copy = function ( source ) {
-
-	TempNode.prototype.copy.call( this, source );
-
-	this.a = source.a;
-	this.b = source.b;
-	this.method = source.method;
-
-};
-
-Math2Node.prototype.toJSON = function ( meta ) {
-
-	var data = this.getJSONNode( meta );
-
-	if ( ! data ) {
-
-		data = this.createJSONNode( meta );
-
-		data.a = this.a.toJSON( meta ).uuid;
-		data.b = this.b.toJSON( meta ).uuid;
-		data.method = this.method;
-
-	}
-
-	return data;
-
-};
-
-export { Math2Node };

+ 0 - 121
examples/js/nodes/math/Math3Node.js

@@ -1,121 +0,0 @@
-/**
- * @author sunag / http://www.sunag.com.br/
- */
-
-import { TempNode } from '../core/TempNode.js';
-
-function Math3Node( a, b, c, method ) {
-
-	TempNode.call( this );
-
-	this.a = a;
-	this.b = b;
-	this.c = c;
-
-	this.method = method;
-
-}
-
-Math3Node.MIX = 'mix';
-Math3Node.CLAMP = 'clamp';
-Math3Node.REFRACT = 'refract';
-Math3Node.SMOOTHSTEP = 'smoothstep';
-Math3Node.FACEFORWARD = 'faceforward';
-
-Math3Node.prototype = Object.create( TempNode.prototype );
-Math3Node.prototype.constructor = Math3Node;
-Math3Node.prototype.nodeType = "Math3";
-
-Math3Node.prototype.getType = function ( builder ) {
-
-	var a = builder.getTypeLength( this.a.getType( builder ) );
-	var b = builder.getTypeLength( this.b.getType( builder ) );
-	var c = builder.getTypeLength( this.c.getType( builder ) );
-
-	if ( a > b && a > c ) {
-
-		return this.a.getType( builder );
-
-	} else if ( b > c ) {
-
-		return this.b.getType( builder );
-
-	}
-
-	return this.c.getType( builder );
-
-};
-
-Math3Node.prototype.generate = function ( builder, output ) {
-
-	var a, b, c,
-		al = builder.getTypeLength( this.a.getType( builder ) ),
-		bl = builder.getTypeLength( this.b.getType( builder ) ),
-		cl = builder.getTypeLength( this.c.getType( builder ) ),
-		type = this.getType( builder );
-
-	// optimzer
-
-	switch ( this.method ) {
-
-		case Math3Node.REFRACT:
-
-			a = this.a.build( builder, type );
-			b = this.b.build( builder, type );
-			c = this.c.build( builder, 'f' );
-
-			break;
-
-		case Math3Node.MIX:
-
-			a = this.a.build( builder, type );
-			b = this.b.build( builder, type );
-			c = this.c.build( builder, cl === 1 ? 'f' : type );
-
-			break;
-
-		default:
-
-			a = this.a.build( builder, type );
-			b = this.b.build( builder, type );
-			c = this.c.build( builder, type );
-
-			break;
-
-	}
-
-	return builder.format( this.method + '( ' + a + ', ' + b + ', ' + c + ' )', type, output );
-
-};
-
-Math3Node.prototype.copy = function ( source ) {
-
-	TempNode.prototype.copy.call( this, source );
-
-	this.a = source.a;
-	this.b = source.b;
-	this.c = source.c;
-	this.method = source.method;
-
-};
-
-Math3Node.prototype.toJSON = function ( meta ) {
-
-	var data = this.getJSONNode( meta );
-
-	if ( ! data ) {
-
-		data = this.createJSONNode( meta );
-
-		data.a = this.a.toJSON( meta ).uuid;
-		data.b = this.b.toJSON( meta ).uuid;
-		data.c = this.c.toJSON( meta ).uuid;
-		data.method = this.method;
-
-	}
-
-	return data;
-
-};
-
-export { Math3Node };

+ 268 - 0
examples/js/nodes/math/MathNode.js

@@ -0,0 +1,268 @@
+/**
+ * @author sunag / http://www.sunag.com.br/
+ */
+
+import { TempNode } from '../core/TempNode.js';
+
+function MathNode( a, bOrMethod, cOrMethod, method ) {
+
+	TempNode.call( this );
+
+	this.a = a;
+	typeof bOrMethod !== 'string' ? this.b = bOrMethod : method = bOrMethod;
+	typeof cOrMethod !== 'string' ? this.c = cOrMethod : method = cOrMethod;
+
+	this.method = method;
+
+}
+
+// 1 input
+
+MathNode.RAD = 'radians';
+MathNode.DEG = 'degrees';
+MathNode.EXP = 'exp';
+MathNode.EXP2 = 'exp2';
+MathNode.LOG = 'log';
+MathNode.LOG2 = 'log2';
+MathNode.SQRT = 'sqrt';
+MathNode.INV_SQRT = 'inversesqrt';
+MathNode.FLOOR = 'floor';
+MathNode.CEIL = 'ceil';
+MathNode.NORMALIZE = 'normalize';
+MathNode.FRACT = 'fract';
+MathNode.SATURATE = 'saturate';
+MathNode.SIN = 'sin';
+MathNode.COS = 'cos';
+MathNode.TAN = 'tan';
+MathNode.ASIN = 'asin';
+MathNode.ACOS = 'acos';
+MathNode.ARCTAN = 'atan';
+MathNode.ABS = 'abs';
+MathNode.SIGN = 'sign';
+MathNode.LENGTH = 'length';
+MathNode.NEGATE = 'negate';
+MathNode.INVERT = 'invert';
+
+// 2 inputs
+
+MathNode.MIN = 'min';
+MathNode.MAX = 'max';
+MathNode.MOD = 'mod';
+MathNode.STEP = 'step';
+MathNode.REFLECT = 'reflect';
+MathNode.DISTANCE = 'distance';
+MathNode.DOT = 'dot';
+MathNode.CROSS = 'cross';
+MathNode.POW = 'pow';
+
+// 3 inputs
+
+MathNode.MIX = 'mix';
+MathNode.CLAMP = 'clamp';
+MathNode.REFRACT = 'refract';
+MathNode.SMOOTHSTEP = 'smoothstep';
+MathNode.FACEFORWARD = 'faceforward';
+
+MathNode.prototype = Object.create( TempNode.prototype );
+MathNode.prototype.constructor = MathNode;
+MathNode.prototype.nodeType = "Math";
+
+MathNode.prototype.getNumInputs = function ( builder ) {
+
+	switch ( this.method ) {
+
+		case MathNode.MIX:
+		case MathNode.CLAMP:
+		case MathNode.REFRACT:
+		case MathNode.SMOOTHSTEP:
+		case MathNode.FACEFORWARD:
+			
+			return 3;
+
+		case MathNode.MIN:
+		case MathNode.MAX:
+		case MathNode.MOD:
+		case MathNode.STEP:
+		case MathNode.REFLECT:
+		case MathNode.DISTANCE:
+		case MathNode.DOT:
+		case MathNode.CROSS:
+		case MathNode.POW:
+
+			return 2;
+
+		default:
+
+			return 1;
+
+	}
+
+};
+
+MathNode.prototype.getInputType = function ( builder ) {
+
+	var a = builder.getTypeLength( this.a.getType( builder ) );
+	var b = this.b ? builder.getTypeLength( this.b.getType( builder ) ) : 0;
+	var c = this.c ? builder.getTypeLength( this.c.getType( builder ) ) : 0;
+
+	if ( a > b && a > c ) {
+
+		return this.a.getType( builder );
+
+	} else if ( b > c ) {
+
+		return this.b.getType( builder );
+
+	}
+
+	return this.c.getType( builder );
+
+};
+
+MathNode.prototype.getType = function ( builder ) {
+
+	switch ( this.method ) {
+
+		case MathNode.LENGTH:
+		case MathNode.DISTANCE:
+		case MathNode.DOT:
+
+			return 'f';
+
+		case MathNode.CROSS:
+
+			return 'v3';
+
+	}
+
+	return this.getInputType( builder );
+
+};
+
+MathNode.prototype.generate = function ( builder, output ) {
+
+	var a, b, c,
+		al = this.a ? builder.getTypeLength( this.a.getType( builder ) ) : 0,
+		bl = this.b ? builder.getTypeLength( this.b.getType( builder ) ) : 0,
+		cl = this.c ? builder.getTypeLength( this.c.getType( builder ) ) : 0,
+		inputType = this.getInputType( builder ),
+		nodeType = this.getType( builder );
+
+	switch ( this.method ) {
+
+		// 1 input
+
+		case MathNode.NEGATE:
+
+			return builder.format( '( -' + this.a.build( builder, inputType ) + ' )', inputType, output );
+
+		case MathNode.INVERT:
+
+			return builder.format( '( 1.0 - ' + this.a.build( builder, inputType ) + ' )', inputType, output );
+
+		// 2 inputs
+
+		case MathNode.CROSS:
+
+			a = this.a.build( builder, 'v3' );
+			b = this.b.build( builder, 'v3' );
+
+			break;
+
+		case MathNode.STEP:
+
+			a = this.a.build( builder, al === 1 ? 'f' : inputType );
+			b = this.b.build( builder, inputType );
+
+			break;
+
+		case MathNode.MIN:
+		case MathNode.MAX:
+		case MathNode.MOD:
+
+			a = this.a.build( builder, inputType );
+			b = this.b.build( builder, bl === 1 ? 'f' : inputType );
+
+			break;
+
+		// 3 inputs
+
+		case MathNode.REFRACT:
+
+			a = this.a.build( builder, inputType );
+			b = this.b.build( builder, inputType );
+			c = this.c.build( builder, 'f' );
+
+			break;
+
+		case MathNode.MIX:
+
+			a = this.a.build( builder, inputType );
+			b = this.b.build( builder, inputType );
+			c = this.c.build( builder, cl === 1 ? 'f' : inputType );
+
+			break;
+
+		// default
+
+		default:
+
+			a = this.a.build( builder, inputType );
+			if ( this.b ) b = this.b.build( builder, inputType );
+			if ( this.c ) c = this.c.build( builder, inputType );
+
+			break;
+
+	}
+
+	// build function call
+
+	var params = [];
+	params.push( a );
+	if (b) params.push( b );
+	if (c) params.push( c );
+
+	var numInputs = this.getNumInputs( builder );
+
+	if (params.length !== numInputs) {
+
+		throw Error(`Arguments not match used in "${this.method}". Require ${numInputs}, currently ${params.length}.`);
+
+	}
+
+	return builder.format( this.method + '( ' + params.join(', ') + ' )', nodeType, output );
+
+};
+
+MathNode.prototype.copy = function ( source ) {
+
+	TempNode.prototype.copy.call( this, source );
+
+	this.a = source.a;
+	this.b = source.b;
+	this.c = source.c;
+	this.method = source.method;
+
+};
+
+MathNode.prototype.toJSON = function ( meta ) {
+
+	var data = this.getJSONNode( meta );
+
+	if ( ! data ) {
+
+		data = this.createJSONNode( meta );
+
+		data.a = this.a.toJSON( meta ).uuid;
+		if ( this.b ) data.b = this.b.toJSON( meta ).uuid;
+		if ( this.c ) data.c = this.c.toJSON( meta ).uuid;
+
+		data.method = this.method;
+
+	}
+
+	return data;
+
+};
+
+export { MathNode };

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
examples/nodes/caustic.json


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
examples/nodes/displace.json


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
examples/nodes/wave.json


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
examples/nodes/xray.json


+ 91 - 91
examples/webgl_materials_nodes.html

@@ -293,7 +293,7 @@
 						mtl.environment = new THREE.CubeTextureNode( cubemap );
 						mtl.environmentAlpha = mask;
 						mtl.normal = new THREE.NormalMapNode( new THREE.TextureNode( getTexture( "grassNormal" ) ) );
-						mtl.normal.scale = new THREE.Math1Node( mask, THREE.Math1Node.INVERT );
+						mtl.normal.scale = new THREE.MathNode( mask, THREE.MathNode.INVERT );
 
 						break;
 
@@ -326,22 +326,22 @@
 						var roughnessB = new THREE.FloatNode( 0 );
 						var metalnessB = new THREE.FloatNode( 1 );
 
-						var roughness = new THREE.Math3Node(
+						var roughness = new THREE.MathNode(
 							roughnessA,
 							roughnessB,
 							mask,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
-						var metalness = new THREE.Math3Node(
+						var metalness = new THREE.MathNode(
 							metalnessA,
 							metalnessB,
 							mask,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						var normalMask = new THREE.OperatorNode(
-							new THREE.Math1Node( mask, THREE.Math1Node.INVERT ),
+							new THREE.MathNode( mask, THREE.MathNode.INVERT ),
 							normalScale,
 							THREE.OperatorNode.MUL
 						);
@@ -539,22 +539,22 @@
 						var clearCoat = new THREE.FloatNode( 1 );
 						var clearCoatRoughness = new THREE.FloatNode( 1 );
 
-						var roughness = new THREE.Math3Node(
+						var roughness = new THREE.MathNode(
 							roughnessA,
 							roughnessB,
 							mask,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
-						var metalness = new THREE.Math3Node(
+						var metalness = new THREE.MathNode(
 							metalnessA,
 							metalnessB,
 							mask,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						var normalMask = new THREE.OperatorNode(
-							new THREE.Math1Node( mask, THREE.Math1Node.INVERT ),
+							new THREE.MathNode( mask, THREE.MathNode.INVERT ),
 							normalScale,
 							THREE.OperatorNode.MUL
 						);
@@ -662,7 +662,7 @@
 							THREE.OperatorNode.ADD
 						);
 
-						var wave = new THREE.Math1Node( posContinuous, THREE.Math1Node.SIN );
+						var wave = new THREE.MathNode( posContinuous, THREE.MathNode.SIN );
 						wave = new THREE.SwitchNode( wave, 'x' );
 
 						var waveScale = new THREE.OperatorNode(
@@ -689,11 +689,11 @@
 							THREE.OperatorNode.ADD
 						);
 
-						var color = new THREE.Math3Node(
+						var color = new THREE.MathNode(
 							colorB,
 							colorA,
 							wave,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						mtl.color = color;
@@ -753,10 +753,10 @@
 						var power = new THREE.FloatNode( 3 );
 						var color = new THREE.ColorNode( 0xFFFFFF );
 
-						var viewZ = new THREE.Math2Node(
+						var viewZ = new THREE.MathNode(
 							new THREE.NormalNode(),
 							new THREE.Vector3Node( 0, 0, - intensity ),
-							THREE.Math2Node.DOT
+							THREE.MathNode.DOT
 						);
 
 						var rim = new THREE.OperatorNode(
@@ -765,10 +765,10 @@
 							THREE.OperatorNode.ADD
 						);
 
-						var rimPower = new THREE.Math2Node(
+						var rimPower = new THREE.MathNode(
 							rim,
 							power,
-							THREE.Math2Node.POW
+							THREE.MathNode.POW
 						);
 
 						var rimColor = new THREE.OperatorNode(
@@ -813,7 +813,7 @@
 								mtl.blending = THREE.AdditiveBlending;
 								mtl.depthWrite = false;
 
-							}				else {
+							} else {
 
 								mtl.emissive = rimColor;
 								mtl.alpha = null;
@@ -1034,10 +1034,10 @@
 						var power = new THREE.FloatNode( 1 );
 						var color = new THREE.CubeTextureNode( cubemap );
 
-						var viewZ = new THREE.Math2Node(
+						var viewZ = new THREE.MathNode(
 							new THREE.NormalNode(),
 							new THREE.Vector3Node( 0, 0, - 1 ),
-							THREE.Math2Node.DOT
+							THREE.MathNode.DOT
 						);
 
 						var theta = new THREE.OperatorNode(
@@ -1046,10 +1046,10 @@
 							THREE.OperatorNode.ADD
 						);
 
-						var thetaPower = new THREE.Math2Node(
+						var thetaPower = new THREE.MathNode(
 							theta,
 							power,
-							THREE.Math2Node.POW
+							THREE.MathNode.POW
 						);
 
 						var fresnel = new THREE.OperatorNode(
@@ -1060,7 +1060,7 @@
 
 						mtl.color = new THREE.ColorNode( 0x3399FF );
 						mtl.environment = color;
-						mtl.environmentAlpha = new THREE.Math1Node( fresnel, THREE.Math1Node.SATURATE );
+						mtl.environmentAlpha = new THREE.MathNode( fresnel, THREE.MathNode.SATURATE );
 
 						// GUI
 
@@ -1106,11 +1106,11 @@
 						var mask = new THREE.TextureNode( getTexture( "decalDiffuse" ), uvScale );
 						var maskAlphaChannel = new THREE.SwitchNode( mask, 'w' );
 
-						var blend = new THREE.Math3Node(
+						var blend = new THREE.MathNode(
 							tex1,
 							tex2,
 							maskAlphaChannel,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						mtl.color = blend;
@@ -1196,9 +1196,9 @@
 							THREE.OperatorNode.ADD
 						);
 
-						var clamp0at1 = new THREE.Math1Node( offsetClamp, THREE.Math1Node.SATURATE );
+						var clamp0at1 = new THREE.MathNode( offsetClamp, THREE.MathNode.SATURATE );
 
-						var blend = new THREE.Math3Node( top, bottom, clamp0at1, THREE.Math3Node.MIX );
+						var blend = new THREE.MathNode( top, bottom, clamp0at1, THREE.MathNode.MIX );
 
 						mtl.color = blend;
 
@@ -1269,11 +1269,11 @@
 							THREE.OperatorNode.ADD
 						);
 
-						var color = new THREE.Math3Node(
+						var color = new THREE.MathNode(
 							colorB,
 							colorA,
 							texArea,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						mtl.color = mtl.specular = new THREE.ColorNode( 0 );
@@ -1323,11 +1323,11 @@
 						var tex = new THREE.TextureNode( getTexture( "cloud" ) );
 						var texArea = new THREE.SwitchNode( tex, 'w' );
 
-						var thresholdBorder = new THREE.Math3Node(
+						var thresholdBorder = new THREE.MathNode(
 							new THREE.OperatorNode( threshold, borderSize, THREE.OperatorNode.ADD ),
 							threshold,
 							texArea,
-							THREE.Math3Node.SMOOTHSTEP
+							THREE.MathNode.SMOOTHSTEP
 						);
 
 						var thresholdEmissive = new THREE.OperatorNode(
@@ -1395,7 +1395,7 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var cycle = new THREE.Math1Node( sinCycleInSecs, THREE.Math1Node.SIN );
+						var cycle = new THREE.MathNode( sinCycleInSecs, THREE.MathNode.SIN );
 
 						// round sin to 0 at 1
 						cycle = new THREE.OperatorNode( cycle, new THREE.FloatNode( 1 ), THREE.OperatorNode.ADD );
@@ -1407,11 +1407,11 @@
 						var tex = new THREE.TextureNode( getTexture( "cloud" ) );
 						var texArea = new THREE.SwitchNode( tex, 'w' );
 
-						var thresholdBorder = new THREE.Math3Node(
+						var thresholdBorder = new THREE.MathNode(
 							new THREE.OperatorNode( threshold, fireSize, THREE.OperatorNode.ADD ),
 							threshold,
 							texArea,
-							THREE.Math3Node.SMOOTHSTEP
+							THREE.MathNode.SMOOTHSTEP
 						);
 
 						var fireStartAnimatedColor = new THREE.ColorAdjustmentNode(
@@ -1426,18 +1426,18 @@
 							THREE.ColorAdjustmentNode.SATURATION
 						);
 
-						var fireColor = new THREE.Math3Node(
+						var fireColor = new THREE.MathNode(
 							fireEndAnimatedColor,
 							fireStartAnimatedColor,
 							thresholdBorder,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
-						var thresholdBurnedBorder = new THREE.Math3Node(
+						var thresholdBurnedBorder = new THREE.MathNode(
 							new THREE.OperatorNode( threshold, burnedSize, THREE.OperatorNode.ADD ),
 							threshold,
 							texArea,
-							THREE.Math3Node.SMOOTHSTEP
+							THREE.MathNode.SMOOTHSTEP
 						);
 
 						var fireEmissive = new THREE.OperatorNode(
@@ -1446,11 +1446,11 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var burnedResultColor = new THREE.Math3Node(
+						var burnedResultColor = new THREE.MathNode(
 							color,
 							burnedColor,
 							thresholdBurnedBorder,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						// APPLY
@@ -1583,11 +1583,11 @@
 						depth.near.value = 1;
 						depth.far.value = 200;
 
-						var colors = new THREE.Math3Node(
+						var colors = new THREE.MathNode(
 							colorB,
 							colorA,
 							depth,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						mtl = new THREE.PhongNodeMaterial();
@@ -1694,7 +1694,7 @@
 						var mask = new THREE.SwitchNode( worldNormal, 'y' );
 
 						// clamp0at1
-						mask = new THREE.Math1Node( mask, THREE.Math1Node.SATURATE );
+						mask = new THREE.MathNode( mask, THREE.MathNode.SATURATE );
 
 						var timeOffset = new THREE.OperatorNode(
 							time,
@@ -1724,18 +1724,18 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var voronoiColors = new THREE.Math3Node(
+						var voronoiColors = new THREE.MathNode(
 							colorB,
 							colorA,
-							new THREE.Math1Node( voronoiIntensity, THREE.Math1Node.SATURATE ), // mix needs clamp
-							THREE.Math3Node.MIX
+							new THREE.MathNode( voronoiIntensity, THREE.MathNode.SATURATE ), // mix needs clamp
+							THREE.MathNode.MIX
 						);
 
-						var caustic = new THREE.Math3Node(
+						var caustic = new THREE.MathNode(
 							color,
 							voronoiColors,
 							maskCaustic,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						var causticLights = new THREE.OperatorNode(
@@ -1806,7 +1806,7 @@
 						var colorB = new THREE.ColorNode( 0x3366FF );
 
 						var pos = new THREE.PositionNode();
-						var posNorm = new THREE.Math1Node( pos, THREE.Math1Node.NORMALIZE );
+						var posNorm = new THREE.MathNode( pos, THREE.MathNode.NORMALIZE );
 
 						var mask = new THREE.SwitchNode( posNorm, 'y' );
 
@@ -1834,11 +1834,11 @@
 							THREE.OperatorNode.ADD
 						);
 
-						var colors = new THREE.Math3Node(
+						var colors = new THREE.MathNode(
 							colorB,
 							colorA,
 							mask,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						mtl.color = colors;
@@ -1888,13 +1888,13 @@
 						var mildness = new THREE.FloatNode( 1.6 );
 						var fur = new THREE.FloatNode( .5 );
 
-						var posDirection = new THREE.Math1Node( new THREE.PositionNode( THREE.PositionNode.VIEW ), THREE.Math1Node.NORMALIZE );
-						var norDirection = new THREE.Math1Node( new THREE.NormalNode(), THREE.Math1Node.NORMALIZE );
+						var posDirection = new THREE.MathNode( new THREE.PositionNode( THREE.PositionNode.VIEW ), THREE.MathNode.NORMALIZE );
+						var norDirection = new THREE.MathNode( new THREE.NormalNode(), THREE.MathNode.NORMALIZE );
 
-						var viewZ = new THREE.Math2Node(
+						var viewZ = new THREE.MathNode(
 							posDirection,
 							norDirection,
-							THREE.Math2Node.DOT
+							THREE.MathNode.DOT
 						);
 
 						// without luma correction for now
@@ -1914,7 +1914,7 @@
 						mtl.normal = new THREE.NormalMapNode( new THREE.TextureNode( getTexture( "grassNormal" ) ) );
 						mtl.normal.scale = furScale;
 						mtl.environment = mildnessColor;
-						mtl.environmentAlpha = new THREE.Math1Node( viewZ, THREE.Math1Node.INVERT );
+						mtl.environmentAlpha = new THREE.MathNode( viewZ, THREE.MathNode.INVERT );
 						mtl.shininess = new THREE.FloatNode( 0 );
 
 						// GUI
@@ -1955,11 +1955,11 @@
 
 						var lightLuminance = new THREE.LuminanceNode( directLight );
 
-						var lightWrap = new THREE.Math3Node(
+						var lightWrap = new THREE.MathNode(
 							wrapShadow,
 							wrapLight,
 							lightLuminance,
-							THREE.Math3Node.SMOOTHSTEP
+							THREE.MathNode.SMOOTHSTEP
 						);
 
 						var lightTransition = new THREE.OperatorNode(
@@ -1968,7 +1968,7 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var wrappedLight = new THREE.Math1Node( lightTransition, THREE.Math1Node.SIN );
+						var wrappedLight = new THREE.MathNode( lightTransition, THREE.MathNode.SIN );
 
 						var wrappedLightColor = new THREE.OperatorNode(
 							wrappedLight,
@@ -1976,7 +1976,7 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var bloodArea = new THREE.Math1Node( wrappedLightColor, THREE.Math1Node.SATURATE );
+						var bloodArea = new THREE.MathNode( wrappedLightColor, THREE.MathNode.SATURATE );
 
 						var totalLight = new THREE.OperatorNode(
 							directLight,
@@ -2059,9 +2059,9 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var celLight = new THREE.Math1Node(
+						var celLight = new THREE.MathNode(
 							preCelLight,
-							THREE.Math1Node.CEIL
+							THREE.MathNode.CEIL
 						);
 
 						var posCelLight = new THREE.OperatorNode(
@@ -2072,18 +2072,18 @@
 
 						// LINE
 
-						var posDirection = new THREE.Math1Node( new THREE.PositionNode( THREE.PositionNode.VIEW ), THREE.Math1Node.NORMALIZE );
-						var norDirection = new THREE.Math1Node( new THREE.NormalNode(), THREE.Math1Node.NORMALIZE );
+						var posDirection = new THREE.MathNode( new THREE.PositionNode( THREE.PositionNode.VIEW ), THREE.MathNode.NORMALIZE );
+						var norDirection = new THREE.MathNode( new THREE.NormalNode(), THREE.MathNode.NORMALIZE );
 
-						var viewZ = new THREE.Math2Node(
+						var viewZ = new THREE.MathNode(
 							posDirection,
 							norDirection,
-							THREE.Math2Node.DOT
+							THREE.MathNode.DOT
 						);
 
-						var lineOutside = new THREE.Math1Node(
+						var lineOutside = new THREE.MathNode(
 							viewZ,
-							THREE.Math1Node.ABS
+							THREE.MathNode.ABS
 						);
 
 						var line = new THREE.OperatorNode(
@@ -2092,14 +2092,14 @@
 							THREE.OperatorNode.DIV
 						);
 
-						var lineScaled = new THREE.Math3Node(
+						var lineScaled = new THREE.MathNode(
 							line,
 							lineSize,
 							lineInner,
-							THREE.Math3Node.SMOOTHSTEP
+							THREE.MathNode.SMOOTHSTEP
 						);
 
-						var innerContour = new THREE.Math1Node( new THREE.Math1Node( lineScaled, THREE.Math1Node.SATURATE ), THREE.Math1Node.INVERT );
+						var innerContour = new THREE.MathNode( new THREE.MathNode( lineScaled, THREE.MathNode.SATURATE ), THREE.MathNode.INVERT );
 
 						// APPLY
 
@@ -2501,11 +2501,11 @@
 
 						var timer = new THREE.TimerNode( .01, THREE.TimerNode.LOCAL );
 
-						var color = new THREE.Math3Node(
+						var color = new THREE.MathNode(
 							rttStore,
 							blur,
 							new THREE.FloatNode( .6 ),
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						blur.horizontal = blur.vertical = timer;
@@ -2621,11 +2621,11 @@
 							uv: new THREE.UVNode()
 						} );
 
-						var color = new THREE.Math3Node(
+						var color = new THREE.MathNode(
 							new THREE.TextureNode( getTexture( "brick" ) ),
 							blurredTexture,
 							alpha,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						mtl.color = color;
@@ -2725,7 +2725,7 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var cycle = new THREE.Math1Node( sinCycleInSecs, THREE.Math1Node.SIN );
+						var cycle = new THREE.MathNode( sinCycleInSecs, THREE.MathNode.SIN );
 
 						var cycleColor = new THREE.OperatorNode(
 							cycle,
@@ -2733,7 +2733,7 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var cos = new THREE.Math1Node( cycleColor, THREE.Math1Node.SIN );
+						var cos = new THREE.MathNode( cycleColor, THREE.MathNode.SIN );
 
 						mtl.color = new THREE.ColorNode( 0 );
 						mtl.emissive = cos;
@@ -2758,10 +2758,10 @@
 						var viewPos = new THREE.PositionNode( THREE.PositionNode.VIEW );
 						var cameraPosition = new THREE.CameraNode( THREE.CameraNode.POSITION );
 
-						var cameraDistance = new THREE.Math2Node(
+						var cameraDistance = new THREE.MathNode(
 							modelPos,
 							cameraPosition,
-							THREE.Math2Node.DISTANCE
+							THREE.MathNode.DISTANCE
 						);
 
 						var viewPosZ = new THREE.SwitchNode( viewPos, 'z' );
@@ -2778,11 +2778,11 @@
 							THREE.OperatorNode.ADD
 						);
 
-						var objectDepth = new THREE.Math3Node(
+						var objectDepth = new THREE.MathNode(
 							distanceRadius,
 							new THREE.FloatNode( 0 ),
 							new THREE.FloatNode( 50 ),
-							THREE.Math3Node.SMOOTHSTEP
+							THREE.MathNode.SMOOTHSTEP
 						);
 
 						// RTT ( get back distance )
@@ -2809,33 +2809,33 @@
 							THREE.OperatorNode.SUB
 						);
 
-						var sss = new THREE.Math3Node(
+						var sss = new THREE.MathNode(
 							new THREE.FloatNode( - .1 ),
 							new THREE.FloatNode( .5 ),
 							difference,
-							THREE.Math3Node.SMOOTHSTEP
+							THREE.MathNode.SMOOTHSTEP
 						);
 
-						var sssAlpha = new THREE.Math1Node( sss, THREE.Math1Node.SATURATE );
+						var sssAlpha = new THREE.MathNode( sss, THREE.MathNode.SATURATE );
 
 						var frontColor, backColor;
 
 						if ( name == 'sss' ) {
 
-							var sssOut = new THREE.Math2Node(
+							var sssOut = new THREE.MathNode(
 								objectDepth,
 								sssAlpha,
-								THREE.Math2Node.MIN
+								THREE.MathNode.MIN
 							);
 
 							frontColor = new THREE.ColorNode( 0xd4cfbb );
 							backColor = new THREE.ColorNode( 0xd04327 );
 
-							var color = new THREE.Math3Node(
+							var color = new THREE.MathNode(
 								backColor,
 								frontColor,
 								sssOut,
-								THREE.Math3Node.MIX
+								THREE.MathNode.MIX
 							);
 
 							var light = new THREE.OperatorNode(
@@ -2856,11 +2856,11 @@
 							frontColor = new THREE.ColorNode( 0xd04327 );
 							backColor = new THREE.ColorNode( 0x1a0e14 );
 
-							var color = new THREE.Math3Node(
+							var color = new THREE.MathNode(
 								frontColor,
 								backColor,
 								sssAlpha,
-								THREE.Math3Node.MIX
+								THREE.MathNode.MIX
 							);
 
 							var light = new THREE.OperatorNode(

+ 2 - 2
examples/webgl_mirror_nodes.html

@@ -97,9 +97,9 @@
 
 				var normalMap = new THREE.TextureNode( decalNormal );
 				var normalXY = new THREE.SwitchNode( normalMap, 'xy' );
-				var normalXYFlip = new THREE.Math1Node(
+				var normalXYFlip = new THREE.MathNode(
 					normalXY,
-					THREE.Math1Node.INVERT
+					THREE.MathNode.INVERT
 				);
 
 				var offsetNormal = new THREE.OperatorNode(

+ 15 - 15
examples/webgl_postprocessing_nodes.html

@@ -172,11 +172,11 @@
 						var color = new THREE.ColorNode( 0xFFFFFF );
 						var percent = new THREE.FloatNode( .5 );
 
-						var fade = new THREE.Math3Node(
+						var fade = new THREE.MathNode(
 							new THREE.ScreenNode(),
 							color,
 							percent,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						nodepost.output = fade;
@@ -204,13 +204,13 @@
 						var alpha = new THREE.FloatNode( 1 );
 
 						var screen = new THREE.ScreenNode();
-						var inverted = new THREE.Math1Node( screen, THREE.Math1Node.INVERT );
+						var inverted = new THREE.MathNode( screen, THREE.MathNode.INVERT );
 
-						var fade = new THREE.Math3Node(
+						var fade = new THREE.MathNode(
 							screen,
 							inverted,
 							alpha,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						nodepost.output = fade;
@@ -293,9 +293,9 @@
 						var normalXY = new THREE.SwitchNode( normal, 'xy' );
 						var scale = new THREE.FloatNode( .5 );
 
-						var normalXYFlip = new THREE.Math1Node(
+						var normalXYFlip = new THREE.MathNode(
 							normalXY,
-							THREE.Math1Node.INVERT
+							THREE.MathNode.INVERT
 						);
 
 						var offsetNormal = new THREE.OperatorNode(
@@ -310,11 +310,11 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var scaleNormal = new THREE.Math3Node(
+						var scaleNormal = new THREE.MathNode(
 							new THREE.FloatNode( 1 ),
 							scaleTexture,
 							scale,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						var offsetCoord = new THREE.OperatorNode(
@@ -355,11 +355,11 @@
 
 						var previousFrame = new THREE.RTTNode( size.width, size.height, screen );
 
-						var motionBlur = new THREE.Math3Node(
+						var motionBlur = new THREE.MathNode(
 							previousFrame,
 							screen,
 							new THREE.FloatNode( .5 ),
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						var currentFrame = new THREE.RTTNode( size.width, size.height, motionBlur );
@@ -383,9 +383,9 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var blocksSize = new THREE.Math1Node(
+						var blocksSize = new THREE.MathNode(
 							blocks,
-							THREE.Math1Node.FLOOR
+							THREE.MathNode.FLOOR
 						);
 
 						var mosaicUV = new THREE.OperatorNode(
@@ -394,11 +394,11 @@
 							THREE.OperatorNode.DIV
 						);
 
-						var fadeScreen = new THREE.Math3Node(
+						var fadeScreen = new THREE.MathNode(
 							uv,
 							mosaicUV,
 							fade,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						nodepost.output = new THREE.ScreenNode( fadeScreen );

+ 13 - 13
examples/webgl_postprocessing_nodes_pass.html

@@ -177,11 +177,11 @@
 						var color = new THREE.ColorNode( 0xFFFFFF );
 						var percent = new THREE.FloatNode( .5 );
 
-						var fade = new THREE.Math3Node(
+						var fade = new THREE.MathNode(
 							new THREE.ScreenNode(),
 							color,
 							percent,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						nodepass.input = fade;
@@ -209,13 +209,13 @@
 						var alpha = new THREE.FloatNode( 1 );
 
 						var screen = new THREE.ScreenNode();
-						var inverted = new THREE.Math1Node( screen, THREE.Math1Node.INVERT );
+						var inverted = new THREE.MathNode( screen, THREE.MathNode.INVERT );
 
-						var fade = new THREE.Math3Node(
+						var fade = new THREE.MathNode(
 							screen,
 							inverted,
 							alpha,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						nodepass.input = fade;
@@ -298,9 +298,9 @@
 						var normalXY = new THREE.SwitchNode( normal, 'xy' );
 						var scale = new THREE.FloatNode( .5 );
 
-						var normalXYFlip = new THREE.Math1Node(
+						var normalXYFlip = new THREE.MathNode(
 							normalXY,
-							THREE.Math1Node.INVERT
+							THREE.MathNode.INVERT
 						);
 
 						var offsetNormal = new THREE.OperatorNode(
@@ -315,11 +315,11 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var scaleNormal = new THREE.Math3Node(
+						var scaleNormal = new THREE.MathNode(
 							new THREE.FloatNode( 1 ),
 							scaleTexture,
 							scale,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						var offsetCoord = new THREE.OperatorNode(
@@ -364,9 +364,9 @@
 							THREE.OperatorNode.MUL
 						);
 
-						var blocksSize = new THREE.Math1Node(
+						var blocksSize = new THREE.MathNode(
 							blocks,
-							THREE.Math1Node.FLOOR
+							THREE.MathNode.FLOOR
 						);
 
 						var mosaicUV = new THREE.OperatorNode(
@@ -375,11 +375,11 @@
 							THREE.OperatorNode.DIV
 						);
 
-						var fadeScreen = new THREE.Math3Node(
+						var fadeScreen = new THREE.MathNode(
 							uv,
 							mosaicUV,
 							fade,
-							THREE.Math3Node.MIX
+							THREE.MathNode.MIX
 						);
 
 						nodepass.input = new THREE.ScreenNode( fadeScreen );

+ 4 - 4
examples/webgl_sprites_nodes.html

@@ -82,9 +82,9 @@
 						THREE.OperatorNode.MUL
 					);
 
-					var uvIntegerTimer = new THREE.Math1Node(
+					var uvIntegerTimer = new THREE.MathNode(
 						uvTimer,
-						THREE.Math1Node.FLOOR
+						THREE.MathNode.FLOOR
 					);
 
 					var uvFrameOffset = new THREE.OperatorNode(
@@ -126,12 +126,12 @@
 				sprite2.scale.y = spriteHeight;
 				sprite2.material.color = new THREE.TextureNode( walkingManTexture );
 				sprite2.material.color.uv = createHorizontalSpriteSheetNode( 8, 30 );
-				sprite2.material.color = new THREE.Math1Node( sprite2.material.color, THREE.Math1Node.INVERT );
+				sprite2.material.color = new THREE.MathNode( sprite2.material.color, THREE.MathNode.INVERT );
 				sprite2.material.spherical = false; // look at camera horizontally only, very used in vegetation
 				// horizontal zigzag sprite
 				sprite2.material.position = new THREE.OperatorNode(
 					new THREE.OperatorNode(
-						new THREE.Math1Node( new THREE.TimerNode( 3 ), THREE.Math1Node.SIN ), // 3 is speed (time scale)
+						new THREE.MathNode( new THREE.TimerNode( 3 ), THREE.MathNode.SIN ), // 3 is speed (time scale)
 						new THREE.Vector2Node( .3, 0 ), // horizontal scale (position)
 						THREE.OperatorNode.MUL
 					),

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff