@poolzin/pool-bot 2026.1.38 → 2026.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/assets/chrome-extension/README.md +3 -3
  2. package/assets/chrome-extension/background.js +5 -5
  3. package/assets/chrome-extension/manifest.json +3 -3
  4. package/assets/chrome-extension/options.html +4 -4
  5. package/assets/chrome-extension/options.js +1 -1
  6. package/dist/acp/client.js +3 -3
  7. package/dist/acp/types.js +1 -1
  8. package/dist/agents/agent-paths.js +3 -3
  9. package/dist/agents/auth-profiles/paths.js +3 -3
  10. package/dist/agents/cli-runner/helpers.js +1 -1
  11. package/dist/agents/cli-runner.js +2 -2
  12. package/dist/agents/cloudflare-ai-gateway.js +31 -0
  13. package/dist/agents/compaction.js +16 -2
  14. package/dist/agents/context-window-guard.js +13 -10
  15. package/dist/agents/context.js +4 -4
  16. package/dist/agents/docs-path.js +1 -1
  17. package/dist/agents/minimax-vlm.js +1 -1
  18. package/dist/agents/model-auth.js +12 -1
  19. package/dist/agents/model-catalog.js +4 -4
  20. package/dist/agents/model-selection.js +10 -4
  21. package/dist/agents/models-config.js +3 -3
  22. package/dist/agents/models-config.providers.js +147 -39
  23. package/dist/agents/pi-embedded-helpers/openai.js +1 -1
  24. package/dist/agents/pi-embedded-runner/compact.js +8 -8
  25. package/dist/agents/pi-embedded-runner/model.js +2 -2
  26. package/dist/agents/pi-embedded-runner/run/attempt.js +6 -6
  27. package/dist/agents/pi-embedded-runner/run.js +4 -4
  28. package/dist/agents/pi-embedded-runner/tool-result-truncation.js +275 -0
  29. package/dist/agents/pi-embedded-runner/utils.js +1 -1
  30. package/dist/agents/pi-model-discovery.js +10 -0
  31. package/dist/agents/pi-tool-definition-adapter.js +50 -9
  32. package/dist/agents/pi-tools.before-tool-call.js +67 -0
  33. package/dist/agents/pi-tools.js +10 -5
  34. package/dist/agents/pi-tools.read.js +2 -2
  35. package/dist/agents/session-file-repair.js +83 -0
  36. package/dist/agents/session-transcript-repair.js +68 -0
  37. package/dist/agents/skills/frontmatter.js +1 -1
  38. package/dist/agents/skills/workspace.js +2 -2
  39. package/dist/agents/system-prompt.js +28 -4
  40. package/dist/agents/together-models.js +127 -0
  41. package/dist/agents/tool-images.js +1 -1
  42. package/dist/agents/tool-policy.js +1 -1
  43. package/dist/agents/tools/browser-tool.js +3 -3
  44. package/dist/agents/tools/image-tool.js +2 -2
  45. package/dist/agents/tools/memory-tool.js +94 -7
  46. package/dist/agents/tools/web-search.js +1 -1
  47. package/dist/agents/workspace.js +1 -5
  48. package/dist/auto-reply/commands-registry.data.js +1 -1
  49. package/dist/auto-reply/reply/commands-context-report.js +2 -2
  50. package/dist/auto-reply/reply/commands-session.js +2 -2
  51. package/dist/auto-reply/reply/get-reply-run.js +14 -4
  52. package/dist/auto-reply/reply/groups.js +1 -1
  53. package/dist/auto-reply/reply/inbound-context.js +4 -0
  54. package/dist/auto-reply/reply/inbound-meta.js +130 -0
  55. package/dist/auto-reply/reply/untrusted-context.js +15 -0
  56. package/dist/auto-reply/status.js +1 -1
  57. package/dist/browser/client-fetch.js +1 -1
  58. package/dist/browser/config.js +1 -1
  59. package/dist/browser/extension-relay.js +3 -3
  60. package/dist/browser/server-context.js +2 -2
  61. package/dist/build-info.json +3 -3
  62. package/dist/canvas-host/a2ui.js +3 -3
  63. package/dist/channels/plugins/agent-tools/whatsapp-login.js +1 -17
  64. package/dist/channels/plugins/catalog.js +2 -2
  65. package/dist/channels/plugins/onboarding/imessage.js +1 -1
  66. package/dist/channels/plugins/onboarding/signal.js +1 -1
  67. package/dist/channels/plugins/onboarding/slack.js +4 -4
  68. package/dist/channels/plugins/onboarding/whatsapp.js +3 -3
  69. package/dist/channels/plugins/pairing-message.js +1 -1
  70. package/dist/cli/browser-cli-extension.js +2 -2
  71. package/dist/cli/docs-cli.js +1 -1
  72. package/dist/cli/gateway-cli/dev.js +1 -1
  73. package/dist/cli/memory-cli.js +25 -15
  74. package/dist/cli/nodes-cli/register.canvas.js +1 -1
  75. package/dist/cli/plugins-cli.js +1 -1
  76. package/dist/cli/run-main.js +2 -2
  77. package/dist/cli/security-cli.js +1 -1
  78. package/dist/cli/tagline.js +1 -1
  79. package/dist/cli/update-cli.js +4 -4
  80. package/dist/cli/webhooks-cli.js +5 -5
  81. package/dist/commands/agents.commands.add.js +1 -1
  82. package/dist/commands/auth-choice.apply.api-providers.js +305 -17
  83. package/dist/commands/auth-choice.apply.js +4 -1
  84. package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
  85. package/dist/commands/auth-choice.apply.xai.js +63 -0
  86. package/dist/commands/auth-choice.preferred-provider.js +7 -1
  87. package/dist/commands/configure.wizard.js +1 -1
  88. package/dist/commands/dashboard.js +1 -1
  89. package/dist/commands/docs.js +1 -1
  90. package/dist/commands/doctor-gateway-services.js +3 -3
  91. package/dist/commands/doctor-state-integrity.js +2 -14
  92. package/dist/commands/doctor-update.js +3 -3
  93. package/dist/commands/doctor.js +1 -1
  94. package/dist/commands/models/list.probe.js +2 -2
  95. package/dist/commands/models/list.registry.js +4 -4
  96. package/dist/commands/models/list.status-command.js +2 -2
  97. package/dist/commands/onboard-auth.config-core.js +366 -28
  98. package/dist/commands/onboard-auth.credentials.js +71 -9
  99. package/dist/commands/onboard-auth.js +3 -3
  100. package/dist/commands/onboard-auth.models.js +26 -24
  101. package/dist/commands/onboard-non-interactive/local/auth-choice.js +140 -6
  102. package/dist/commands/status-all/report-lines.js +1 -1
  103. package/dist/commands/status.command.js +1 -1
  104. package/dist/commands/uninstall.js +3 -3
  105. package/dist/compat/legacy-names.js +1 -1
  106. package/dist/config/io.js +3 -3
  107. package/dist/config/schema.js +1 -1
  108. package/dist/config/types.js +0 -1
  109. package/dist/config/types.memory.js +1 -0
  110. package/dist/config/version.js +4 -4
  111. package/dist/config/zod-schema.js +0 -6
  112. package/dist/daemon/constants.js +7 -7
  113. package/dist/daemon/inspect.js +6 -6
  114. package/dist/daemon/systemd-unit.js +1 -1
  115. package/dist/discord/monitor/message-handler.process.js +6 -4
  116. package/dist/gateway/client.js +0 -14
  117. package/dist/gateway/live-image-probe.js +1 -66
  118. package/dist/gateway/openai-http.js +2 -2
  119. package/dist/gateway/openresponses-http.js +4 -4
  120. package/dist/gateway/server-discovery.js +2 -2
  121. package/dist/gateway/server-http.js +1 -1
  122. package/dist/gateway/server.impl.js +2 -6
  123. package/dist/hooks/frontmatter.js +1 -1
  124. package/dist/hooks/hooks-status.js +1 -1
  125. package/dist/hooks/install.js +2 -2
  126. package/dist/hooks/loader.js +1 -1
  127. package/dist/hooks/workspace.js +3 -3
  128. package/dist/index.js +2 -2
  129. package/dist/infra/bonjour.js +3 -3
  130. package/dist/infra/path-env.js +3 -3
  131. package/dist/infra/provider-usage.fetch.minimax.js +1 -1
  132. package/dist/infra/restart.js +1 -1
  133. package/dist/infra/tailscale.js +1 -1
  134. package/dist/macos/relay.js +2 -2
  135. package/dist/media/input-files.js +1 -1
  136. package/dist/media/mime.js +4 -0
  137. package/dist/media/png-encode.js +74 -0
  138. package/dist/media-understanding/providers/image.js +2 -2
  139. package/dist/memory/backend-config.js +207 -0
  140. package/dist/memory/embeddings.js +1 -1
  141. package/dist/memory/index.js +0 -5
  142. package/dist/memory/manager.js +3 -25
  143. package/dist/memory/types.js +1 -0
  144. package/dist/node-host/runner.js +2 -2
  145. package/dist/pairing/pairing-messages.js +1 -1
  146. package/dist/plugins/discovery.js +1 -1
  147. package/dist/plugins/install.js +2 -2
  148. package/dist/plugins/update.js +1 -1
  149. package/dist/security/audit.js +2 -2
  150. package/dist/shared/text/reasoning-tags.js +52 -7
  151. package/dist/slack/monitor/message-handler/prepare.js +10 -4
  152. package/dist/slack/monitor/slash.js +10 -4
  153. package/dist/tailscale/detect.js +146 -0
  154. package/dist/telegram/bot-message-context.js +1 -1
  155. package/dist/test-helpers/workspace.js +11 -0
  156. package/dist/test-utils/channel-plugins.js +82 -0
  157. package/dist/test-utils/ports.js +73 -0
  158. package/dist/utils/shell-argv.js +61 -0
  159. package/dist/utils.js +10 -0
  160. package/dist/web/qr-image.js +1 -61
  161. package/dist/wizard/onboarding.finalize.js +7 -7
  162. package/dist/wizard/onboarding.js +3 -3
  163. package/docs/RELEASE_WORKFOTS_COMPARISON.md +3 -3
  164. package/docs/_config.yml +2 -2
  165. package/docs/_layouts/default.html +9 -9
  166. package/docs/concepts/typebox.md +1 -1
  167. package/docs/docs.json +1 -1
  168. package/docs/northflank.mdx +7 -7
  169. package/docs/railway.mdx +3 -3
  170. package/docs/render.mdx +5 -5
  171. package/docs/start/lore.md +2 -2
  172. package/extensions/bluebubbles/index.ts +2 -2
  173. package/extensions/bluebubbles/package.json +1 -1
  174. package/extensions/bluebubbles/src/accounts.ts +8 -8
  175. package/extensions/bluebubbles/src/actions.test.ts +22 -22
  176. package/extensions/bluebubbles/src/actions.ts +5 -5
  177. package/extensions/bluebubbles/src/attachments.ts +2 -2
  178. package/extensions/bluebubbles/src/channel.ts +16 -16
  179. package/extensions/bluebubbles/src/chat.ts +2 -2
  180. package/extensions/bluebubbles/src/media-send.ts +2 -2
  181. package/extensions/bluebubbles/src/monitor.test.ts +46 -46
  182. package/extensions/bluebubbles/src/monitor.ts +5 -5
  183. package/extensions/bluebubbles/src/onboarding.ts +7 -7
  184. package/extensions/bluebubbles/src/reactions.ts +2 -2
  185. package/extensions/bluebubbles/src/send.ts +2 -2
  186. package/extensions/copilot-proxy/README.md +1 -1
  187. package/extensions/copilot-proxy/package.json +1 -1
  188. package/extensions/diagnostics-otel/index.ts +2 -2
  189. package/extensions/diagnostics-otel/package.json +1 -1
  190. package/extensions/diagnostics-otel/src/service.ts +3 -3
  191. package/extensions/discord/index.ts +2 -2
  192. package/extensions/discord/package.json +1 -1
  193. package/extensions/google-antigravity-auth/README.md +1 -1
  194. package/extensions/google-antigravity-auth/index.ts +1 -1
  195. package/extensions/google-antigravity-auth/package.json +1 -1
  196. package/extensions/google-gemini-cli-auth/README.md +1 -1
  197. package/extensions/google-gemini-cli-auth/oauth.ts +1 -1
  198. package/extensions/google-gemini-cli-auth/package.json +1 -1
  199. package/extensions/googlechat/index.ts +3 -3
  200. package/extensions/googlechat/package.json +1 -1
  201. package/extensions/googlechat/src/accounts.ts +8 -8
  202. package/extensions/googlechat/src/actions.ts +6 -6
  203. package/extensions/googlechat/src/channel.ts +21 -21
  204. package/extensions/googlechat/src/monitor.ts +8 -8
  205. package/extensions/googlechat/src/onboarding.ts +10 -10
  206. package/extensions/imessage/index.ts +2 -2
  207. package/extensions/imessage/package.json +1 -1
  208. package/extensions/line/index.ts +2 -2
  209. package/extensions/line/package.json +1 -1
  210. package/extensions/line/src/card-command.ts +2 -2
  211. package/extensions/line/src/channel.logout.test.ts +4 -4
  212. package/extensions/line/src/channel.sendPayload.test.ts +8 -8
  213. package/extensions/line/src/channel.ts +3 -3
  214. package/extensions/llm-task/README.md +3 -3
  215. package/extensions/llm-task/index.ts +2 -2
  216. package/extensions/llm-task/package.json +1 -1
  217. package/extensions/llm-task/src/llm-task-tool.ts +4 -4
  218. package/extensions/lobster/README.md +6 -6
  219. package/extensions/lobster/index.ts +2 -2
  220. package/extensions/lobster/src/lobster-tool.test.ts +4 -4
  221. package/extensions/lobster/src/lobster-tool.ts +2 -2
  222. package/extensions/matrix/index.ts +2 -2
  223. package/extensions/matrix/package.json +1 -1
  224. package/extensions/matrix/src/matrix/client/config.ts +1 -1
  225. package/extensions/matrix/src/matrix/monitor/handler.ts +1 -1
  226. package/extensions/matrix/src/onboarding.ts +1 -1
  227. package/extensions/mattermost/index.ts +2 -2
  228. package/extensions/mattermost/package.json +1 -1
  229. package/extensions/mattermost/src/mattermost/accounts.ts +8 -8
  230. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
  231. package/extensions/mattermost/src/mattermost/monitor.ts +2 -2
  232. package/extensions/mattermost/src/onboarding-helpers.ts +3 -3
  233. package/extensions/mattermost/src/onboarding.ts +2 -2
  234. package/extensions/memory-core/index.ts +2 -2
  235. package/extensions/memory-core/package.json +1 -4
  236. package/extensions/memory-lancedb/index.ts +3 -3
  237. package/extensions/memory-lancedb/package.json +1 -1
  238. package/extensions/msteams/index.ts +2 -2
  239. package/extensions/msteams/package.json +1 -1
  240. package/extensions/msteams/src/channel.directory.test.ts +2 -2
  241. package/extensions/msteams/src/channel.ts +2 -2
  242. package/extensions/msteams/src/graph-upload.ts +4 -4
  243. package/extensions/msteams/src/monitor-handler.ts +2 -2
  244. package/extensions/msteams/src/monitor.ts +2 -2
  245. package/extensions/msteams/src/onboarding.ts +9 -9
  246. package/extensions/msteams/src/reply-dispatcher.ts +2 -2
  247. package/extensions/msteams/src/send-context.ts +2 -2
  248. package/extensions/msteams/src/send.ts +4 -4
  249. package/extensions/nextcloud-talk/index.ts +2 -2
  250. package/extensions/nextcloud-talk/package.json +1 -1
  251. package/extensions/nextcloud-talk/src/channel.ts +7 -7
  252. package/extensions/nextcloud-talk/src/inbound.ts +7 -7
  253. package/extensions/nextcloud-talk/src/onboarding.ts +1 -1
  254. package/extensions/nostr/README.md +2 -2
  255. package/extensions/nostr/index.ts +5 -5
  256. package/extensions/nostr/package.json +1 -1
  257. package/extensions/nostr/src/types.ts +4 -4
  258. package/extensions/open-prose/index.ts +2 -2
  259. package/extensions/qwen-portal-auth/README.md +1 -1
  260. package/extensions/signal/index.ts +2 -2
  261. package/extensions/signal/package.json +1 -1
  262. package/extensions/slack/index.ts +2 -2
  263. package/extensions/slack/package.json +1 -1
  264. package/extensions/telegram/index.ts +2 -2
  265. package/extensions/telegram/package.json +1 -1
  266. package/extensions/telegram/src/channel.ts +2 -2
  267. package/extensions/tlon/README.md +2 -2
  268. package/extensions/tlon/index.ts +2 -2
  269. package/extensions/tlon/package.json +1 -1
  270. package/extensions/tlon/src/channel.ts +13 -13
  271. package/extensions/tlon/src/monitor/index.ts +3 -3
  272. package/extensions/tlon/src/onboarding.ts +3 -3
  273. package/extensions/tlon/src/types.ts +3 -3
  274. package/extensions/twitch/README.md +1 -1
  275. package/extensions/twitch/index.ts +2 -2
  276. package/extensions/twitch/package.json +1 -1
  277. package/extensions/twitch/src/config.ts +3 -3
  278. package/extensions/twitch/src/monitor.ts +3 -3
  279. package/extensions/twitch/src/onboarding.ts +9 -9
  280. package/extensions/twitch/src/outbound.test.ts +2 -2
  281. package/extensions/twitch/src/plugin.test.ts +2 -2
  282. package/extensions/twitch/src/plugin.ts +8 -8
  283. package/extensions/twitch/src/send.test.ts +2 -2
  284. package/extensions/twitch/src/send.ts +4 -4
  285. package/extensions/twitch/src/token.test.ts +8 -8
  286. package/extensions/twitch/src/token.ts +3 -3
  287. package/extensions/twitch/src/twitch-client.ts +3 -3
  288. package/extensions/twitch/src/types.ts +3 -3
  289. package/extensions/twitch/src/utils/markdown.ts +1 -1
  290. package/extensions/voice-call/README.md +3 -3
  291. package/extensions/voice-call/package.json +1 -1
  292. package/extensions/voice-call/src/core-bridge.ts +2 -2
  293. package/extensions/voice-call/src/response-generator.ts +1 -1
  294. package/extensions/whatsapp/index.ts +2 -2
  295. package/extensions/whatsapp/package.json +1 -1
  296. package/extensions/zalo/README.md +1 -1
  297. package/extensions/zalo/index.ts +2 -2
  298. package/extensions/zalo/package.json +1 -1
  299. package/extensions/zalo/src/accounts.ts +8 -8
  300. package/extensions/zalo/src/actions.ts +4 -4
  301. package/extensions/zalo/src/channel.directory.test.ts +2 -2
  302. package/extensions/zalo/src/channel.ts +18 -18
  303. package/extensions/zalo/src/monitor.ts +9 -9
  304. package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
  305. package/extensions/zalo/src/onboarding.ts +24 -24
  306. package/extensions/zalo/src/send.ts +2 -2
  307. package/extensions/zalouser/README.md +2 -2
  308. package/extensions/zalouser/index.ts +2 -2
  309. package/extensions/zalouser/package.json +1 -1
  310. package/extensions/zalouser/src/accounts.ts +9 -9
  311. package/extensions/zalouser/src/channel.ts +24 -24
  312. package/extensions/zalouser/src/monitor.ts +4 -4
  313. package/extensions/zalouser/src/onboarding.ts +28 -28
  314. package/package.json +13 -250
  315. package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
  316. package/skills/tmux/scripts/find-sessions.sh +1 -1
  317. package/CHANGELOG.md +0 -200
  318. package/README-header.png +0 -0
  319. package/git-hooks/pre-commit +0 -4
  320. package/scripts/format-staged.js +0 -148
  321. package/scripts/postinstall.js +0 -300
  322. package/scripts/setup-git-hooks.js +0 -96
  323. package/skills/webgpu-threejs-tsl/REFERENCE.md +0 -283
  324. package/skills/webgpu-threejs-tsl/SKILL.md +0 -91
  325. package/skills/webgpu-threejs-tsl/docs/compute-shaders.md +0 -404
  326. package/skills/webgpu-threejs-tsl/docs/core-concepts.md +0 -453
  327. package/skills/webgpu-threejs-tsl/docs/materials.md +0 -353
  328. package/skills/webgpu-threejs-tsl/docs/post-processing.md +0 -434
  329. package/skills/webgpu-threejs-tsl/docs/wgsl-integration.md +0 -324
  330. package/skills/webgpu-threejs-tsl/examples/basic-setup.js +0 -87
  331. package/skills/webgpu-threejs-tsl/examples/custom-material.js +0 -170
  332. package/skills/webgpu-threejs-tsl/examples/earth-shader.js +0 -292
  333. package/skills/webgpu-threejs-tsl/examples/particle-system.js +0 -259
  334. package/skills/webgpu-threejs-tsl/examples/post-processing.js +0 -199
  335. package/skills/webgpu-threejs-tsl/templates/compute-shader.js +0 -305
  336. package/skills/webgpu-threejs-tsl/templates/webgpu-project.js +0 -276
