three
Version:
JavaScript 3D library
67 lines (36 loc) • 972 B
JavaScript
/**
* Uniform Utilities
*/
export function cloneUniforms( src ) {
const dst = {};
for ( const u in src ) {
dst[ u ] = {};
for ( const p in src[ u ] ) {
const property = src[ u ][ p ];
if ( property && ( property.isColor ||
property.isMatrix3 || property.isMatrix4 ||
property.isVector2 || property.isVector3 || property.isVector4 ||
property.isTexture || property.isQuaternion ) ) {
dst[ u ][ p ] = property.clone();
} else if ( Array.isArray( property ) ) {
dst[ u ][ p ] = property.slice();
} else {
dst[ u ][ p ] = property;
}
}
}
return dst;
}
export function mergeUniforms( uniforms ) {
const merged = {};
for ( let u = 0; u < uniforms.length; u ++ ) {
const tmp = cloneUniforms( uniforms[ u ] );
for ( const p in tmp ) {
merged[ p ] = tmp[ p ];
}
}
return merged;
}
// Legacy
const UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };
export { UniformsUtils };