{"_id":"@arayui/rainy-day","_rev":"5-59a1655dbd92643abccfaac218741a83","name":"@arayui/rainy-day","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.1":{"name":"@arayui/rainy-day","version":"1.0.1","keywords":["rainy-day","typescript","plugin"],"author":{"name":"WuCheng-cn"},"license":"MIT","_id":"@arayui/rainy-day@1.0.1","maintainers":[{"name":"arayui","email":"1965417564@qq.com"}],"homepage":"https://github.com/WuCheng-cn/AnyRainyDay#readme","bugs":{"url":"https://github.com/WuCheng-cn/AnyRainyDay/issues"},"dist":{"shasum":"0353d5923940228a305966bcfb48d4452ec65d1f","tarball":"https://registry.npmjs.org/@arayui/rainy-day/-/rainy-day-1.0.1.tgz","fileCount":21,"integrity":"sha512-pHbIbE2bZSa1H7YzaUFTJxqJrcdzWKnyMBzx4Blzb04COe7/SFiWcbJ0nXch6ooauLVez4W/WXX4EqRfH0Wg3Q==","signatures":[{"sig":"MEQCIAH0EY+Sl4BRaRNlwguthvVBWzOv4Q/RsKRGK0qRkkr/AiBUF1eOoqGXPbQFEjnpcSAgW6MeLWOhZGc7Db3Tp1/8OA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1316409},"main":"./dist/index.cjs","type":"module","types":"./dist/types/index.d.ts","config":{"commitizen":{"path":"cz-customizable"},"cz-customizable":{"config":"./.cz-config.cjs"}},"module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/types/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"f24f9fc554c1e573cdd859538b88b04f6244d7be","scripts":{"cz":"cz","test":"vitest","build":"vite build","prepare":"husky","release":"pnpm build && release-it","docs:dev":"vitepress dev docs","lint:fix":"eslint . --fix","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs"},"_npmUser":{"name":"arayui","email":"1965417564@qq.com"},"repository":{"url":"git+https://github.com/WuCheng-cn/AnyRainyDay.git","type":"git"},"_npmVersion":"10.9.2","description":"下雨天气背景插件","directories":{},"lint-staged":{"src/**/*.{?([cm])[jt]s?(x),vue,md,json}":["eslint --cache --fix"]},"_nodeVersion":"23.11.0","dependencies":{"three":"^0.175.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.3","husky":"^9.1.7","eslint":"^9.33.0","vitest":"^3.2.4","vitepress":"2.0.0-alpha.11","commitizen":"^4.3.1","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/node":"^24.3.0","lint-staged":"^16.1.5","@types/three":"^0.175.0","cz-customizable":"^7.5.0","vite-plugin-dts":"^4.0.0","@antfu/eslint-config":"^5.2.1","commitlint-config-cz":"^0.13.3","conventional-changelog":"^7.1.1","commitlint-config-gitmoji":"^2.3.1","cz-conventional-changelog":"^3.3.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rainy-day_1.0.1_1757669357023_0.1626322535191187","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@arayui/rainy-day","version":"1.0.3","keywords":["rainy-day","typescript","plugin"],"author":{"name":"WuCheng-cn"},"license":"MIT","_id":"@arayui/rainy-day@1.0.3","maintainers":[{"name":"arayui","email":"1965417564@qq.com"}],"homepage":"https://github.com/WuCheng-cn/AnyRainyDay#readme","bugs":{"url":"https://github.com/WuCheng-cn/AnyRainyDay/issues"},"dist":{"shasum":"22e281d68eb9dbb5769eda1e3ef33b7d68747724","tarball":"https://registry.npmjs.org/@arayui/rainy-day/-/rainy-day-1.0.3.tgz","fileCount":14,"integrity":"sha512-4sqF0pDqfLW6Foc0yMqOJnIXdLfHo4PBo0zuh0HQAkfvR6RHNgJNvYr/h34A5oNR9V6mKrT7INvQDWBdg/xZ1g==","signatures":[{"sig":"MEUCIGzqXDJvMZp01kyekwLj6XUBlgvJ2zSKmao9E5FbiRraAiEAqbX/AFPC/xjJSy9EmzDiNub7nvwoelCrTbkJb746E68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1766514},"main":"./dist/index.cjs","type":"module","types":"./dist/types/index.d.ts","config":{"commitizen":{"path":"cz-customizable"},"cz-customizable":{"config":"./.cz-config.cjs"}},"module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/types/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"15e5e7001f7af7153c6a9ae21b2a628f93b4612e","scripts":{"cz":"cz","test":"vitest","build":"vite build","prepare":"husky","release":"pnpm build && release-it","docs:dev":"vitepress dev docs","lint:fix":"eslint . --fix","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs"},"_npmUser":{"name":"arayui","email":"1965417564@qq.com"},"repository":{"url":"git+https://github.com/WuCheng-cn/AnyRainyDay.git","type":"git"},"_npmVersion":"10.9.2","description":"下雨天气背景插件","directories":{},"lint-staged":{"src/**/*.{?([cm])[jt]s?(x),vue,md,json}":["eslint --cache --fix"]},"_nodeVersion":"23.11.0","dependencies":{"three":"^0.175.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.3","husky":"^9.1.7","eslint":"^9.33.0","vitest":"^3.2.4","vitepress":"2.0.0-alpha.11","commitizen":"^4.3.1","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/node":"^24.3.0","lint-staged":"^16.1.5","@types/three":"^0.175.0","cz-customizable":"^7.5.0","vite-plugin-dts":"^4.0.0","@antfu/eslint-config":"^5.2.1","commitlint-config-cz":"^0.13.3","conventional-changelog":"^7.1.1","commitlint-config-gitmoji":"^2.3.1","cz-conventional-changelog":"^3.3.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rainy-day_1.0.3_1757923595614_0.3284934447189398","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@arayui/rainy-day","version":"1.0.4","keywords":["rainy-day","typescript","plugin"],"author":{"name":"WuCheng-cn"},"license":"MIT","_id":"@arayui/rainy-day@1.0.4","maintainers":[{"name":"arayui","email":"1965417564@qq.com"}],"homepage":"https://github.com/WuCheng-cn/AnyRainyDay#readme","bugs":{"url":"https://github.com/WuCheng-cn/AnyRainyDay/issues"},"dist":{"shasum":"66f8e58c83cf368c6cae488c75235578a1f10af3","tarball":"https://registry.npmjs.org/@arayui/rainy-day/-/rainy-day-1.0.4.tgz","fileCount":14,"integrity":"sha512-W5cjLjQHuCo/ysWw4qykz5t1+c8J/uDgLtiACqd6MSJjGCs+NEt8huG6DAUiBQYXmB1BFpJklj0vbJqeyV4Gjw==","signatures":[{"sig":"MEYCIQCMi6cG8dp/3FFisj9B6jMVETafCsEgVNIndOtlr0Zr8wIhAN6DulG5d+F8UgY3JHwWV75J5DLf9E3xym1T8ujT7bVZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1766688},"main":"./dist/index.cjs","type":"module","types":"./dist/types/index.d.ts","config":{"commitizen":{"path":"cz-customizable"},"cz-customizable":{"config":"./.cz-config.cjs"}},"module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/types/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"0fb3d6c0231b36527162717cf66f84b6efea28b1","scripts":{"cz":"cz","test":"vitest","build":"vite build","prepare":"husky","release":"pnpm build && release-it","docs:dev":"vitepress dev docs","lint:fix":"eslint . --fix","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs"},"_npmUser":{"name":"arayui","email":"1965417564@qq.com"},"repository":{"url":"git+https://github.com/WuCheng-cn/AnyRainyDay.git","type":"git"},"_npmVersion":"10.9.2","description":"下雨天气背景插件","directories":{},"lint-staged":{"src/**/*.{?([cm])[jt]s?(x),vue,md,json}":["eslint --cache --fix"]},"_nodeVersion":"23.11.0","dependencies":{"three":"^0.175.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.3","husky":"^9.1.7","eslint":"^9.33.0","vitest":"^3.2.4","vitepress":"2.0.0-alpha.11","commitizen":"^4.3.1","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/node":"^24.3.0","lint-staged":"^16.1.5","@types/three":"^0.175.0","cz-customizable":"^7.5.0","vite-plugin-dts":"^4.0.0","@antfu/eslint-config":"^5.2.1","commitlint-config-cz":"^0.13.3","conventional-changelog":"^7.1.1","commitlint-config-gitmoji":"^2.3.1","cz-conventional-changelog":"^3.3.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rainy-day_1.0.4_1757928275309_0.6100841528035943","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@arayui/rainy-day","version":"1.0.5","keywords":["rainy-day","typescript","plugin"],"author":{"name":"WuCheng-cn"},"license":"MIT","_id":"@arayui/rainy-day@1.0.5","maintainers":[{"name":"arayui","email":"1965417564@qq.com"}],"homepage":"https://github.com/WuCheng-cn/AnyRainyDay#readme","bugs":{"url":"https://github.com/WuCheng-cn/AnyRainyDay/issues"},"dist":{"shasum":"86a91ad9d01ded869beb27e48c2d6a0885e9910a","tarball":"https://registry.npmjs.org/@arayui/rainy-day/-/rainy-day-1.0.5.tgz","fileCount":14,"integrity":"sha512-asfDoHFNP1bJstjYGJ/ZfP0B5eaXQw57M6SzKclF5I55d4vnZn9qcCizqlOB+4foz8dpeajA6Zy7RS8kxazFKw==","signatures":[{"sig":"MEYCIQCOAlWbBjjGb7lPfOyufN1CRd6C+y2ioWzPU9eLWJaePwIhAN6bUkocQ2VTcmWY3RbT7Uv85/RtTPS+tuMrEpgcTclK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1768710},"main":"./dist/index.cjs","type":"module","types":"./dist/types/index.d.ts","config":{"commitizen":{"path":"cz-customizable"},"cz-customizable":{"config":"./.cz-config.cjs"}},"module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/types/index.d.ts","default":"./dist/index.cjs"}}},"gitHead":"edeaf2daba16dda44e329c1d5b8d192ceda79b7c","scripts":{"cz":"cz","test":"vitest","build":"vite build","prepare":"husky","release":"pnpm build && release-it","docs:dev":"vitepress dev docs","lint:fix":"eslint . --fix","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs"},"_npmUser":{"name":"arayui","email":"1965417564@qq.com"},"repository":{"url":"git+https://github.com/WuCheng-cn/AnyRainyDay.git","type":"git"},"_npmVersion":"10.9.2","description":"下雨天气背景插件","directories":{},"lint-staged":{"src/**/*.{?([cm])[jt]s?(x),vue,md,json}":["eslint --cache --fix"]},"_nodeVersion":"23.11.0","dependencies":{"three":"^0.175.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.3","husky":"^9.1.7","eslint":"^9.33.0","vitest":"^3.2.4","vitepress":"2.0.0-alpha.11","commitizen":"^4.3.1","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/node":"^24.3.0","lint-staged":"^16.1.5","@types/three":"^0.175.0","cz-customizable":"^7.5.0","vite-plugin-dts":"^4.0.0","@antfu/eslint-config":"^5.2.1","commitlint-config-cz":"^0.13.3","conventional-changelog":"^7.1.1","commitlint-config-gitmoji":"^2.3.1","cz-conventional-changelog":"^3.3.0","@release-it/conventional-changelog":"^10.0.1"},"_npmOperationalInternal":{"tmp":"tmp/rainy-day_1.0.5_1757930776647_0.3962212850381166","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@arayui/rainy-day","type":"module","version":"1.0.6","description":"下雨天气背景插件","author":{"name":"WuCheng-cn"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/WuCheng-cn/AnyRainyDay.git"},"keywords":["rainy-day","typescript","plugin"],"exports":{".":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/types/index.d.ts","default":"./dist/index.cjs"}}},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/types/index.d.ts","scripts":{"build":"vite build","test":"vitest","lint:fix":"eslint . --fix","prepare":"husky","cz":"cz","release":"pnpm build && release-it","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs"},"dependencies":{"three":"^0.175.0"},"devDependencies":{"@antfu/eslint-config":"^5.2.1","@release-it/conventional-changelog":"^10.0.1","@types/node":"^24.3.0","@types/three":"^0.175.0","commitizen":"^4.3.1","commitlint":"^19.8.1","commitlint-config-cz":"^0.13.3","commitlint-config-gitmoji":"^2.3.1","conventional-changelog":"^7.1.1","cz-conventional-changelog":"^3.3.0","cz-customizable":"^7.5.0","eslint":"^9.33.0","husky":"^9.1.7","lint-staged":"^16.1.5","release-it":"^19.0.4","typescript":"^5.9.2","vite":"^7.1.3","vite-plugin-dts":"^4.0.0","vitepress":"2.0.0-alpha.11","vitest":"^3.2.4"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"config":{"commitizen":{"path":"cz-customizable"},"cz-customizable":{"config":"./.cz-config.cjs"}},"lint-staged":{"src/**/*.{?([cm])[jt]s?(x),vue,md,json}":["eslint --cache --fix"]},"_id":"@arayui/rainy-day@1.0.6","gitHead":"2cbe16892fb39e49f9f1d3d68147d85c12d39304","bugs":{"url":"https://github.com/WuCheng-cn/AnyRainyDay/issues"},"homepage":"https://github.com/WuCheng-cn/AnyRainyDay#readme","_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-SppYQpKYm5PYsvLpOj3NL++yBYlDYDjqq8D/KPDWrvH1BYL4OMMGJmasRCcnRCL6U+eiDxXk0xMEe8VrR+rZrA==","shasum":"f9b6abb01e071517e1bcb149c90895e2127b77f3","tarball":"https://registry.npmjs.org/@arayui/rainy-day/-/rainy-day-1.0.6.tgz","fileCount":14,"unpackedSize":1770386,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAWGgwHwtjdfq1sfy8iFQ7fny6tHyOW6/mVgGAQHlzDeAiBTvZWQrDTWoMhol/cv1JZAewXPrPSTcBDfkHKY0so8KQ=="}]},"_npmUser":{"name":"arayui","email":"1965417564@qq.com"},"directories":{},"maintainers":[{"name":"arayui","email":"1965417564@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rainy-day_1.0.6_1757985288252_0.34721658964835433"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-12T09:29:16.951Z","modified":"2025-09-16T01:14:48.702Z","1.0.1":"2025-09-12T09:29:17.262Z","1.0.3":"2025-09-15T08:06:35.840Z","1.0.4":"2025-09-15T09:24:35.547Z","1.0.5":"2025-09-15T10:06:16.877Z","1.0.6":"2025-09-16T01:14:48.534Z"},"bugs":{"url":"https://github.com/WuCheng-cn/AnyRainyDay/issues"},"author":{"name":"WuCheng-cn"},"license":"MIT","homepage":"https://github.com/WuCheng-cn/AnyRainyDay#readme","keywords":["rainy-day","typescript","plugin"],"repository":{"type":"git","url":"git+https://github.com/WuCheng-cn/AnyRainyDay.git"},"description":"下雨天气背景插件","maintainers":[{"name":"arayui","email":"1965417564@qq.com"}],"readme":"# @arayui/rainy-day 🌧️\n\n`@arayui/rainy-day` 是一个基于 Three.js 实现的雨滴窗口效果库，通过 WebGL 着色器技术创建逼真的雨滴落在窗户上的视觉效果。支持背景图片和视频，提供丰富的参数控制接口。\n\n[📖 在线文档](https://wucheng-cn.github.io/AnyRainyDay/) | [📦 NPM包](https://www.npmjs.com/package/@arayui/rainy-day)\n\n## 主要功能 ✨\n\n- **逼真雨滴效果**：基于 GLSL 着色器实现的高质量雨滴视觉效果\n- **背景支持**：支持图片和视频作为背景\n- **丰富参数控制**：提供 10+ 个可配置参数，实时调整效果\n- **性能优化**：支持 FPS 限制和性能调节\n- **TypeScript 支持**：完整的类型定义和类型安全\n- **零依赖**：除 Three.js 外无其他依赖\n\n## 参数配置 🎛️\n\n| 参数 | 描述 | 范围 | 默认值 |\n|------|------|------|--------|\n| intensity | 雨滴强度 | 0-1 | 0.4 |\n| speed | 雨滴速度 | 0-10 | 0.25 |\n| brightness | 亮度调节 | 0-1 | 0.8 |\n| normal | 法线强度 | 0-3 | 0.5 |\n| zoom | 缩放比例 | 0.1-3 | 2.61 |\n| blurIntensity | 模糊强度 | 0-10 | 0.5 |\n| blurIterations | 模糊迭代次数 | 1-64 | 16 |\n| panning | 平移效果开关 | boolean | false |\n| postProcessing | 后处理开关 | boolean | true |\n| lightning | 闪电效果开关 | boolean | false |\n| textureFill | 纹理填充开关 | boolean | true |\n| fps | 帧率设置 | 15-120 | 30 |\n| backgroundImage | 背景图片URL | string | https://picsum.photos/1920/1080 |\n\n## 安装 📦\n\n使用 pnpm 安装：\n\n```bash\npnpm install @arayui/rainy-day\n```\n\n或者使用 npm：\n\n```bash\nnpm install @arayui/rainy-day\n```\n\n## 使用示例 🚀\n\n### 基础用法\n\n```typescript\nimport { RainyWindow } from '@arayui/rainy-day'\n\n// 创建雨滴效果\nconst container = document.getElementById('rain-container')\nconst rainyWindow = new RainyWindow(container)\n\n// 加载背景图片\nawait rainyWindow.loadImage('path/to/image.jpg')\n\n// 调整参数\nrainyWindow.setIntensity(0.6)\nrainyWindow.setSpeed(0.5)\n```\n\n### 使用配置选项\n\n```typescript\nimport { RainyWindow } from '@arayui/rainy-day'\n\nconst container = document.getElementById('rain-container')\nconst rainyWindow = new RainyWindow(container, {\n  intensity: 0.5,\n  speed: 0.3,\n  brightness: 0.9,\n  normal: 1.2,\n  zoom: 2.0,\n  blurIntensity: 0.3,\n  blurIterations: 8,\n  postProcessing: true,\n  lightning: true,\n  fps: 60\n})\n\n// 加载背景视频\nawait rainyWindow.loadVideo('path/to/video.mp4')\n```\n\n### 动态控制效果\n\n```typescript\n// 实时调整参数\nconst gui = new dat.GUI()\ngui.add({ intensity: 0.4 }, 'intensity', 0, 1).onChange((value: number) => {\n  rainyWindow.setIntensity(value)\n})\n\n// 切换效果\nrainyWindow.setLightning(true) // 启用闪电\nrainyWindow.setPanning(true)   // 启用平移\nrainyWindow.setPostProcessing(false) // 禁用后处理\n```\n\n### CDN使用方式\n\n如果你想通过CDN方式使用，可以直接引入UMD格式的文件：\n\n```html\n<!DOCTYPE html>\n<html>\n<head>\n    <title>雨滴窗口效果 - CDN使用</title>\n    <style>\n        body { margin: 0; padding: 0; overflow: hidden; }\n        #rain-container { width: 100vw; height: 100vh; }\n    </style>\n</head>\n<body>\n    <div id=\"rain-container\"></div>\n    \n    <!-- 引入 @arayui/rainy-day -->\n    <script src=\"https://cdn.jsdelivr.net/npm/@arayui/rainy-day@latest/dist/index.min.js\"></script>\n    \n    <script>\n        // 等待页面加载完成\n        window.addEventListener('load', function() {\n            const container = document.getElementById('rain-container')\n            \n            // 创建雨滴效果实例\n            const rainyWindow = new window.any.RainyWindow(container, {\n                intensity: 0.5,\n                speed: 0.3,\n                lightning: true,\n                fps: 60\n            })\n            \n            // 加载背景图片\n            rainyWindow.loadImage('https://picsum.photos/1920/1080')\n        })\n    </script>\n</body>\n</html>\n```\n\n### 完整示例 (ES模块)\n\n```html\n<!DOCTYPE html>\n<html>\n<head>\n    <title>雨滴窗口效果</title>\n    <style>\n        body { margin: 0; padding: 0; overflow: hidden; }\n        #rain-container { width: 100vw; height: 100vh; }\n    </style>\n</head>\n<body>\n    <div id=\"rain-container\"></div>\n    \n    <script type=\"module\">\n        import { RainyWindow } from 'https://cdn.jsdelivr.net/npm/@arayui/rainy-day@latest/dist/index.mjs'\n        \n        const container = document.getElementById('rain-container')\n        const rainyWindow = new RainyWindow(container, {\n            intensity: 0.5,\n            speed: 0.3,\n            lightning: true,\n            fps: 60\n        })\n        \n        // 加载背景\n        await rainyWindow.loadImage('https://picsum.photos/1920/1080')\n    </script>\n</body>\n</html>\n```\n\n## API 文档 📚\n\n### RainyWindow 类\n\n#### 构造函数\n\n```typescript\nnew RainyWindow(container: HTMLElement, options?: RainyWindowOptions)\n```\n\n#### 方法\n\n##### 参数控制\n- `setIntensity(value: number): void` - 设置雨滴强度\n- `setSpeed(value: number): void` - 设置雨滴速度\n- `setBrightness(value: number): void` - 设置亮度\n- `setNormal(value: number): void` - 设置法线强度\n- `setZoom(value: number): void` - 设置缩放比例\n- `setBlurIntensity(value: number): void` - 设置模糊强度\n- `setBlurIterations(value: number): void` - 设置模糊迭代次数\n- `setPanning(value: boolean): void` - 启用/禁用平移效果\n- `setPostProcessing(value: boolean): void` - 启用/禁用后处理\n- `setLightning(value: boolean): void` - 启用/禁用闪电效果\n- `setTextureFill(value: boolean): void` - 启用/禁用纹理填充\n- `setFps(value: number): void` - 设置帧率\n\n##### 资源管理\n- `loadImage(url: string): Promise<void>` - 加载背景图片\n- `loadVideo(url: string): Promise<void>` - 加载背景视频\n- `destroy(): void` - 销毁实例并清理资源\n- `pause(): void` - 暂停渲染\n- `resume(): void` - 恢复渲染\n\n### 类型定义\n\n```typescript\ninterface RainyWindowOptions {\n  intensity?: number      // 雨滴强度 (0-1)\n  speed?: number         // 雨滴速度 (0-10)\n  brightness?: number    // 亮度调节 (0-1)\n  normal?: number        // 法线强度 (0-3)\n  zoom?: number          // 缩放比例 (0.1-3)\n  blurIntensity?: number // 模糊强度 (0-10)\n  blurIterations?: number // 模糊迭代次数 (1-64)\n  panning?: boolean      // 平移效果开关\n  postProcessing?: boolean // 后处理开关\n  lightning?: boolean    // 闪电效果开关\n  textureFill?: boolean  // 纹理填充开关\n  fps?: number           // 帧率设置 (15-120)\n}\n\ninterface RainyWindowControls {\n  setIntensity: (value: number) => void\n  setSpeed: (value: number) => void\n  setBrightness: (value: number) => void\n  setNormal: (value: number) => void\n  setZoom: (value: number) => void\n  setBlurIntensity: (value: number) => void\n  setBlurIterations: (value: number) => void\n  setPanning: (value: boolean) => void\n  setPostProcessing: (value: boolean) => void\n  setLightning: (value: boolean) => void\n  setTextureFill: (value: boolean) => void\n  setFps: (value: number) => void\n  loadImage: (url: string) => Promise<void>\n  loadVideo: (url: string) => Promise<void>\n  destroy: () => void\n  pause: () => void\n  resume: () => void\n}\n```\n\n## 开发 🛠️\n\n### 安装依赖\n\n```bash\npnpm install\n```\n\n### 开发模式\n\n```bash\npnpm dev\n```\n\n### 构建\n\n```bash\npnpm build\n```\n\n### 运行示例\n\n```bash\npnpm example\n```\n\n## 性能优化 💡\n\n- **FPS 限制**：通过 `setFps()` 方法限制渲染帧率\n- **模糊优化**：调整 `blurIterations` 减少计算量\n- **纹理优化**：根据设备性能调整纹理质量\n- **后处理开关**：在低性能设备上可关闭后处理效果\n\n## 浏览器兼容性 🌐\n\n- Chrome 60+\n- Firefox 55+\n- Safari 12+\n- Edge 79+\n\n需要支持 WebGL 的浏览器环境。\n\n## 许可证 📄\n\nMIT License - 详见 [LICENSE](LICENSE) 文件\n\n## 贡献 🤝\n\n欢迎提交 Issue 和 Pull Request！\n\n## 致谢 👏\n\n- [Three.js](https://threejs.org/) - 3D 图形库\n- 灵感来源于真实雨滴效果的物理模拟\n","readmeFilename":"README.md"}