webvr js meetup initial commit
This commit is contained in:
258
node_modules/three/examples/js/nodes/NodeBuilder.js
generated
vendored
Normal file
258
node_modules/three/examples/js/nodes/NodeBuilder.js
generated
vendored
Normal file
@@ -0,0 +1,258 @@
|
||||
/**
|
||||
* @author sunag / http://www.sunag.com.br/
|
||||
*/
|
||||
|
||||
THREE.NodeBuilder = function( material ) {
|
||||
|
||||
this.material = material;
|
||||
|
||||
this.caches = [];
|
||||
this.slots = [];
|
||||
|
||||
this.keywords = {};
|
||||
|
||||
this.parsing = false;
|
||||
this.optimize = true;
|
||||
|
||||
this.update();
|
||||
|
||||
};
|
||||
|
||||
THREE.NodeBuilder.type = {
|
||||
float : 'fv1',
|
||||
vec2 : 'v2',
|
||||
vec3 : 'v3',
|
||||
vec4 : 'v4',
|
||||
mat4 : 'v4',
|
||||
int : 'iv1'
|
||||
};
|
||||
|
||||
THREE.NodeBuilder.constructors = [
|
||||
'float',
|
||||
'vec2',
|
||||
'vec3',
|
||||
'vec4'
|
||||
];
|
||||
|
||||
THREE.NodeBuilder.elements = [
|
||||
'x',
|
||||
'y',
|
||||
'z',
|
||||
'w'
|
||||
];
|
||||
|
||||
THREE.NodeBuilder.prototype = {
|
||||
|
||||
constructor: THREE.NodeBuilder,
|
||||
|
||||
addCache : function( name, requires ) {
|
||||
|
||||
this.caches.push( {
|
||||
name : name || '',
|
||||
requires : requires || {}
|
||||
} );
|
||||
|
||||
return this.update();
|
||||
|
||||
},
|
||||
|
||||
removeCache : function() {
|
||||
|
||||
this.caches.pop();
|
||||
|
||||
return this.update();
|
||||
|
||||
},
|
||||
|
||||
addSlot : function( name ) {
|
||||
|
||||
this.slots.push( {
|
||||
name : name || ''
|
||||
} );
|
||||
|
||||
return this.update();
|
||||
|
||||
},
|
||||
|
||||
removeSlot : function() {
|
||||
|
||||
this.slots.pop();
|
||||
|
||||
return this.update();
|
||||
|
||||
},
|
||||
|
||||
isCache : function( name ) {
|
||||
|
||||
var i = this.caches.length;
|
||||
|
||||
while ( i -- ) {
|
||||
|
||||
if ( this.caches[ i ].name == name ) return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
},
|
||||
|
||||
isSlot : function( name ) {
|
||||
|
||||
var i = this.slots.length;
|
||||
|
||||
while ( i -- ) {
|
||||
|
||||
if ( this.slots[ i ].name == name ) return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
},
|
||||
|
||||
update : function() {
|
||||
|
||||
var cache = this.caches[ this.caches.length - 1 ];
|
||||
var slot = this.slots[ this.slots.length - 1 ];
|
||||
|
||||
this.slot = slot ? slot.name : '';
|
||||
this.cache = cache ? cache.name : '';
|
||||
this.requires = cache ? cache.requires : {};
|
||||
|
||||
return this;
|
||||
|
||||
},
|
||||
|
||||
require : function( name, node ) {
|
||||
|
||||
this.requires[ name ] = node;
|
||||
|
||||
return this;
|
||||
|
||||
},
|
||||
|
||||
include : function( node, parent, source ) {
|
||||
|
||||
this.material.include( this, node, parent, source );
|
||||
|
||||
return this;
|
||||
|
||||
},
|
||||
|
||||
colorToVector : function( color ) {
|
||||
|
||||
return color.replace( 'r', 'x' ).replace( 'g', 'y' ).replace( 'b', 'z' ).replace( 'a', 'w' );
|
||||
|
||||
},
|
||||
|
||||
getConstructorFromLength : function( len ) {
|
||||
|
||||
return THREE.NodeBuilder.constructors[ len - 1 ];
|
||||
|
||||
},
|
||||
|
||||
getFormatName : function( format ) {
|
||||
|
||||
return format.replace( /c/g, 'v3' ).replace( /fv1/g, 'v1' ).replace( /iv1/g, 'i' );
|
||||
|
||||
},
|
||||
|
||||
isFormatMatrix : function( format ) {
|
||||
|
||||
return /^m/.test( format );
|
||||
|
||||
},
|
||||
|
||||
getFormatLength : function( format ) {
|
||||
|
||||
return parseInt( this.getFormatName( format ).substr( 1 ) );
|
||||
|
||||
},
|
||||
|
||||
getFormatFromLength : function( len ) {
|
||||
|
||||
if ( len == 1 ) return 'fv1';
|
||||
|
||||
return 'v' + len;
|
||||
|
||||
},
|
||||
|
||||
format : function( code, from, to ) {
|
||||
|
||||
var format = this.getFormatName( to + '=' + from );
|
||||
|
||||
switch ( format ) {
|
||||
|
||||
case 'v1=v2': return code + '.x';
|
||||
case 'v1=v3': return code + '.x';
|
||||
case 'v1=v4': return code + '.x';
|
||||
case 'v1=i': return 'float(' + code + ')';
|
||||
|
||||
case 'v2=v1': return 'vec2(' + code + ')';
|
||||
case 'v2=v3': return code + '.xy';
|
||||
case 'v2=v4': return code + '.xy';
|
||||
case 'v2=i': return 'vec2(float(' + code + '))';
|
||||
|
||||
case 'v3=v1': return 'vec3(' + code + ')';
|
||||
case 'v3=v2': return 'vec3(' + code + ',0.0)';
|
||||
case 'v3=v4': return code + '.xyz';
|
||||
case 'v3=i': return 'vec2(float(' + code + '))';
|
||||
|
||||
case 'v4=v1': return 'vec4(' + code + ')';
|
||||
case 'v4=v2': return 'vec4(' + code + ',0.0,1.0)';
|
||||
case 'v4=v3': return 'vec4(' + code + ',1.0)';
|
||||
case 'v4=i': return 'vec4(float(' + code + '))';
|
||||
|
||||
case 'i=v1': return 'int(' + code + ')';
|
||||
case 'i=v2': return 'int(' + code + '.x)';
|
||||
case 'i=v3': return 'int(' + code + '.x)';
|
||||
case 'i=v4': return 'int(' + code + '.x)';
|
||||
|
||||
}
|
||||
|
||||
return code;
|
||||
|
||||
},
|
||||
|
||||
getTypeByFormat : function( format ) {
|
||||
|
||||
return THREE.NodeBuilder.type[ format ] || format;
|
||||
|
||||
},
|
||||
|
||||
getUuid : function( uuid, useCache ) {
|
||||
|
||||
useCache = useCache !== undefined ? useCache : true;
|
||||
|
||||
if ( useCache && this.cache ) uuid = this.cache + '-' + uuid;
|
||||
|
||||
return uuid;
|
||||
|
||||
},
|
||||
|
||||
getElementByIndex : function( index ) {
|
||||
|
||||
return THREE.NodeBuilder.elements[ index ];
|
||||
|
||||
},
|
||||
|
||||
getIndexByElement : function( elm ) {
|
||||
|
||||
return THREE.NodeBuilder.elements.indexOf( elm );
|
||||
|
||||
},
|
||||
|
||||
isShader : function( shader ) {
|
||||
|
||||
return this.shader == shader;
|
||||
|
||||
},
|
||||
|
||||
setShader : function( shader ) {
|
||||
|
||||
this.shader = shader;
|
||||
|
||||
return this;
|
||||
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user