kinetic-slider
Version:
A WebGL-powered kinetic slider component using PIXI.js
61 lines (58 loc) • 1.9 kB
JavaScript
import { BlurFilter } from 'pixi.js';
import { ShaderResourceManager } from '../managers/ShaderResourceManager.js';
const shaderManager = ShaderResourceManager.getInstance();
function createBlurFilter(config) {
const filter = new 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;
}
export { createBlurFilter };
//# sourceMappingURL=blurFilter.js.map