{"version":3,"file":"getUniformData.mjs","sources":["../../../src/shader/utils/getUniformData.ts"],"sourcesContent":["import { defaultValue } from './defaultValue';\nimport { mapType } from './mapType';\n\nimport type { IUniformData } from '../Program';\n\n/**\n * returns the uniform data from the program\n * @private\n * @param program - the webgl program\n * @param gl - the WebGL context\n * @returns {object} the uniform data for this program\n */\nexport function getUniformData(program: WebGLProgram, gl: WebGLRenderingContextBase): {[key: string]: IUniformData}\n{\n    const uniforms: {[key: string]: IUniformData} = {};\n\n    const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n\n    for (let i = 0; i < totalUniforms; i++)\n    {\n        const uniformData = gl.getActiveUniform(program, i);\n        const name = uniformData.name.replace(/\\[.*?\\]$/, '');\n\n        const isArray = !!(uniformData.name.match(/\\[.*?\\]$/));\n\n        const type = mapType(gl, uniformData.type);\n\n        uniforms[name] = {\n            name,\n            index: i,\n            type,\n            size: uniformData.size,\n            isArray,\n            value: defaultValue(type, uniformData.size),\n        };\n    }\n\n    return uniforms;\n}\n"],"names":[],"mappings":";;AAYgB,SAAA,eAAe,SAAuB,IACtD;AACU,QAAA,WAA0C,CAE1C,GAAA,gBAAgB,GAAG,oBAAoB,SAAS,GAAG,eAAe;AAExE,WAAS,IAAI,GAAG,IAAI,eAAe,KACnC;AACU,UAAA,cAAc,GAAG,iBAAiB,SAAS,CAAC,GAC5C,OAAO,YAAY,KAAK,QAAQ,YAAY,EAAE,GAE9C,UAAU,CAAC,CAAE,YAAY,KAAK,MAAM,UAAU,GAE9C,OAAO,QAAQ,IAAI,YAAY,IAAI;AAEzC,aAAS,IAAI,IAAI;AAAA,MACb;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA,MAAM,YAAY;AAAA,MAClB;AAAA,MACA,OAAO,aAAa,MAAM,YAAY,IAAI;AAAA,IAAA;AAAA,EAElD;AAEO,SAAA;AACX;"}