UNPKG

5.81 kBJavaScriptView Raw
1const uniformParsers = [
2 {
3 test: (data) => data.type === "float" && data.size === 1 && !data.isArray,
4 code: (name) => `
5 if(uv["${name}"] !== ud["${name}"].value)
6 {
7 ud["${name}"].value = uv["${name}"]
8 gl.uniform1f(ud["${name}"].location, uv["${name}"])
9 }
10 `
11 },
12 {
13 test: (data, uniform) => (data.type === "sampler2D" || data.type === "samplerCube" || data.type === "sampler2DArray") && data.size === 1 && !data.isArray && (uniform == null || uniform.castToBaseTexture !== void 0),
14 code: (name) => `t = syncData.textureCount++;
15
16 renderer.texture.bind(uv["${name}"], t);
17
18 if(ud["${name}"].value !== t)
19 {
20 ud["${name}"].value = t;
21 gl.uniform1i(ud["${name}"].location, t);
22; // eslint-disable-line max-len
23 }`
24 },
25 {
26 test: (data, uniform) => data.type === "mat3" && data.size === 1 && !data.isArray && uniform.a !== void 0,
27 code: (name) => `
28 gl.uniformMatrix3fv(ud["${name}"].location, false, uv["${name}"].toArray(true));
29 `,
30 codeUbo: (name) => `
31 var ${name}_matrix = uv.${name}.toArray(true);
32
33 data[offset] = ${name}_matrix[0];
34 data[offset+1] = ${name}_matrix[1];
35 data[offset+2] = ${name}_matrix[2];
36
37 data[offset + 4] = ${name}_matrix[3];
38 data[offset + 5] = ${name}_matrix[4];
39 data[offset + 6] = ${name}_matrix[5];
40
41 data[offset + 8] = ${name}_matrix[6];
42 data[offset + 9] = ${name}_matrix[7];
43 data[offset + 10] = ${name}_matrix[8];
44 `
45 },
46 {
47 test: (data, uniform) => data.type === "vec2" && data.size === 1 && !data.isArray && uniform.x !== void 0,
48 code: (name) => `
49 cv = ud["${name}"].value;
50 v = uv["${name}"];
51
52 if(cv[0] !== v.x || cv[1] !== v.y)
53 {
54 cv[0] = v.x;
55 cv[1] = v.y;
56 gl.uniform2f(ud["${name}"].location, v.x, v.y);
57 }`,
58 codeUbo: (name) => `
59 v = uv.${name};
60
61 data[offset] = v.x;
62 data[offset+1] = v.y;
63 `
64 },
65 {
66 test: (data) => data.type === "vec2" && data.size === 1 && !data.isArray,
67 code: (name) => `
68 cv = ud["${name}"].value;
69 v = uv["${name}"];
70
71 if(cv[0] !== v[0] || cv[1] !== v[1])
72 {
73 cv[0] = v[0];
74 cv[1] = v[1];
75 gl.uniform2f(ud["${name}"].location, v[0], v[1]);
76 }
77 `
78 },
79 {
80 test: (data, uniform) => data.type === "vec4" && data.size === 1 && !data.isArray && uniform.width !== void 0,
81 code: (name) => `
82 cv = ud["${name}"].value;
83 v = uv["${name}"];
84
85 if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)
86 {
87 cv[0] = v.x;
88 cv[1] = v.y;
89 cv[2] = v.width;
90 cv[3] = v.height;
91 gl.uniform4f(ud["${name}"].location, v.x, v.y, v.width, v.height)
92 }`,
93 codeUbo: (name) => `
94 v = uv.${name};
95
96 data[offset] = v.x;
97 data[offset+1] = v.y;
98 data[offset+2] = v.width;
99 data[offset+3] = v.height;
100 `
101 },
102 {
103 test: (data, uniform) => data.type === "vec4" && data.size === 1 && !data.isArray && uniform.red !== void 0,
104 code: (name) => `
105 cv = ud["${name}"].value;
106 v = uv["${name}"];
107
108 if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha)
109 {
110 cv[0] = v.red;
111 cv[1] = v.green;
112 cv[2] = v.blue;
113 cv[3] = v.alpha;
114 gl.uniform4f(ud["${name}"].location, v.red, v.green, v.blue, v.alpha)
115 }`,
116 codeUbo: (name) => `
117 v = uv.${name};
118
119 data[offset] = v.red;
120 data[offset+1] = v.green;
121 data[offset+2] = v.blue;
122 data[offset+3] = v.alpha;
123 `
124 },
125 {
126 test: (data, uniform) => data.type === "vec3" && data.size === 1 && !data.isArray && uniform.red !== void 0,
127 code: (name) => `
128 cv = ud["${name}"].value;
129 v = uv["${name}"];
130
131 if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.a)
132 {
133 cv[0] = v.red;
134 cv[1] = v.green;
135 cv[2] = v.blue;
136
137 gl.uniform3f(ud["${name}"].location, v.red, v.green, v.blue)
138 }`,
139 codeUbo: (name) => `
140 v = uv.${name};
141
142 data[offset] = v.red;
143 data[offset+1] = v.green;
144 data[offset+2] = v.blue;
145 `
146 },
147 {
148 test: (data) => data.type === "vec4" && data.size === 1 && !data.isArray,
149 code: (name) => `
150 cv = ud["${name}"].value;
151 v = uv["${name}"];
152
153 if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])
154 {
155 cv[0] = v[0];
156 cv[1] = v[1];
157 cv[2] = v[2];
158 cv[3] = v[3];
159
160 gl.uniform4f(ud["${name}"].location, v[0], v[1], v[2], v[3])
161 }`
162 }
163];
164
165export { uniformParsers };
166//# sourceMappingURL=uniformParsers.mjs.map