UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

80 lines (76 loc) 2.72 kB
'use strict'; var pixiFilters = require('pixi-filters'); var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs'); function createBloomFilter(config) { const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance(); const options = {}; if (config.strength !== void 0) { options.strength = config.strength; } if (config.strengthX !== void 0) { options.strengthX = config.strengthX; } if (config.strengthY !== void 0) { options.strengthY = config.strengthY; } const strengthXKey = config.strengthX !== void 0 ? config.strengthX.toString() : "default"; const strengthYKey = config.strengthY !== void 0 ? config.strengthY.toString() : "default"; const shaderKey = `bloom-filter-${config.strength || 2}-${strengthXKey}-${strengthYKey}`; const filter = new pixiFilters.BloomFilter(options); try { shaderManager.registerFilter(filter, shaderKey); } catch (error) { console.warn("Error registering bloom filter with shader manager:", error); } const updateIntensity = (intensity) => { const normalizedIntensity = Math.max(0, Math.min(10, intensity)); if (config.primaryProperty) { switch (config.primaryProperty) { case "strength": filter.strength = { x: normalizedIntensity * 2, y: normalizedIntensity * 2 }; break; case "strengthX": filter.strengthX = normalizedIntensity * 2; break; case "strengthY": filter.strengthY = normalizedIntensity * 2; break; default: filter.strength = normalizedIntensity * 2; } } else { filter.strength = normalizedIntensity * 2; } }; updateIntensity(config.intensity); const reset = () => { if (config.strength !== void 0) { filter.strength = config.strength; } else if (config.strengthX !== void 0 && config.strengthY !== void 0) { filter.strengthX = config.strengthX; filter.strengthY = config.strengthY; } else if (config.strengthX !== void 0) { filter.strengthX = config.strengthX; filter.strengthY = 2; } else if (config.strengthY !== void 0) { filter.strengthX = 2; filter.strengthY = config.strengthY; } else { filter.strength = 2; } if (config.intensity !== void 0) { updateIntensity(config.intensity); } }; const dispose = () => { try { shaderManager.releaseFilter(filter, shaderKey); } catch (error) { console.warn("Error releasing bloom filter shader:", error); } filter.destroy(); }; return { filter, updateIntensity, reset, dispose }; } exports.createBloomFilter = createBloomFilter; //# sourceMappingURL=bloomFilter.cjs.map