kinetic-slider
Version:
A WebGL-powered kinetic slider component using PIXI.js
59 lines (55 loc) • 2.1 kB
JavaScript
;
var pixiFilters = require('pixi-filters');
var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs');
function createBackdropBlurFilter(config) {
const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance();
const shaderKey = `backdrop-blur-filter-q${config.quality || 4}-k${config.kernelSize || 5}`;
const filter = new pixiFilters.BackdropBlurFilter({
strength: config.intensity ? config.intensity * 10 : 8,
quality: config.quality ?? 4,
kernelSize: config.kernelSize ?? 5,
resolution: config.resolution ?? 1
});
try {
shaderManager.registerFilter(filter, shaderKey);
} catch (error) {
console.warn("Error registering backdrop blur filter with shader manager:", error);
}
if (config.repeatEdgePixels !== void 0) {
filter.repeatEdgePixels = config.repeatEdgePixels;
}
const updateIntensity = (intensity) => {
filter.strength = intensity * 10;
};
updateIntensity(config.intensity);
const reset = () => {
const defaultStrength = config.intensity !== void 0 ? config.intensity * 10 : 8;
filter.strength = defaultStrength;
if (config.quality !== void 0 && "quality" in filter) {
filter.quality = config.quality;
}
if (config.kernelSize !== void 0 && "kernelSize" in filter) {
filter.kernelSize = config.kernelSize;
}
if (config.resolution !== void 0 && "resolution" in filter) {
filter.resolution = config.resolution;
}
if (config.repeatEdgePixels !== void 0 && "repeatEdgePixels" in filter) {
filter.repeatEdgePixels = config.repeatEdgePixels;
}
if (config.intensity !== void 0) {
updateIntensity(config.intensity);
}
};
const dispose = () => {
try {
shaderManager.releaseFilter(filter, shaderKey);
} catch (error) {
console.warn("Error releasing backdrop blur filter shader:", error);
}
filter.destroy();
};
return { filter, updateIntensity, reset, dispose };
}
exports.createBackdropBlurFilter = createBackdropBlurFilter;
//# sourceMappingURL=backdropBlurFilter.cjs.map