@poolzin/pool-bot 2026.1.37 → 2026.1.39
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.
- package/CHANGELOG.md +9 -98
- package/dist/agents/tools/memory-tool.js +1 -2
- package/dist/agents/workspace.js +1 -5
- package/dist/build-info.json +3 -3
- package/dist/channels/plugins/agent-tools/whatsapp-login.js +1 -17
- package/dist/commands/doctor-state-integrity.js +2 -14
- package/dist/config/types.js +0 -1
- package/dist/config/zod-schema.js +0 -6
- package/dist/discord/monitor/message-handler.process.js +6 -4
- package/dist/gateway/client.js +0 -14
- package/dist/gateway/server.impl.js +0 -4
- package/dist/memory/index.js +0 -5
- package/dist/memory/manager.js +2 -25
- package/dist/slack/monitor/message-handler/prepare.js +10 -4
- package/dist/slack/monitor/slash.js +10 -4
- package/extensions/memory-core/package.json +0 -3
- package/package.json +3 -2
- package/skills/webgpu-threejs-tsl/REFERENCE.md +0 -283
- package/skills/webgpu-threejs-tsl/SKILL.md +0 -91
- package/skills/webgpu-threejs-tsl/docs/compute-shaders.md +0 -404
- package/skills/webgpu-threejs-tsl/docs/core-concepts.md +0 -453
- package/skills/webgpu-threejs-tsl/docs/materials.md +0 -353
- package/skills/webgpu-threejs-tsl/docs/post-processing.md +0 -434
- package/skills/webgpu-threejs-tsl/docs/wgsl-integration.md +0 -324
- package/skills/webgpu-threejs-tsl/examples/basic-setup.js +0 -87
- package/skills/webgpu-threejs-tsl/examples/custom-material.js +0 -170
- package/skills/webgpu-threejs-tsl/examples/earth-shader.js +0 -292
- package/skills/webgpu-threejs-tsl/examples/particle-system.js +0 -259
- package/skills/webgpu-threejs-tsl/examples/post-processing.js +0 -199
- package/skills/webgpu-threejs-tsl/templates/compute-shader.js +0 -305
- 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
|
-
```
|