Files
il/resources/public/js/cljs-runtime/module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$sources$ExternalSource.js
2026-07-01 22:38:29 -06:00

56 lines
3.7 KiB
JavaScript

shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$sources$ExternalSource = function(global, require, module, exports) {
var GlTexture = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$texture$GlTexture"), GpuTextureSystem = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$texture$GpuTextureSystem"), types = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$types");
global = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$sources$TextureSource");
"use strict";
const placeholderGl = Object.create(null), placeholderGpu = Object.create(null);
class ExternalSource extends global.TextureSource {
constructor({resource, renderer, label, width, height}) {
if (!resource) {
var _a;
renderer.type === types.RendererType.WEBGPU ? (placeholderGpu[_a = renderer.uid] || (placeholderGpu[_a] = renderer.gpu.device.createTexture({label:"ExternalSource placeholder", size:{width:1, height:1}, format:"rgba8unorm", usage:GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST})), resource = placeholderGpu[renderer.uid]) : (placeholderGl[renderer.uid] || (resource = renderer.gl, _a = resource.createTexture(), resource.bindTexture(resource.TEXTURE_2D, _a), resource.texImage2D(resource.TEXTURE_2D,
0, resource.RGBA, 1, 1, 0, resource.RGBA, resource.UNSIGNED_BYTE, null), placeholderGl[renderer.uid] = _a), resource = placeholderGl[renderer.uid]);
}
width || (width = width ?? resource?.width ?? 1);
height || (height = height ?? resource?.height ?? 1);
super({resource, width, height, label, autoGarbageCollect:!1});
this._renderer = renderer;
this._initGpuData(resource);
}
static test(resource) {
return globalThis.GPUTexture && resource instanceof GPUTexture || globalThis.WebGLTexture && resource instanceof WebGLTexture;
}
_validateTexture(resource) {
var renderer = this._renderer;
const isWebGPU = !!renderer.gpu, isGPUTexture = globalThis.GPUTexture && resource instanceof GPUTexture, isWebGLTexture = globalThis.WebGLTexture && resource instanceof WebGLTexture;
if (isWebGPU && isWebGLTexture) {
throw Error("Cannot use WebGLTexture with a WebGPU renderer");
}
if (!isWebGPU && isGPUTexture) {
throw Error("Cannot use GPUTexture with a WebGL renderer");
}
if (!isWebGPU && (renderer = renderer.gl) && !renderer.isTexture(resource)) {
throw Error("WebGLTexture does not belong to this renderer's WebGL context");
}
}
_initGpuData(resource) {
const renderer = this._renderer;
this._validateTexture(resource);
this._gpuData[renderer.uid] = renderer.gpu ? new GpuTextureSystem.GPUTextureGpuData(resource) : new GlTexture.GlTexture(resource);
}
updateGPUTexture(gpuTexture, width, height) {
var renderer = this._renderer;
const gpuData = this._gpuData[renderer.uid];
this.resource = gpuTexture;
renderer.gpu ? (this._validateTexture(gpuTexture), gpuData.gpuTexture !== gpuTexture && (gpuData.gpuTexture = gpuTexture, gpuData.textureView = null, renderer = renderer.texture, renderer?._bindGroupHash && (renderer._bindGroupHash[this.uid] = null)), this.resize(width ?? gpuTexture.width, height ?? gpuTexture.height)) : (this._validateTexture(gpuTexture), gpuData.texture = gpuTexture, void 0 !== width && void 0 !== height && this.resize(width, height));
this.emit("update", this);
}
destroy() {
delete this._gpuData[this._renderer.uid];
super.destroy();
}
}
exports.ExternalSource = ExternalSource;
};
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$sources$ExternalSource.js.map