starry / backend /libs /three /renderers /shaders /UniformsUtils.js
k-l-lambda's picture
feat: add Python ML services (CPU mode) with model download
2b7aae2
/**
* 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 };