UniformsUtils.js 931 字节
Newer Older
1 2 3 4
/**
 * Uniform Utilities
 */

M
Mr.doob 已提交
5
export function cloneUniforms( src ) {
6

M
Mr.doob 已提交
7
	var dst = {};
8

M
Mr.doob 已提交
9
	for ( var u in src ) {
10

M
Mr.doob 已提交
11
		dst[ u ] = {};
12

M
Mr.doob 已提交
13
		for ( var p in src[ u ] ) {
14

M
Mr.doob 已提交
15
			var property = src[ u ][ p ];
16

M
Mr.doob 已提交
17 18 19 20
			if ( property && ( property.isColor ||
				property.isMatrix3 || property.isMatrix4 ||
				property.isVector2 || property.isVector3 || property.isVector4 ||
				property.isTexture ) ) {
21

M
Mr.doob 已提交
22
				dst[ u ][ p ] = property.clone();
23

M
Mr.doob 已提交
24
			} else if ( Array.isArray( property ) ) {
25

M
Mr.doob 已提交
26
				dst[ u ][ p ] = property.slice();
27

M
Mr.doob 已提交
28
			} else {
29

M
Mr.doob 已提交
30
				dst[ u ][ p ] = property;
31

M
Mr.doob 已提交
32
			}
33

M
Mr.doob 已提交
34
		}
35

M
Mr.doob 已提交
36
	}
37

M
Mr.doob 已提交
38
	return dst;
39

M
Mr.doob 已提交
40
}
41

M
Mr.doob 已提交
42
export function mergeUniforms( uniforms ) {
43

M
Mr.doob 已提交
44
	var merged = {};
45

M
Mr.doob 已提交
46
	for ( var u = 0; u < uniforms.length; u ++ ) {
47

M
Mr.doob 已提交
48
		var tmp = cloneUniforms( uniforms[ u ] );
49

M
Mr.doob 已提交
50
		for ( var p in tmp ) {
51

M
Mr.doob 已提交
52
			merged[ p ] = tmp[ p ];
53 54 55 56 57

		}

	}

M
Mr.doob 已提交
58 59 60 61 62
	return merged;

}

// Legacy
63

M
Mr.doob 已提交
64
var UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };
65 66

export { UniformsUtils };