@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,353 +0,0 @@
1
- # TSL Node Materials
2
-
3
- ## Available Material Types
4
-
5
- | Material | Description |
6
- |----------|-------------|
7
- | `MeshBasicNodeMaterial` | Unlit, no lighting calculations |
8
- | `MeshStandardNodeMaterial` | PBR material with metalness/roughness |
9
- | `MeshPhysicalNodeMaterial` | Advanced PBR with clearcoat, transmission, etc. |
10
- | `MeshPhongNodeMaterial` | Classic Phong shading |
11
- | `MeshToonNodeMaterial` | Cel/toon shading |
12
- | `MeshLambertNodeMaterial` | Diffuse-only lighting |
13
- | `MeshNormalNodeMaterial` | Visualize normals |
14
- | `MeshMatcapNodeMaterial` | Matcap texture shading |
15
- | `PointsNodeMaterial` | For point clouds |
16
- | `LineBasicNodeMaterial` | For lines |
17
- | `LineDashedNodeMaterial` | For dashed lines |
18
- | `SpriteNodeMaterial` | For sprites/billboards |
19
-
20
- ## Creating Node Materials
21
-
22
- ```javascript
23
- import * as THREE from 'three/webgpu';
24
-
25
- // Standard PBR material
26
- const material = new THREE.MeshStandardNodeMaterial();
27
-
28
- // Physical material with advanced features
29
- const physicalMat = new THREE.MeshPhysicalNodeMaterial();
30
-
31
- // Unlit material
32
- const basicMat = new THREE.MeshBasicNodeMaterial();
33
- ```
34
-
35
- ## Material Properties
36
-
37
- ### Color and Opacity
38
-
39
- ```javascript
40
- import { texture, color, float } from 'three/tsl';
41
-
42
- // Color from texture
43
- material.colorNode = texture(diffuseMap);
44
-
45
- // Solid color
46
- material.colorNode = color(0xff0000);
47
-
48
- // Computed color
49
- material.colorNode = positionLocal.normalize();
50
-
51
- // Opacity (requires material.transparent = true)
52
- material.opacityNode = float(0.8);
53
- material.transparent = true;
54
-
55
- // Alpha test threshold
56
- material.alphaTestNode = float(0.5);
57
- ```
58
-
59
- ### PBR Properties (MeshStandardNodeMaterial)
60
-
61
- ```javascript
62
- import { texture, float, color } from 'three/tsl';
63
-
64
- // Metalness (0 = dielectric, 1 = metal)
65
- material.metalnessNode = texture(metalMap).r;
66
- material.metalnessNode = float(0.0);
67
-
68
- // Roughness (0 = smooth/mirror, 1 = rough)
69
- material.roughnessNode = texture(roughnessMap).r;
70
- material.roughnessNode = float(0.5);
71
-
72
- // Emissive (self-illumination)
73
- material.emissiveNode = color(0xff0000).mul(2.0);
74
- material.emissiveNode = texture(emissiveMap);
75
- ```
76
-
77
- ### Normal Mapping
78
-
79
- ```javascript
80
- import { texture, normalMap, bumpMap } from 'three/tsl';
81
-
82
- // Normal map
83
- material.normalNode = normalMap(texture(normalMapTexture));
84
-
85
- // Normal map with strength
86
- material.normalNode = normalMap(texture(normalMapTexture), float(0.5));
87
-
88
- // Bump map (height to normal)
89
- material.normalNode = bumpMap(texture(heightMap), 0.05);
90
- ```
91
-
92
- ### Physical Properties (MeshPhysicalNodeMaterial)
93
-
94
- ```javascript
95
- const material = new THREE.MeshPhysicalNodeMaterial();
96
-
97
- // Clearcoat (car paint effect)
98
- material.clearcoatNode = float(1.0);
99
- material.clearcoatRoughnessNode = float(0.1);
100
- material.clearcoatNormalNode = normalMap(texture(clearcoatNormalMap));
101
-
102
- // Transmission (glass/translucency)
103
- material.transmissionNode = float(0.9);
104
- material.thicknessNode = float(0.5);
105
- material.attenuationDistanceNode = float(1.0);
106
- material.attenuationColorNode = color(0xffffff);
107
-
108
- // Iridescence (soap bubble effect)
109
- material.iridescenceNode = float(1.0);
110
- material.iridescenceIORNode = float(1.3);
111
- material.iridescenceThicknessNode = float(400);
112
-
113
- // Sheen (fabric effect)
114
- material.sheenNode = float(1.0);
115
- material.sheenRoughnessNode = float(0.5);
116
- material.sheenColorNode = color(0xffffff);
117
-
118
- // Anisotropy (brushed metal)
119
- material.anisotropyNode = float(1.0);
120
- material.anisotropyRotationNode = float(0);
121
-
122
- // Specular
123
- material.specularIntensityNode = float(1.0);
124
- material.specularColorNode = color(0xffffff);
125
-
126
- // Index of Refraction
127
- material.iorNode = float(1.5);
128
-
129
- // Dispersion (rainbow effect in glass)
130
- material.dispersionNode = float(0.0);
131
- ```
132
-
133
- ### Environment and Lighting
134
-
135
- ```javascript
136
- import { cubeTexture, envMap } from 'three/tsl';
137
-
138
- // Environment map reflection
139
- material.envMapNode = cubeTexture(envCubeMap);
140
-
141
- // Custom lights
142
- material.lightsNode = lights();
143
- ```
144
-
145
- ## Vertex Manipulation
146
-
147
- ### Position Displacement
148
-
149
- ```javascript
150
- import { positionLocal, normalLocal, texture } from 'three/tsl';
151
-
152
- // Displace vertices along normals
153
- const displacement = texture(heightMap).r.mul(0.1);
154
- material.positionNode = positionLocal.add(normalLocal.mul(displacement));
155
-
156
- // Wave displacement
157
- const wave = positionLocal.x.add(time).sin().mul(0.1);
158
- material.positionNode = positionLocal.add(vec3(0, wave, 0));
159
- ```
160
-
161
- ### Custom Vertex Shader
162
-
163
- ```javascript
164
- // Complete vertex position override
165
- material.vertexNode = customVertexPosition;
166
- ```
167
-
168
- ## Fragment Override
169
-
170
- ```javascript
171
- // Complete fragment output override
172
- material.fragmentNode = vec4(finalColor, 1.0);
173
-
174
- // Output node (respects lighting)
175
- material.outputNode = outputStruct;
176
- ```
177
-
178
- ## Geometry Attributes
179
-
180
- ### Position Nodes
181
-
182
- ```javascript
183
- import {
184
- positionGeometry, // Original mesh position
185
- positionLocal, // Position in model space
186
- positionWorld, // Position in world space
187
- positionView // Position in camera space
188
- } from 'three/tsl';
189
- ```
190
-
191
- ### Normal Nodes
192
-
193
- ```javascript
194
- import {
195
- normalGeometry, // Original mesh normal
196
- normalLocal, // Normal in model space
197
- normalWorld, // Normal in world space (use for lighting)
198
- normalView // Normal in camera space
199
- } from 'three/tsl';
200
- ```
201
-
202
- ### Tangent/Bitangent
203
-
204
- ```javascript
205
- import {
206
- tangentLocal, tangentWorld, tangentView,
207
- bitangentLocal, bitangentWorld, bitangentView
208
- } from 'three/tsl';
209
- ```
210
-
211
- ### UV Coordinates
212
-
213
- ```javascript
214
- import { uv } from 'three/tsl';
215
-
216
- uv() // Primary UV set (UV0)
217
- uv(1) // Secondary UV set (UV1)
218
- uv(2) // Tertiary UV set (UV2)
219
- ```
220
-
221
- ### Other Attributes
222
-
223
- ```javascript
224
- import { vertexColor, instanceIndex, vertexIndex } from 'three/tsl';
225
-
226
- vertexColor() // Vertex colors (if present)
227
- instanceIndex // Index for instanced meshes
228
- vertexIndex // Current vertex index
229
- ```
230
-
231
- ## Camera Nodes
232
-
233
- ```javascript
234
- import {
235
- cameraPosition, // Camera world position
236
- cameraNear, // Near plane distance
237
- cameraFar, // Far plane distance
238
- cameraViewMatrix, // View matrix
239
- cameraProjectionMatrix, // Projection matrix
240
- cameraWorldMatrix // Camera world matrix
241
- } from 'three/tsl';
242
- ```
243
-
244
- ## Screen Space Nodes
245
-
246
- ```javascript
247
- import {
248
- screenUV, // Screen UV (0-1)
249
- screenCoordinate, // Pixel coordinates
250
- screenSize, // Screen dimensions
251
- viewportUV, // Viewport UV
252
- viewport, // Viewport dimensions
253
- depth // Fragment depth
254
- } from 'three/tsl';
255
- ```
256
-
257
- ## Examples
258
-
259
- ### Animated Color Material
260
-
261
- ```javascript
262
- import * as THREE from 'three/webgpu';
263
- import { color, time, oscSine, mix } from 'three/tsl';
264
-
265
- const material = new THREE.MeshStandardNodeMaterial();
266
-
267
- const colorA = color(0xff0000);
268
- const colorB = color(0x0000ff);
269
- const t = oscSine(time.mul(0.5));
270
-
271
- material.colorNode = mix(colorA, colorB, t);
272
- material.roughnessNode = float(0.5);
273
- material.metalnessNode = float(0.0);
274
- ```
275
-
276
- ### Triplanar Mapping Material
277
-
278
- ```javascript
279
- import * as THREE from 'three/webgpu';
280
- import { texture, triplanarTexture, float } from 'three/tsl';
281
-
282
- const material = new THREE.MeshStandardNodeMaterial();
283
-
284
- // Apply texture from all three axes
285
- material.colorNode = triplanarTexture(
286
- texture(diffuseMap),
287
- null, // Y-axis texture (optional)
288
- null, // Z-axis texture (optional)
289
- float(0.1) // Blend sharpness
290
- );
291
- ```
292
-
293
- ### Glass Material
294
-
295
- ```javascript
296
- import * as THREE from 'three/webgpu';
297
- import { float, color } from 'three/tsl';
298
-
299
- const material = new THREE.MeshPhysicalNodeMaterial();
300
-
301
- material.colorNode = color(0xffffff);
302
- material.transmissionNode = float(0.95);
303
- material.roughnessNode = float(0.0);
304
- material.metalnessNode = float(0.0);
305
- material.iorNode = float(1.5);
306
- material.thicknessNode = float(0.5);
307
- ```
308
-
309
- ### Fresnel Rim Material
310
-
311
- ```javascript
312
- import * as THREE from 'three/webgpu';
313
- import {
314
- color, float, normalWorld, positionWorld,
315
- cameraPosition, Fn
316
- } from 'three/tsl';
317
-
318
- const fresnel = Fn(() => {
319
- const viewDir = cameraPosition.sub(positionWorld).normalize();
320
- const nDotV = normalWorld.dot(viewDir).saturate();
321
- return float(1.0).sub(nDotV).pow(3.0);
322
- });
323
-
324
- const material = new THREE.MeshStandardNodeMaterial();
325
- material.colorNode = color(0x222222);
326
- material.emissiveNode = color(0x00ffff).mul(fresnel());
327
- ```
328
-
329
- ### Dissolve Effect Material
330
-
331
- ```javascript
332
- import * as THREE from 'three/webgpu';
333
- import {
334
- color, float, hash, positionLocal, uniform,
335
- If, Discard, smoothstep
336
- } from 'three/tsl';
337
-
338
- const threshold = uniform(0.5);
339
-
340
- const material = new THREE.MeshStandardNodeMaterial();
341
-
342
- const noise = hash(positionLocal.mul(50));
343
-
344
- // Discard fragments below threshold
345
- If(noise.lessThan(threshold), () => {
346
- Discard();
347
- });
348
-
349
- // Edge glow
350
- const edge = smoothstep(threshold, threshold.add(0.1), noise);
351
- material.colorNode = color(0x333333);
352
- material.emissiveNode = color(0xff5500).mul(float(1.0).sub(edge));
353
- ```