kinetic-slider
Version:
A WebGL-powered kinetic slider component using PIXI.js
58 lines (54 loc) • 1.75 kB
JavaScript
;
var pixi_js = require('pixi.js');
var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs');
function createNoiseFilter(config) {
const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance();
const options = {
noise: config.noiseLevel || 0.5,
// Default noise level is 0.5
seed: config.seed || Math.random()
// Default seed is a random value
};
const shaderKey = "noise-filter";
const filter = new pixi_js.NoiseFilter(options);
try {
shaderManager.registerFilter(filter, shaderKey);
} catch (error) {
console.warn("Error registering noise filter with shader manager:", error);
}
const updateIntensity = (intensity) => {
filter.noise = Math.max(0, Math.min(10, intensity)) / 10;
if (config.generateNewSeedOnUpdate) {
filter.seed = Math.random();
}
};
updateIntensity(config.intensity);
const reset = () => {
if (config.noiseLevel !== void 0) {
filter.noise = config.noiseLevel;
} else if (config.intensity !== void 0) ; else {
filter.noise = 0;
}
if (config.seed !== void 0) {
filter.seed = config.seed;
} else if (config.generateNewSeedOnUpdate === true) {
filter.seed = Math.random();
} else {
filter.seed = filter.seed || 0;
}
if (config.intensity !== void 0) {
updateIntensity(config.intensity);
}
};
const dispose = () => {
try {
shaderManager.releaseFilter(filter, shaderKey);
} catch (error) {
console.warn("Error releasing noise filter shader:", error);
}
filter.destroy();
};
return { filter, updateIntensity, reset, dispose };
}
exports.createNoiseFilter = createNoiseFilter;
//# sourceMappingURL=noiseFilter.cjs.map