UNPKG

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