38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
import { uniformParsers } from '../../rendering/renderers/shared/shader/utils/uniformParsers.mjs';
|
|
import { uniformParserFunctions, uniformSingleParserFunctions, uniformArrayParserFunctions } from './uniformSyncFunctions.mjs';
|
|
|
|
"use strict";
|
|
function generateUniformsSyncPolyfill(group, uniformData) {
|
|
const functionMap = {};
|
|
for (const i in group.uniformStructures) {
|
|
if (!uniformData[i])
|
|
continue;
|
|
const uniform = group.uniformStructures[i];
|
|
let parsed = false;
|
|
for (let j = 0; j < uniformParsers.length; j++) {
|
|
const parser = uniformParsers[j];
|
|
if (uniform.type === parser.type && parser.test(uniform)) {
|
|
functionMap[i] = uniformParserFunctions[j];
|
|
parsed = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!parsed) {
|
|
const templateType = uniform.size === 1 ? uniformSingleParserFunctions : uniformArrayParserFunctions;
|
|
functionMap[i] = templateType[uniform.type];
|
|
}
|
|
}
|
|
return (ud, uv, renderer) => {
|
|
const gl = renderer.gl;
|
|
for (const i in functionMap) {
|
|
const v = uv[i];
|
|
const cu = ud[i];
|
|
const cv = ud[i].value;
|
|
functionMap[i](i, cu, cv, v, ud, uv, gl);
|
|
}
|
|
};
|
|
}
|
|
|
|
export { generateUniformsSyncPolyfill };
|
|
//# sourceMappingURL=generateUniformsSyncPolyfill.mjs.map
|