UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

56 lines (53 loc) 1.7 kB
import { NoiseFilter } from 'pixi.js'; import { ShaderResourceManager } from '../managers/ShaderResourceManager.js'; function createNoiseFilter(config) { const shaderManager = 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 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 }; } export { createNoiseFilter }; //# sourceMappingURL=noiseFilter.js.map