@@ -1,434 +0,0 @@
1
- # TSL Post-Processing
2
-
3
- Post-processing applies effects to the rendered image. TSL provides both built-in effects and the ability to create custom effects.
4
-
5
- ## Basic Setup
6
-
7
- ```javascript
8
- import * as THREE from 'three/webgpu';
9
- import { pass } from 'three/tsl';
10
-
11
- // Create renderer
12
- const renderer = new THREE.WebGPURenderer();
13
- await renderer.init();
14
-
15
- // Create post-processing
16
- const postProcessing = new THREE.PostProcessing(renderer);
17
-
18
- // Create scene pass
19
- const scenePass = pass(scene, camera);
20
- const scenePassColor = scenePass.getTextureNode('output');
21
-
22
- // Output (passthrough)
23
- postProcessing.outputNode = scenePassColor;
24
-
25
- // Render with post-processing
26
- function animate() {
27
- postProcessing.render(); // Not renderer.render()
28
- }
29
- ```
30
-
31
- ## Built-in Effects
32
-
33
- ### Bloom
34
-
35
- ```javascript
36
- import { bloom } from 'three/addons/tsl/display/BloomNode.js';
37
-
38
- const scenePass = pass(scene, camera);
39
- const scenePassColor = scenePass.getTextureNode('output');
40
-
41
- // Add bloom
42
- const bloomPass = bloom(scenePassColor);
43
-
44
- // Configure
45
- bloomPass.threshold.value = 0.5; // Brightness threshold
46
- bloomPass.strength.value = 1.0; // Bloom intensity
47
- bloomPass.radius.value = 0.5; // Blur radius
48
-
49
- // Combine original + bloom
50
- postProcessing.outputNode = scenePassColor.add(bloomPass);
51
- ```
52
-
53
- ### Gaussian Blur
54
-
55
- ```javascript
56
- import { gaussianBlur } from 'three/addons/tsl/display/GaussianBlurNode.js';
57
-
58
- const blurred = gaussianBlur(scenePassColor, vec2(2.0)); // Blur strength
59
- postProcessing.outputNode = blurred;
60
- ```
61
-
62
- ### FXAA (Anti-aliasing)
63
-
64
- ```javascript
65
- import { fxaa } from 'three/addons/tsl/display/FXAANode.js';
66
-
67
- postProcessing.outputNode = fxaa(scenePassColor);
68
- ```
69
-
70
- ### SMAA (Anti-aliasing)
71
-
72
- ```javascript
73
- import { smaa } from 'three/addons/tsl/display/SMAANode.js';
74
-
75
- postProcessing.outputNode = smaa(scenePassColor);
76
- ```
77
-
78
- ### Depth of Field
79
-
80
- ```javascript
81
- import { dof } from 'three/addons/tsl/display/DepthOfFieldNode.js';
82
-
83
- const scenePass = pass(scene, camera);
84
- const colorNode = scenePass.getTextureNode('output');
85
- const depthNode = scenePass.getTextureNode('depth');
86
-
87
- const dofPass = dof(colorNode, depthNode, {
88
- focus: 5.0, // Focus distance
89
- aperture: 0.025, // Aperture size
90
- maxblur: 0.01 // Maximum blur
91
- });
92
-
93
- postProcessing.outputNode = dofPass;
94
- ```
95
-
96
- ### Motion Blur
97
-
98
- ```javascript
99
- import { motionBlur } from 'three/addons/tsl/display/MotionBlurNode.js';
100
-
101
- const scenePass = pass(scene, camera);
102
- const velocityPass = scenePass.getTextureNode('velocity');
103
-
104
- const motionBlurPass = motionBlur(scenePassColor, velocityPass);
105
- postProcessing.outputNode = motionBlurPass;
106
- ```
107
-
108
- ### Screen Space Reflections (SSR)
109
-
110
- ```javascript
111
- import { ssr } from 'three/addons/tsl/display/SSRNode.js';
112
-
113
- const scenePass = pass(scene, camera);
114
- const colorNode = scenePass.getTextureNode('output');
115
- const depthNode = scenePass.getTextureNode('depth');
116
- const normalNode = scenePass.getTextureNode('normal');
117
-
118
- const ssrPass = ssr(colorNode, depthNode, normalNode, camera);
119
- postProcessing.outputNode = ssrPass;
120
- ```
121
-
122
- ### Ambient Occlusion (SSAO)
123
-
124
- ```javascript
125
- import { ao } from 'three/addons/tsl/display/AmbientOcclusionNode.js';
126
-
127
- const scenePass = pass(scene, camera);
128
- const depthNode = scenePass.getTextureNode('depth');
129
- const normalNode = scenePass.getTextureNode('normal');
130
-
131
- const aoPass = ao(depthNode, normalNode, camera);
132
- postProcessing.outputNode = scenePassColor.mul(aoPass);
133
- ```
134
-
135
- ### Film Grain
136
-
137
- ```javascript
138
- import { film } from 'three/addons/tsl/display/FilmNode.js';
139
-
140
- const filmPass = film(scenePassColor, {
141
- intensity: 0.5,
142
- grayscale: false
143
- });
144
- postProcessing.outputNode = filmPass;
145
- ```
146
-
147
- ### Outline
148
-
149
- ```javascript
150
- import { outline } from 'three/addons/tsl/display/OutlineNode.js';
151
-
152
- const outlinePass = outline(scene, camera, selectedObjects, {
153
- edgeStrength: 3.0,
154
- edgeGlow: 0.0,
155
- edgeThickness: 1.0,
156
- visibleEdgeColor: new THREE.Color(0xffffff),
157
- hiddenEdgeColor: new THREE.Color(0x190a05)
158
- });
159
-
160
- postProcessing.outputNode = scenePassColor.add(outlinePass);
161
- ```
162
-
163
- ### Chromatic Aberration
164
-
165
- ```javascript
166
- import { chromaticAberration } from 'three/addons/tsl/display/ChromaticAberrationNode.js';
167
-
168
- const caPass = chromaticAberration(scenePassColor, {
169
- offset: vec2(0.002, 0.002)
170
- });
171
- postProcessing.outputNode = caPass;
172
- ```
173
-
174
- ## Color Adjustments
175
-
176
- ### Grayscale
177
-
178
- ```javascript
179
- import { grayscale } from 'three/tsl';
180
-
181
- postProcessing.outputNode = grayscale(scenePassColor);
182
- ```
183
-
184
- ### Saturation
185
-
186
- ```javascript
187
- import { saturation } from 'three/tsl';
188
-
189
- // 0 = grayscale, 1 = normal, 2 = oversaturated
190
- postProcessing.outputNode = saturation(scenePassColor, 1.5);
191
- ```
192
-
193
- ### Hue Shift
194
-
195
- ```javascript
196
- import { hue } from 'three/tsl';
197
-
198
- // Shift hue by radians
199
- postProcessing.outputNode = hue(scenePassColor, time.mul(0.5));
200
- ```
201
-
202
- ### Vibrance
203
-
204
- ```javascript
205
- import { vibrance } from 'three/tsl';
206
-
207
- postProcessing.outputNode = vibrance(scenePassColor, 0.5);
208
- ```
209
-
210
- ### Posterize
211
-
212
- ```javascript
213
- import { posterize } from 'three/tsl';
214
-
215
- // Reduce color levels
216
- postProcessing.outputNode = posterize(scenePassColor, 8);
217
- ```
218
-
219
- ### Sepia
220
-
221
- ```javascript
222
- import { sepia } from 'three/addons/tsl/display/SepiaNode.js';
223
-
224
- postProcessing.outputNode = sepia(scenePassColor);
225
- ```
226
-
227
- ### 3D LUT
228
-
229
- ```javascript
230
- import { lut3D } from 'three/addons/tsl/display/Lut3DNode.js';
231
-
232
- const lutTexture = new THREE.Data3DTexture(lutData, size, size, size);
233
- postProcessing.outputNode = lut3D(scenePassColor, lutTexture, size);
234
- ```
235
-
236
- ## Custom Post-Processing
237
-
238
- ### Basic Custom Effect
239
-
240
- ```javascript
241
- import { Fn, screenUV, float, vec4 } from 'three/tsl';
242
-
243
- const customEffect = Fn(() => {
244
- const color = scenePassColor.toVar();
245
-
246
- // Invert colors
247
- color.rgb.assign(float(1.0).sub(color.rgb));
248
-
249
- return color;
250
- });
251
-
252
- postProcessing.outputNode = customEffect();
253
- ```
254
-
255
- ### Vignette Effect
256
-
257
- ```javascript
258
- const vignette = Fn(() => {
259
- const color = scenePassColor.toVar();
260
-
261
- // Distance from center
262
- const uv = screenUV;
263
- const dist = uv.sub(0.5).length();
264
-
265
- // Vignette falloff
266
- const vignette = float(1.0).sub(dist.mul(1.5)).clamp(0, 1);
267
-
268
- color.rgb.mulAssign(vignette);
269
- return color;
270
- });
271
-
272
- postProcessing.outputNode = vignette();
273
- ```
274
-
275
- ### CRT/Scanline Effect
276
-
277
- ```javascript
278
- const crtEffect = Fn(() => {
279
- const color = scenePassColor.toVar();
280
- const uv = screenUV;
281
-
282
- // Scanlines
283
- const scanline = uv.y.mul(screenSize.y).mul(0.5).sin().mul(0.1).add(0.9);
284
- color.rgb.mulAssign(scanline);
285
-
286
- // Slight RGB offset
287
- const r = texture(scenePassColor, uv.add(vec2(0.002, 0))).r;
288
- const b = texture(scenePassColor, uv.sub(vec2(0.002, 0))).b;
289
- color.r.assign(r);
290
- color.b.assign(b);
291
-
292
- // Vignette
293
- const dist = uv.sub(0.5).length();
294
- color.rgb.mulAssign(float(1.0).sub(dist.mul(0.5)));
295
-
296
- return color;
297
- });
298
-
299
- postProcessing.outputNode = crtEffect();
300
- ```
301
-
302
- ### Pixelate Effect
303
-
304
- ```javascript
305
- const pixelSize = uniform(8.0);
306
-
307
- const pixelate = Fn(() => {
308
- const uv = screenUV;
309
- const pixelUV = uv.mul(screenSize).div(pixelSize).floor().mul(pixelSize).div(screenSize);
310
- return texture(scenePassColor, pixelUV);
311
- });
312
-
313
- postProcessing.outputNode = pixelate();
314
- ```
315
-
316
- ### Edge Detection (Sobel)
317
-
318
- ```javascript
319
- const sobelEdge = Fn(() => {
320
- const uv = screenUV;
321
- const texelSize = vec2(1.0).div(screenSize);
322
-
323
- // Sample 3x3 kernel
324
- const tl = luminance(texture(scenePassColor, uv.add(texelSize.mul(vec2(-1, -1)))));
325
- const tc = luminance(texture(scenePassColor, uv.add(texelSize.mul(vec2(0, -1)))));
326
- const tr = luminance(texture(scenePassColor, uv.add(texelSize.mul(vec2(1, -1)))));
327
- const ml = luminance(texture(scenePassColor, uv.add(texelSize.mul(vec2(-1, 0)))));
328
- const mr = luminance(texture(scenePassColor, uv.add(texelSize.mul(vec2(1, 0)))));
329
- const bl = luminance(texture(scenePassColor, uv.add(texelSize.mul(vec2(-1, 1)))));
330
- const bc = luminance(texture(scenePassColor, uv.add(texelSize.mul(vec2(0, 1)))));
331
- const br = luminance(texture(scenePassColor, uv.add(texelSize.mul(vec2(1, 1)))));
332
-
333
- // Sobel operators
334
- const gx = tl.add(ml.mul(2)).add(bl).sub(tr).sub(mr.mul(2)).sub(br);
335
- const gy = tl.add(tc.mul(2)).add(tr).sub(bl).sub(bc.mul(2)).sub(br);
336
-
337
- const edge = sqrt(gx.mul(gx).add(gy.mul(gy)));
338
-
339
- return vec4(vec3(edge), 1.0);
340
- });
341
-
342
- postProcessing.outputNode = sobelEdge();
343
- ```
344
-
345
- ## Multiple Render Targets (MRT)
346
-
347
- Access multiple buffers from the scene pass:
348
-
349
- ```javascript
350
- import { mrt, output } from 'three/tsl';
351
-
352
- const scenePass = pass(scene, camera);
353
-
354
- // Set up MRT
355
- scenePass.setMRT(mrt({
356
- output: output, // Color output
357
- normal: normalView, // View-space normals
358
- depth: depth // Depth buffer
359
- }));
360
-
361
- // Access individual targets
362
- const colorTexture = scenePass.getTextureNode('output');
363
- const normalTexture = scenePass.getTextureNode('normal');
364
- const depthTexture = scenePass.getTextureNode('depth');
365
- ```
366
-
367
- ## Chaining Effects
368
-
369
- ```javascript
370
- const scenePass = pass(scene, camera);
371
- const color = scenePass.getTextureNode('output');
372
-
373
- // Chain multiple effects
374
- let output = color;
375
-
376
- // 1. Apply bloom
377
- const bloomPass = bloom(output);
378
- output = output.add(bloomPass.mul(0.5));
379
-
380
- // 2. Apply color grading
381
- output = saturation(output, 1.2);
382
-
383
- // 3. Apply vignette
384
- const dist = screenUV.sub(0.5).length();
385
- const vignette = float(1.0).sub(dist.mul(0.5));
386
- output = output.mul(vignette);
387
-
388
- // 4. Apply FXAA
389
- output = fxaa(output);
390
-
391
- postProcessing.outputNode = output;
392
- ```
393
-
394
- ## Conditional Effects
395
-
396
- ```javascript
397
- const effectEnabled = uniform(true);
398
-
399
- const conditionalEffect = Fn(() => {
400
- const color = scenePassColor;
401
- return select(effectEnabled, grayscale(color), color);
402
- });
403
-
404
- postProcessing.outputNode = conditionalEffect();
405
-
406
- // Toggle at runtime
407
- effectEnabled.value = false;
408
- ```
409
-
410
- ## Transitions
411
-
412
- ```javascript
413
- import { transition } from 'three/addons/tsl/display/TransitionNode.js';
414
-
415
- const scenePassA = pass(sceneA, camera);
416
- const scenePassB = pass(sceneB, camera);
417
-
418
- const transitionProgress = uniform(0);
419
-
420
- const transitionPass = transition(
421
- scenePassA.getTextureNode('output'),
422
- scenePassB.getTextureNode('output'),
423
- transitionProgress,
424
- texture(transitionTexture) // Optional transition texture
425
- );
426
-
427
- postProcessing.outputNode = transitionPass;
428
-
429
- // Animate transition
430
- function animate() {
431
- transitionProgress.value = Math.sin(time) * 0.5 + 0.5;
432
- postProcessing.render();
433
- }
434
- ```