UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

101 lines (97 loc) 3.55 kB
'use strict'; var pixiFilters = require('pixi-filters'); var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs'); function createGlowFilter(config) { const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance(); const options = { // Directly specify each option from the config distance: config.distance ?? 10, outerStrength: config.outerStrength ?? 4, innerStrength: config.innerStrength ?? 0, color: config.color ?? 16777215, quality: config.quality ?? 0.1, knockout: config.knockout ?? false, alpha: config.alpha ?? 1 }; const colorHex = options.color.toString(16); const knockoutStr = options.knockout ? "ko" : "noko"; const shaderKey = `glow-filter-${colorHex}-${options.quality}-${knockoutStr}`; console.log("Creating GlowFilter with options:", JSON.stringify(options, (key, value) => { if (key === "color" && typeof value === "number") { return "0x" + value.toString(16).padStart(6, "0").toUpperCase(); } return value; })); const filter = new pixiFilters.GlowFilter(options); try { shaderManager.registerFilter(filter, shaderKey); } catch (error) { console.warn("Error registering glow filter with shader manager:", error); } const updateIntensity = (intensity) => { const normalizedIntensity = Math.max(0, Math.min(10, intensity)); if (config.primaryProperty) { switch (config.primaryProperty) { case "innerStrength": filter.innerStrength = normalizedIntensity; break; case "outerStrength": filter.outerStrength = normalizedIntensity; break; case "distance": filter.distance = normalizedIntensity * 3; break; case "quality": filter.quality = normalizedIntensity / 10; break; case "alpha": filter.alpha = normalizedIntensity / 10; break; default: filter.outerStrength = normalizedIntensity; } } else { filter.outerStrength = normalizedIntensity; } console.log("GlowFilter after intensity update:", { intensity: normalizedIntensity, outerStrength: filter.outerStrength, innerStrength: filter.innerStrength, distance: filter.distance, color: "0x" + filter.color.toString(16).padStart(6, "0").toUpperCase(), quality: filter.quality, alpha: filter.alpha, knockout: filter.knockout }); }; updateIntensity(config.intensity); const reset = () => { filter.distance = config.distance ?? 10; filter.outerStrength = config.outerStrength ?? 4; filter.innerStrength = config.innerStrength ?? 0; filter.color = config.color ?? 16777215; filter.alpha = config.alpha ?? 1; filter.knockout = config.knockout ?? false; filter.quality = config.quality ?? 0.1; console.log("Reset GlowFilter to:", { distance: filter.distance, outerStrength: filter.outerStrength, innerStrength: filter.innerStrength, color: "0x" + filter.color.toString(16).padStart(6, "0").toUpperCase(), alpha: filter.alpha, knockout: filter.knockout, quality: filter.quality }); }; const dispose = () => { try { shaderManager.releaseFilter(filter, shaderKey); } catch (error) { console.warn("Error releasing glow filter shader:", error); } filter.destroy(); }; return { filter, updateIntensity, reset, dispose }; } exports.createGlowFilter = createGlowFilter; //# sourceMappingURL=glowFilter.cjs.map