UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

81 lines (77 loc) 2.44 kB
'use strict'; var pixiFilters = require('pixi-filters'); var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs'); const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance(); function createAdvancedBloomFilter(config) { const options = { bloomScale: config.bloomScale ?? 1, blur: config.blur ?? 2, brightness: config.brightness ?? 1, quality: config.quality ?? 4, threshold: config.threshold ?? 0.5 }; if (config.pixelSize !== void 0) { options.pixelSize = config.pixelSize; } const filter = new pixiFilters.AdvancedBloomFilter(options); const shaderKey = `advbloom-${config.quality || 4}-${config.threshold || 0.5}`; try { shaderManager.getShaderProgram(shaderKey, filter); } catch (error) { console.warn("Failed to register advancedBloom filter with shader manager:", error); } const updateIntensity = (intensity) => { const normalizedIntensity = Math.max(0, Math.min(10, intensity)); if (config.primaryProperty) { switch (config.primaryProperty) { case "bloomScale": filter.bloomScale = normalizedIntensity / 5; break; case "brightness": filter.brightness = normalizedIntensity / 5; break; case "blur": filter.blur = Math.max(1, normalizedIntensity / 2); break; case "threshold": filter.threshold = normalizedIntensity / 10; break; default: filter.bloomScale = normalizedIntensity / 5; } } else { filter.bloomScale = normalizedIntensity / 5; filter.brightness = Math.min(1.5, 0.5 + normalizedIntensity / 20); } }; updateIntensity(config.intensity); const reset = () => { filter.threshold = 0.5; filter.bloomScale = 0.1; filter.brightness = 1; filter.blur = 2; filter.quality = 4; if ("pixelSize" in filter && filter.pixelSize) { filter.pixelSize = { x: 1, y: 1 }; } }; const dispose = () => { try { shaderManager.releaseShader(shaderKey); } catch (error) { console.warn("Failed to release advancedBloom filter shader:", error); } if (filter.destroy) { filter.destroy(); } }; const result = { filter, updateIntensity, reset, dispose }; return result; } exports.createAdvancedBloomFilter = createAdvancedBloomFilter; //# sourceMappingURL=advancedBloomFilter.cjs.map