{"version":3,"file":"Sprite2dRenderer.mjs","sources":["../../../src/base/webgl/Sprite2dRenderer.ts"],"sourcesContent":["import {\r\n    BatchRenderer,\r\n    BatchShaderGenerator,\r\n    ViewableBuffer,\r\n    Buffer,\r\n    Geometry,\r\n    ExtensionType, Color, Renderer\r\n} from '@pixi/core';\r\nimport { TYPES } from '@pixi/constants';\r\n\r\nconst shaderVert\r\n    = `precision highp float;\r\nattribute vec3 aVertexPosition;\r\nattribute vec2 aTextureCoord;\r\nattribute vec4 aColor;\r\nattribute float aTextureId;\r\n\r\nuniform mat3 projectionMatrix;\r\n\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\n\r\nvoid main(void){\r\ngl_Position.xyw = projectionMatrix * aVertexPosition;\r\ngl_Position.z = 0.0;\r\n\r\nvTextureCoord = aTextureCoord;\r\nvTextureId = aTextureId;\r\nvColor = aColor;\r\n}\r\n`;\r\nconst shaderFrag = `\r\nvarying vec2 vTextureCoord;\r\nvarying vec4 vColor;\r\nvarying float vTextureId;\r\nuniform sampler2D uSamplers[%count%];\r\n\r\nvoid main(void){\r\nvec4 color;\r\n%forloop%\r\ngl_FragColor = color * vColor;\r\n}`;\r\n\r\nexport class Batch3dGeometry extends Geometry\r\n{\r\n    _buffer: Buffer;\r\n    _indexBuffer : Buffer;\r\n\r\n    constructor(_static = false)\r\n    {\r\n        super();\r\n\r\n        this._buffer = new Buffer(null, _static, false);\r\n\r\n        this._indexBuffer = new Buffer(null, _static, true);\r\n\r\n        this.addAttribute('aVertexPosition', this._buffer, 3, false, TYPES.FLOAT)\r\n            .addAttribute('aTextureCoord', this._buffer, 2, false, TYPES.FLOAT)\r\n            .addAttribute('aColor', this._buffer, 4, true, TYPES.UNSIGNED_BYTE)\r\n            .addAttribute('aTextureId', this._buffer, 1, true, TYPES.FLOAT)\r\n            .addIndex(this._indexBuffer);\r\n    }\r\n}\r\n\r\nexport class Batch2dRenderer extends BatchRenderer\r\n{\r\n    static extension = {\r\n        name: 'batch2d',\r\n        type: ExtensionType.RendererPlugin\r\n    };\r\n\r\n    constructor(renderer: Renderer)\r\n    {\r\n        super(renderer);\r\n        this.geometryClass = Batch3dGeometry;\r\n        this.vertexSize = 7;\r\n    }\r\n\r\n    setShaderGenerator()\r\n    {\r\n        this.shaderGenerator = new BatchShaderGenerator(\r\n            shaderVert,\r\n            shaderFrag\r\n        );\r\n    }\r\n\r\n    // eslint-disable-next-line max-len\r\n    packInterleavedGeometry(element: any, attributeBuffer: ViewableBuffer, indexBuffer: Uint16Array, aIndex: number, iIndex: number)\r\n    {\r\n        const {\r\n            uint32View,\r\n            float32View,\r\n        } = attributeBuffer;\r\n\r\n        const p = aIndex / this.vertexSize;// float32View.length / 6 / 2;\r\n        const uvs = element.uvs;\r\n        const indices = element.indices;// geometry.getIndex().data;// indicies;\r\n        const vertexData = element.vertexData;\r\n        const vertexData2d = element.vertexData2d;\r\n        const textureId = element._texture.baseTexture._batchLocation;\r\n\r\n        const alpha = Math.min(element.worldAlpha, 1.0);\r\n\r\n        const argb = Color.shared\r\n            .setValue(element._tintRGB)\r\n            .toPremultiplied(alpha);\r\n\r\n        if (vertexData2d)\r\n        {\r\n            let j = 0;\r\n\r\n            for (let i = 0; i < vertexData2d.length; i += 3, j += 2)\r\n            {\r\n                float32View[aIndex++] = vertexData2d[i];\r\n                float32View[aIndex++] = vertexData2d[i + 1];\r\n                float32View[aIndex++] = vertexData2d[i + 2];\r\n                float32View[aIndex++] = uvs[j];\r\n                float32View[aIndex++] = uvs[j + 1];\r\n                uint32View[aIndex++] = argb;\r\n                float32View[aIndex++] = textureId;\r\n            }\r\n        }\r\n        else\r\n        {\r\n            for (let i = 0; i < vertexData.length; i += 2)\r\n            {\r\n                float32View[aIndex++] = vertexData[i];\r\n                float32View[aIndex++] = vertexData[i + 1];\r\n                float32View[aIndex++] = 1.0;\r\n                float32View[aIndex++] = uvs[i];\r\n                float32View[aIndex++] = uvs[i + 1];\r\n                uint32View[aIndex++] = argb;\r\n                float32View[aIndex++] = textureId;\r\n            }\r\n        }\r\n\r\n        for (let i = 0; i < indices.length; i++)\r\n        {\r\n            indexBuffer[iIndex++] = p + indices[i];\r\n        }\r\n    }\r\n}\r\n"],"names":[],"mappings":"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"}