kinetic-slider
Version:
A WebGL-powered kinetic slider component using PIXI.js
63 lines (59 loc) • 1.95 kB
JavaScript
;
var pixi_js = require('pixi.js');
var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs');
const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance();
function createBlurFilter(config) {
const filter = new pixi_js.BlurFilter({
strength: config.intensity ? config.intensity * 10 : 8,
strengthX: config.strengthX ? config.strengthX * 10 : void 0,
strengthY: config.strengthY ? config.strengthY * 10 : void 0,
quality: config.quality ?? 4,
kernelSize: config.kernelSize ?? 5,
resolution: config.resolution ?? 1
});
if (config.strengthX !== void 0) {
filter.strengthX = config.strengthX;
}
if (config.strengthY !== void 0) {
filter.strengthY = config.strengthY;
}
if (config.repeatEdgePixels !== void 0) {
filter.repeatEdgePixels = config.repeatEdgePixels;
}
const shaderKey = `blur-${config.quality || 4}-${config.kernelSize || 5}-${config.resolution || 1}`;
try {
shaderManager.getShaderProgram(shaderKey, filter);
} catch (error) {
console.warn("Failed to register blur filter with shader manager:", error);
}
const updateIntensity = (intensity) => {
filter.strength = intensity * 10;
filter.strengthX = config.strengthX ? config.strengthX * 10 : filter.strength;
filter.strengthY = config.strengthY ? config.strengthY * 10 : filter.strength;
};
updateIntensity(config.intensity);
const reset = () => {
filter.strength = 0;
filter.strengthX = 0;
filter.strengthY = 0;
};
const dispose = () => {
try {
shaderManager.releaseShader(shaderKey);
} catch (error) {
console.warn("Failed to release blur filter shader:", error);
}
if (filter.destroy) {
filter.destroy();
}
};
const result = {
filter,
updateIntensity,
reset,
dispose
};
return result;
}
exports.createBlurFilter = createBlurFilter;
//# sourceMappingURL=blurFilter.cjs.map