kinetic-slider
Version:
A WebGL-powered kinetic slider component using PIXI.js
1 lines • 9.27 kB
Source Map (JSON)
{"version":3,"file":"glowFilter.cjs","sources":["../../../src/filters/glowFilter.ts"],"sourcesContent":["import { GlowFilter } from 'pixi-filters';\nimport { type GlowFilterConfig, type FilterResult } from './types';\nimport { ShaderResourceManager } from '../managers/ShaderResourceManager';\n\n/**\n * Creates a Glow filter that applies a glow effect to an object\n *\n * The GlowFilter creates a glow effect around objects with configurable\n * inner and outer glow strengths, color, and quality settings.\n * Uses shader pooling for better performance.\n *\n * @param config - Configuration for the Glow filter\n * @returns FilterResult with the filter instance and control functions\n */\nexport function createGlowFilter(config: GlowFilterConfig): FilterResult {\n // Get shader manager instance\n const shaderManager = ShaderResourceManager.getInstance();\n\n // Create options object with explicit values from config\n const options = {\n // Directly specify each option from the config\n distance: config.distance ?? 10,\n outerStrength: config.outerStrength ?? 4,\n innerStrength: config.innerStrength ?? 0,\n color: config.color ?? 0xFFFFFF,\n quality: config.quality ?? 0.1,\n knockout: config.knockout ?? false,\n alpha: config.alpha ?? 1\n };\n\n // Create a unique key for this filter configuration\n const colorHex = options.color.toString(16);\n const knockoutStr = options.knockout ? 'ko' : 'noko';\n const shaderKey = `glow-filter-${colorHex}-${options.quality}-${knockoutStr}`;\n\n // Log the options being passed to the filter\n console.log('Creating GlowFilter with options:', JSON.stringify(options, (key, value) => {\n // Special handling for color to show hex value\n if (key === 'color' && typeof value === 'number') {\n return '0x' + value.toString(16).padStart(6, '0').toUpperCase();\n }\n return value;\n }));\n\n // Create the filter with explicit options\n const filter = new GlowFilter(options);\n\n // Register filter with shader manager\n try {\n shaderManager.registerFilter(filter, shaderKey);\n } catch (error) {\n console.warn('Error registering glow filter with shader manager:', error);\n }\n\n /**\n * Update the filter's intensity based on the configuration\n *\n * @param intensity - New intensity value (0-10 scale)\n */\n const updateIntensity = (intensity: number): void => {\n // Normalize intensity to a 0-10 scale\n const normalizedIntensity = Math.max(0, Math.min(10, intensity));\n\n // Determine which property to adjust based on config\n if (config.primaryProperty) {\n switch (config.primaryProperty) {\n case 'innerStrength':\n // Map 0-10 to 0-10 for inner strength\n filter.innerStrength = normalizedIntensity;\n break;\n case 'outerStrength':\n // Map 0-10 to 0-10 for outer strength\n filter.outerStrength = normalizedIntensity;\n break;\n case 'distance':\n // Map 0-10 to 0-30 for distance\n filter.distance = normalizedIntensity * 3;\n break;\n case 'quality':\n // Map 0-10 to 0-1 for quality\n filter.quality = normalizedIntensity / 10;\n break;\n case 'alpha':\n // Map 0-10 to 0-1 for alpha\n filter.alpha = normalizedIntensity / 10;\n break;\n default:\n // Default to adjusting outer strength\n filter.outerStrength = normalizedIntensity;\n }\n } else {\n // Default behavior - adjust outer strength (most visible effect)\n filter.outerStrength = normalizedIntensity;\n }\n\n // Log the current filter state after updating\n console.log('GlowFilter after intensity update:', {\n intensity: normalizedIntensity,\n outerStrength: filter.outerStrength,\n innerStrength: filter.innerStrength,\n distance: filter.distance,\n color: '0x' + (filter.color as number).toString(16).padStart(6, '0').toUpperCase(),\n quality: filter.quality,\n alpha: filter.alpha,\n knockout: filter.knockout\n });\n };\n\n // Set initial intensity\n updateIntensity(config.intensity);\n\n /**\n * Reset the filter to its configured state (or defaults if no config provided)\n */\n const reset = (): void => {\n // Reset to configured values or defaults if not specified\n filter.distance = config.distance ?? 10;\n filter.outerStrength = config.outerStrength ?? 4;\n filter.innerStrength = config.innerStrength ?? 0;\n filter.color = config.color ?? 0xFFFFFF;\n filter.alpha = config.alpha ?? 1;\n filter.knockout = config.knockout ?? false;\n filter.quality = config.quality ?? 0.1;\n\n console.log('Reset GlowFilter to:', {\n distance: filter.distance,\n outerStrength: filter.outerStrength,\n innerStrength: filter.innerStrength,\n color: '0x' + (filter.color as number).toString(16).padStart(6, '0').toUpperCase(),\n alpha: filter.alpha,\n knockout: filter.knockout,\n quality: filter.quality\n });\n };\n\n /**\n * Release any WebGL resources used by this filter\n */\n const dispose = (): void => {\n try {\n shaderManager.releaseFilter(filter, shaderKey);\n } catch (error) {\n console.warn('Error releasing glow filter shader:', error);\n }\n filter.destroy();\n };\n\n return { filter, updateIntensity, reset, dispose };\n}"],"names":["ShaderResourceManager","GlowFilter"],"mappings":"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"}