Files
Foundry-VTT-Docker/resources/app/node_modules/@pixi/mesh/lib/MeshMaterial.mjs.map
2025-01-04 00:34:03 +01:00

1 line
6.4 KiB
Plaintext

{"version":3,"file":"MeshMaterial.mjs","sources":["../src/MeshMaterial.ts"],"sourcesContent":["import { Color, Matrix, Program, Shader, TextureMatrix } from '@pixi/core';\nimport fragment from './shader/mesh.frag';\nimport vertex from './shader/mesh.vert';\n\nimport type { ColorSource, Texture, utils } from '@pixi/core';\n\nexport interface IMeshMaterialOptions\n{\n alpha?: number;\n tint?: ColorSource;\n pluginName?: string;\n program?: Program;\n uniforms?: utils.Dict<unknown>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface MeshMaterial extends GlobalMixins.MeshMaterial {}\n\n/**\n * Slightly opinionated default shader for PixiJS 2D objects.\n * @memberof PIXI\n */\nexport class MeshMaterial extends Shader\n{\n /**\n * TextureMatrix instance for this Mesh, used to track Texture changes.\n * @readonly\n */\n public readonly uvMatrix: TextureMatrix;\n\n /**\n * `true` if shader can be batch with the renderer's batch system.\n * @default true\n */\n public batchable: boolean;\n\n /**\n * Renderer plugin for batching.\n * @default 'batch'\n */\n public pluginName: string;\n\n // Internal-only properties\n _tintRGB: number;\n\n /**\n * Only do update if tint or alpha changes.\n * @private\n * @default false\n */\n private _colorDirty: boolean;\n private _alpha: number;\n private _tintColor: Color;\n\n /**\n * @param uSampler - Texture that material uses to render.\n * @param options - Additional options\n * @param {number} [options.alpha=1] - Default alpha.\n * @param {PIXI.ColorSource} [options.tint=0xFFFFFF] - Default tint.\n * @param {string} [options.pluginName='batch'] - Renderer plugin for batching.\n * @param {PIXI.Program} [options.program=0xFFFFFF] - Custom program.\n * @param {object} [options.uniforms] - Custom uniforms.\n */\n constructor(uSampler: Texture, options?: IMeshMaterialOptions)\n {\n const uniforms = {\n uSampler,\n alpha: 1,\n uTextureMatrix: Matrix.IDENTITY,\n uColor: new Float32Array([1, 1, 1, 1]),\n };\n\n // Set defaults\n options = Object.assign({\n tint: 0xFFFFFF,\n alpha: 1,\n pluginName: 'batch',\n }, options);\n\n if (options.uniforms)\n {\n Object.assign(uniforms, options.uniforms);\n }\n\n super(options.program || Program.from(vertex, fragment), uniforms);\n\n this._colorDirty = false;\n\n this.uvMatrix = new TextureMatrix(uSampler);\n this.batchable = options.program === undefined;\n this.pluginName = options.pluginName;\n\n this._tintColor = new Color(options.tint);\n this._tintRGB = this._tintColor.toLittleEndianNumber();\n this._colorDirty = true;\n this.alpha = options.alpha;\n }\n\n /** Reference to the texture being rendered. */\n get texture(): Texture\n {\n return this.uniforms.uSampler;\n }\n set texture(value: Texture)\n {\n if (this.uniforms.uSampler !== value)\n {\n if (!this.uniforms.uSampler.baseTexture.alphaMode !== !value.baseTexture.alphaMode)\n {\n this._colorDirty = true;\n }\n\n this.uniforms.uSampler = value;\n this.uvMatrix.texture = value;\n }\n }\n\n /**\n * This gets automatically set by the object using this.\n * @default 1\n */\n set alpha(value: number)\n {\n if (value === this._alpha) return;\n\n this._alpha = value;\n this._colorDirty = true;\n }\n get alpha(): number\n {\n return this._alpha;\n }\n\n /**\n * Multiply tint for the material.\n * @default 0xFFFFFF\n */\n set tint(value: ColorSource)\n {\n if (value === this.tint) return;\n\n this._tintColor.setValue(value);\n this._tintRGB = this._tintColor.toLittleEndianNumber();\n this._colorDirty = true;\n }\n get tint(): ColorSource\n {\n return this._tintColor.value;\n }\n\n /**\n * Get the internal number from tint color\n * @ignore\n */\n get tintValue(): number\n {\n return this._tintColor.toNumber();\n }\n\n /** Gets called automatically by the Mesh. Intended to be overridden for custom {@link PIXI.MeshMaterial} objects. */\n public update(): void\n {\n if (this._colorDirty)\n {\n this._colorDirty = false;\n const baseTexture = this.texture.baseTexture;\n const applyToChannels = (baseTexture.alphaMode as unknown as boolean);\n\n Color.shared\n .setValue(this._tintColor)\n .premultiply(this._alpha, applyToChannels)\n .toArray(this.uniforms.uColor);\n }\n if (this.uvMatrix.update())\n {\n this.uniforms.uTextureMatrix = this.uvMatrix.mapCoord;\n }\n }\n}\n"],"names":[],"mappings":";;;AAsBO,MAAM,qBAAqB,OAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwCI,YAAY,UAAmB,SAC/B;AACI,UAAM,WAAW;AAAA,MACb;AAAA,MACA,OAAO;AAAA,MACP,gBAAgB,OAAO;AAAA,MACvB,QAAQ,IAAI,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,IAAA;AAIzC,cAAU,OAAO,OAAO;AAAA,MACpB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,IAAA,GACb,OAAO,GAEN,QAAQ,YAER,OAAO,OAAO,UAAU,QAAQ,QAAQ,GAG5C,MAAM,QAAQ,WAAW,QAAQ,KAAK,QAAQ,QAAQ,GAAG,QAAQ,GAEjE,KAAK,cAAc,IAEnB,KAAK,WAAW,IAAI,cAAc,QAAQ,GAC1C,KAAK,YAAY,QAAQ,YAAY,QACrC,KAAK,aAAa,QAAQ,YAE1B,KAAK,aAAa,IAAI,MAAM,QAAQ,IAAI,GACxC,KAAK,WAAW,KAAK,WAAW,wBAChC,KAAK,cAAc,IACnB,KAAK,QAAQ,QAAQ;AAAA,EACzB;AAAA;AAAA,EAGA,IAAI,UACJ;AACI,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EACA,IAAI,QAAQ,OACZ;AACQ,SAAK,SAAS,aAAa,UAEvB,CAAC,KAAK,SAAS,SAAS,YAAY,aAAc,CAAC,MAAM,YAAY,cAErE,KAAK,cAAc,KAGvB,KAAK,SAAS,WAAW,OACzB,KAAK,SAAS,UAAU;AAAA,EAEhC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MAAM,OACV;AACQ,cAAU,KAAK,WAEnB,KAAK,SAAS,OACd,KAAK,cAAc;AAAA,EACvB;AAAA,EACA,IAAI,QACJ;AACI,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,KAAK,OACT;AACQ,cAAU,KAAK,SAEnB,KAAK,WAAW,SAAS,KAAK,GAC9B,KAAK,WAAW,KAAK,WAAW,qBAAqB,GACrD,KAAK,cAAc;AAAA,EACvB;AAAA,EACA,IAAI,OACJ;AACI,WAAO,KAAK,WAAW;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,YACJ;AACW,WAAA,KAAK,WAAW;EAC3B;AAAA;AAAA,EAGO,SACP;AACI,QAAI,KAAK,aACT;AACI,WAAK,cAAc;AAEb,YAAA,kBADc,KAAK,QAAQ,YACI;AAErC,YAAM,OACD,SAAS,KAAK,UAAU,EACxB,YAAY,KAAK,QAAQ,eAAe,EACxC,QAAQ,KAAK,SAAS,MAAM;AAAA,IACrC;AACI,SAAK,SAAS,OAAO,MAErB,KAAK,SAAS,iBAAiB,KAAK,SAAS;AAAA,EAErD;AACJ;"}