UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

92 lines (88 loc) 4.11 kB
'use strict'; var pixiFilters = require('pixi-filters'); var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs'); function createOldFilmFilter(config) { const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance(); const options = {}; if (config.noise !== void 0) options.noise = config.noise; if (config.noiseSize !== void 0) options.noiseSize = config.noiseSize; if (config.scratch !== void 0) options.scratch = config.scratch; if (config.scratchDensity !== void 0) options.scratchDensity = config.scratchDensity; if (config.scratchWidth !== void 0) options.scratchWidth = config.scratchWidth; if (config.seed !== void 0) options.seed = config.seed; if (config.sepia !== void 0) options.sepia = config.sepia; if (config.vignetting !== void 0) options.vignetting = config.vignetting; if (config.vignettingAlpha !== void 0) options.vignettingAlpha = config.vignettingAlpha; if (config.vignettingBlur !== void 0) options.vignettingBlur = config.vignettingBlur; const noiseSizeStr = (options.noiseSize || 1).toString(); const vignettingBlurStr = (options.vignettingBlur || 1).toString(); const shaderKey = `old-film-filter-${noiseSizeStr}-${vignettingBlurStr}`; const filter = new pixiFilters.OldFilmFilter(options); try { shaderManager.registerFilter(filter, shaderKey); } catch (error) { console.warn("Error registering old film filter with shader manager:", error); } const updateIntensity = (intensity) => { const normalizedIntensity = Math.max(0, Math.min(10, intensity)); if (config.primaryProperty) { switch (config.primaryProperty) { case "noise": filter.noise = normalizedIntensity / 10; break; case "scratch": filter.scratch = normalizedIntensity / 10; break; case "sepia": filter.sepia = normalizedIntensity / 10; break; case "vignetting": filter.vignetting = normalizedIntensity / 10; break; case "scratchDensity": filter.scratchDensity = normalizedIntensity / 10; break; default: filter.noise = Math.min(1, 0.2 + normalizedIntensity / 20); filter.scratch = Math.min(1, 0.3 + normalizedIntensity / 15); filter.sepia = Math.min(1, 0.2 + normalizedIntensity / 20); filter.vignetting = Math.min(1, 0.3 + normalizedIntensity / 30); } } else { filter.noise = Math.min(1, 0.2 + normalizedIntensity / 20); filter.scratch = Math.min(1, 0.3 + normalizedIntensity / 15); filter.sepia = Math.min(1, 0.2 + normalizedIntensity / 20); filter.vignetting = Math.min(1, 0.3 + normalizedIntensity / 30); } if (normalizedIntensity > 3) { filter.seed = Math.random() * 1e3; } }; updateIntensity(config.intensity); const reset = () => { filter.noise = config.noise !== void 0 ? config.noise : 0.3; filter.noiseSize = config.noiseSize !== void 0 ? config.noiseSize : 1; filter.scratch = config.scratch !== void 0 ? config.scratch : 0.5; filter.scratchDensity = config.scratchDensity !== void 0 ? config.scratchDensity : 0.3; filter.scratchWidth = config.scratchWidth !== void 0 ? config.scratchWidth : 1; filter.seed = config.seed !== void 0 ? config.seed : 0; filter.sepia = config.sepia !== void 0 ? config.sepia : 0.3; filter.vignetting = config.vignetting !== void 0 ? config.vignetting : 0.3; filter.vignettingAlpha = config.vignettingAlpha !== void 0 ? config.vignettingAlpha : 1; filter.vignettingBlur = config.vignettingBlur !== void 0 ? config.vignettingBlur : 1; if (config.intensity !== void 0) { updateIntensity(config.intensity); } }; const dispose = () => { try { shaderManager.releaseFilter(filter, shaderKey); } catch (error) { console.warn("Error releasing old film filter shader:", error); } filter.destroy(); }; return { filter, updateIntensity, reset, dispose }; } exports.createOldFilmFilter = createOldFilmFilter; //# sourceMappingURL=oldFilmFilter.cjs.map