{"version":3,"file":"syncUniforms.mjs","sources":["../src/syncUniforms.ts"],"sourcesContent":["import type { IRenderingContext, IUniformData, Renderer, UniformGroup } from 'pixijs/core';\n\n// cv = CachedValue\n// v = value\n// ud = uniformData\n// uv = uniformValue\n// l = location\n\n/* eslint-disable max-len, @typescript-eslint/explicit-module-boundary-types */\nconst GLSL_TO_SINGLE_SETTERS = {\n    float(gl: IRenderingContext, location: WebGLUniformLocation, cv: any, v: number): void\n    {\n        if (cv !== v)\n        {\n            cv.v = v;\n            gl.uniform1f(location, v);\n        }\n    },\n    vec2(gl: IRenderingContext, location: WebGLUniformLocation, cv: number[], v: number[]): void\n    {\n        if (cv[0] !== v[0] || cv[1] !== v[1])\n        {\n            cv[0] = v[0];\n            cv[1] = v[1];\n            gl.uniform2f(location, v[0], v[1]);\n        }\n    },\n    vec3(gl: IRenderingContext, location: WebGLUniformLocation, cv: number[], v: number[]): void\n    {\n        if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n        {\n            cv[0] = v[0];\n            cv[1] = v[1];\n            cv[2] = v[2];\n\n            gl.uniform3f(location, v[0], v[1], v[2]);\n        }\n    },\n    int(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number): void { gl.uniform1i(location, value); },\n    ivec2(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniform2i(location, value[0], value[1]); },\n    ivec3(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniform3i(location, value[0], value[1], value[2]); },\n    ivec4(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniform4i(location, value[0], value[1], value[2], value[3]); },\n\n    uint(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number): void { gl.uniform1ui(location, value); },\n    uvec2(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniform2ui(location, value[0], value[1]); },\n    uvec3(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniform3ui(location, value[0], value[1], value[2]); },\n    uvec4(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniform4ui(location, value[0], value[1], value[2], value[3]); },\n\n    bool(gl: IRenderingContext, location: WebGLUniformLocation, cv: any, v: boolean): void\n    {\n        if (cv !== v)\n        {\n            cv.v = v;\n            gl.uniform1i(location, Number(v));\n        }\n    },\n    bvec2(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniform2i(location, value[0], value[1]); },\n    bvec3(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniform3i(location, value[0], value[1], value[2]); },\n    bvec4(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniform4i(location, value[0], value[1], value[2], value[3]); },\n\n    mat2(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniformMatrix2fv(location, false, value); },\n    mat3(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniformMatrix3fv(location, false, value); },\n    mat4(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number[]): void { gl.uniformMatrix4fv(location, false, value); },\n\n    sampler2D(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number): void { gl.uniform1i(location, value); },\n    samplerCube(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number): void { gl.uniform1i(location, value); },\n    sampler2DArray(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: number): void { gl.uniform1i(location, value); },\n};\n\nconst GLSL_TO_ARRAY_SETTERS = {\n    float(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Float32List): void { gl.uniform1fv(location, value); },\n    vec2(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Float32List): void { gl.uniform2fv(location, value); },\n    vec3(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Float32List): void { gl.uniform3fv(location, value); },\n    vec4(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Float32List): void { gl.uniform4fv(location, value); },\n    int(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform1iv(location, value); },\n    ivec2(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform2iv(location, value); },\n    ivec3(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform3iv(location, value); },\n    ivec4(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform4iv(location, value); },\n    uint(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Uint32List): void { gl.uniform1uiv(location, value); },\n    uvec2(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Uint32List): void { gl.uniform2uiv(location, value); },\n    uvec3(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Uint32List): void { gl.uniform3uiv(location, value); },\n    uvec4(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Uint32List): void { gl.uniform4uiv(location, value); },\n    bool(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform1iv(location, value); },\n    bvec2(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform2iv(location, value); },\n    bvec3(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform3iv(location, value); },\n    bvec4(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform4iv(location, value); },\n    sampler2D(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform1iv(location, value); },\n    samplerCube(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform1iv(location, value); },\n    sampler2DArray(gl: IRenderingContext, location: WebGLUniformLocation, _cv: any, value: Int32List): void { gl.uniform1iv(location, value); },\n};\n/* eslint-disable max-len */\n\nexport function syncUniforms(group: UniformGroup, uniformData: {[x: string]: IUniformData}, ud: any, uv: any, renderer: Renderer): void\n{\n    let textureCount = 0;\n    let v = null;\n    let cv = null;\n    const gl = renderer.gl;\n\n    for (const i in group.uniforms)\n    {\n        const data = uniformData[i];\n        const uvi = uv[i];\n        const udi = ud[i];\n        const gu = group.uniforms[i];\n\n        if (!data)\n        {\n            if (gu.group)\n            {\n                renderer.shader.syncUniformGroup(uvi);\n            }\n\n            continue;\n        }\n\n        if (data.type === 'float' && data.size === 1)\n        {\n            if (uvi !== udi.value)\n            {\n                udi.value = uvi;\n                gl.uniform1f(udi.location, uvi);\n            }\n        }\n        /* eslint-disable max-len */\n        else if ((data.type === 'sampler2D' || data.type === 'samplerCube' || data.type === 'sampler2DArray') && data.size === 1 && !data.isArray)\n        /* eslint-disable max-len */\n        {\n            renderer.texture.bind(uvi, textureCount);\n\n            if (udi.value !== textureCount)\n            {\n                udi.value = textureCount;\n                gl.uniform1i(udi.location, textureCount);\n            }\n\n            textureCount++;\n        }\n        else if (data.type === 'mat3' && data.size === 1)\n        {\n            if (gu.a !== undefined)\n            {\n                gl.uniformMatrix3fv(udi.location, false, uvi.toArray(true));\n            }\n            else\n            {\n                gl.uniformMatrix3fv(udi.location, false, uvi);\n            }\n        }\n        else if (data.type === 'vec2' && data.size === 1)\n        {\n            if (gu.x !== undefined)\n            {\n                cv = udi.value;\n                v = uvi;\n\n                if (cv[0] !== v.x || cv[1] !== v.y)\n                {\n                    cv[0] = v.x;\n                    cv[1] = v.y;\n                    gl.uniform2f(udi.location, v.x, v.y);\n                }\n            }\n            else\n            {\n                cv = udi.value;\n                v = uvi;\n\n                if (cv[0] !== v[0] || cv[1] !== v[1])\n                {\n                    cv[0] = v[0];\n                    cv[1] = v[1];\n                    gl.uniform2f(udi.location, v[0], v[1]);\n                }\n            }\n        }\n        else if (data.type === 'vec4' && data.size === 1)\n        {\n            if (gu.width !== undefined)\n            {\n                cv = udi.value;\n                v = uvi;\n\n                if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)\n                {\n                    cv[0] = v.x;\n                    cv[1] = v.y;\n                    cv[2] = v.width;\n                    cv[3] = v.height;\n                    gl.uniform4f(udi.location, v.x, v.y, v.width, v.height);\n                }\n            }\n            else\n            {\n                cv = udi.value;\n                v = uvi;\n\n                if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n                {\n                    cv[0] = v[0];\n                    cv[1] = v[1];\n                    cv[2] = v[2];\n                    cv[3] = v[3];\n\n                    gl.uniform4f(udi.location, v[0], v[1], v[2], v[3]);\n                }\n            }\n        }\n        else\n        {\n            const funcArray = (data.size === 1) ? GLSL_TO_SINGLE_SETTERS : GLSL_TO_ARRAY_SETTERS;\n\n            (funcArray as any)[data.type].call(null, gl, udi.location, udi.value, uvi);\n        }\n    }\n}\n"],"names":[],"mappings":"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"}