kinetic-slider
Version:
A WebGL-powered kinetic slider component using PIXI.js
1 lines • 3.49 kB
Source Map (JSON)
{"version":3,"file":"embossFilter.cjs","sources":["../../../src/filters/embossFilter.ts"],"sourcesContent":["// src/components/KineticSlider/filters/embossFilter.ts\n\nimport { EmbossFilter } from 'pixi-filters';\nimport { type EmbossFilterConfig, type FilterResult } from './types';\nimport { ShaderResourceManager } from '../managers/ShaderResourceManager';\n\n/**\n * Creates an Emboss filter that applies an emboss/relief effect to an object\n * Uses shader pooling for better performance.\n *\n * @param config - Configuration for the Emboss filter\n * @returns FilterResult with the filter instance and control functions\n */\nexport function createEmbossFilter(config: EmbossFilterConfig): FilterResult {\n // Get shader manager instance\n const shaderManager = ShaderResourceManager.getInstance();\n\n // Create a unique key for this filter configuration\n const shaderKey = `emboss-filter-${config.strength || 5}`;\n\n // Create the filter with specified strength or default\n const filter = new EmbossFilter(config.strength);\n\n // Register filter with shader manager\n try {\n shaderManager.registerFilter(filter, shaderKey);\n } catch (error) {\n console.warn('Error registering emboss 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 // Map the 0-10 intensity scale to appropriate strength values (0-20)\n const normalizedIntensity = Math.max(0, Math.min(10, intensity));\n filter.strength = normalizedIntensity * 2; // 0-10 -> 0-20\n };\n\n // Set initial intensity\n updateIntensity(config.intensity);\n\n /**\n * Reset the filter to default state\n */\n const reset = (): void => {\n // Reset strength to config value if provided, otherwise use default\n filter.strength = config.strength !== undefined ? config.strength : 5;\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 emboss filter shader:', error);\n }\n filter.destroy();\n };\n\n return { filter, updateIntensity, reset, dispose };\n}"],"names":["ShaderResourceManager","EmbossFilter"],"mappings":";;;;;AAaO,SAAS,mBAAmB,MAA0C,EAAA;AAEzE,EAAM,MAAA,aAAA,GAAgBA,4CAAsB,WAAY,EAAA;AAGxD,EAAA,MAAM,SAAY,GAAA,CAAA,cAAA,EAAiB,MAAO,CAAA,QAAA,IAAY,CAAC,CAAA,CAAA;AAGvD,EAAA,MAAM,MAAS,GAAA,IAAIC,wBAAa,CAAA,MAAA,CAAO,QAAQ,CAAA;AAG/C,EAAI,IAAA;AACA,IAAc,aAAA,CAAA,cAAA,CAAe,QAAQ,SAAS,CAAA;AAAA,WACzC,KAAO,EAAA;AACZ,IAAQ,OAAA,CAAA,IAAA,CAAK,wDAAwD,KAAK,CAAA;AAAA;AAQ9E,EAAM,MAAA,eAAA,GAAkB,CAAC,SAA4B,KAAA;AAEjD,IAAM,MAAA,mBAAA,GAAsB,KAAK,GAAI,CAAA,CAAA,EAAG,KAAK,GAAI,CAAA,EAAA,EAAI,SAAS,CAAC,CAAA;AAC/D,IAAA,MAAA,CAAO,WAAW,mBAAsB,GAAA,CAAA;AAAA,GAC5C;AAGA,EAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AAKhC,EAAA,MAAM,QAAQ,MAAY;AAEtB,IAAA,MAAA,CAAO,QAAW,GAAA,MAAA,CAAO,QAAa,KAAA,MAAA,GAAY,OAAO,QAAW,GAAA,CAAA;AAAA,GACxE;AAKA,EAAA,MAAM,UAAU,MAAY;AACxB,IAAI,IAAA;AACA,MAAc,aAAA,CAAA,aAAA,CAAc,QAAQ,SAAS,CAAA;AAAA,aACxC,KAAO,EAAA;AACZ,MAAQ,OAAA,CAAA,IAAA,CAAK,yCAAyC,KAAK,CAAA;AAAA;AAE/D,IAAA,MAAA,CAAO,OAAQ,EAAA;AAAA,GACnB;AAEA,EAAA,OAAO,EAAE,MAAA,EAAQ,eAAiB,EAAA,KAAA,EAAO,OAAQ,EAAA;AACrD;;;;"}