/** * 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 };