(shader, uniform, data, getTexture, gl)
| 197 | } |
| 198 | |
| 199 | export function setWebGLUniformValue(shader, uniform, data, getTexture, gl) { |
| 200 | const location = uniform.location; |
| 201 | shader.useProgram(); |
| 202 | |
| 203 | switch (uniform.type) { |
| 204 | case gl.BOOL: |
| 205 | if (data === true) { |
| 206 | gl.uniform1i(location, 1); |
| 207 | } else { |
| 208 | gl.uniform1i(location, 0); |
| 209 | } |
| 210 | break; |
| 211 | case gl.INT: |
| 212 | if (uniform.size > 1) { |
| 213 | data.length && gl.uniform1iv(location, data); |
| 214 | } else { |
| 215 | gl.uniform1i(location, data); |
| 216 | } |
| 217 | break; |
| 218 | case gl.FLOAT: |
| 219 | if (uniform.size > 1) { |
| 220 | data.length && gl.uniform1fv(location, data); |
| 221 | } else { |
| 222 | gl.uniform1f(location, data); |
| 223 | } |
| 224 | break; |
| 225 | case gl.FLOAT_MAT3: |
| 226 | gl.uniformMatrix3fv(location, false, data); |
| 227 | break; |
| 228 | case gl.FLOAT_MAT4: |
| 229 | gl.uniformMatrix4fv(location, false, data); |
| 230 | break; |
| 231 | case gl.FLOAT_VEC2: |
| 232 | if (uniform.size > 1) { |
| 233 | data.length && gl.uniform2fv(location, data); |
| 234 | } else { |
| 235 | gl.uniform2f(location, data[0], data[1]); |
| 236 | } |
| 237 | break; |
| 238 | case gl.FLOAT_VEC3: |
| 239 | if (uniform.size > 1) { |
| 240 | data.length && gl.uniform3fv(location, data); |
| 241 | } else { |
| 242 | gl.uniform3f(location, data[0], data[1], data[2]); |
| 243 | } |
| 244 | break; |
| 245 | case gl.FLOAT_VEC4: |
| 246 | if (uniform.size > 1) { |
| 247 | data.length && gl.uniform4fv(location, data); |
| 248 | } else { |
| 249 | gl.uniform4f(location, data[0], data[1], data[2], data[3]); |
| 250 | } |
| 251 | break; |
| 252 | case gl.INT_VEC2: |
| 253 | if (uniform.size > 1) { |
| 254 | data.length && gl.uniform2iv(location, data); |
| 255 | } else { |
| 256 | gl.uniform2i(location, data[0], data[1]); |
no test coverage detected