@react-three/tsl 10.0.0-canary.dd5379c → 10.0.0-canary.de8b03c

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/dist/index.cjs CHANGED
@@ -177,10 +177,6 @@ function extractTSLValue(value) {
177
177
  if (node.isConstNode) {
178
178
  return node.value;
179
179
  }
180
- if (node.isVarNode && node.node) {
181
- const inner = extractTSLValue(node.node);
182
- return inner === node.node ? value : inner;
183
- }
184
180
  if ("value" in node) {
185
181
  let extractedValue = node.value;
186
182
  if (typeof node.traverse === "function") {
@@ -763,20 +759,18 @@ function isSameThreeType(a, b) {
763
759
  const uniformOf = tsl.uniform;
764
760
  function useUniform(name, value) {
765
761
  const store = usePrimaryStore();
766
- const memoizedInput = useCompareMemoize(value === void 0 ? name : { [name]: normalizeValue(value) });
767
762
  const registered = useScopedResource({
768
763
  store,
769
764
  kind: "uniforms",
770
765
  scope: void 0,
771
766
  isLeaf: isUniformNode,
772
- input: memoizedInput,
767
+ input: name,
773
768
  create: () => value === void 0 ? {} : { [name]: value },
774
769
  prepare: createNamedUniform,
775
770
  reconcile: (existing2) => {
776
- if (value === void 0 || isUniformNode(value)) return;
777
- const next = normalizeValue(value);
778
- if (isTSLNode(next)) return;
779
- existing2.value = next;
771
+ if (value !== void 0 && !isTSLNode(value) && !isUniformNode(value)) {
772
+ existing2.value = typeof value === "string" ? new THREE.Color(value) : value;
773
+ }
780
774
  }
781
775
  });
782
776
  if (registered[name]) return registered[name];
@@ -786,9 +780,6 @@ function useUniform(name, value) {
786
780
  `[useUniform] Uniform "${name}" not found. Create it first with: useUniform('${name}', initialValue)`
787
781
  );
788
782
  }
789
- function normalizeValue(value) {
790
- return typeof value === "string" ? new THREE.Color(value) : vectorize(value);
791
- }
792
783
  function createNamedUniform(name, value) {
793
784
  let node;
794
785
  if (isUniformNode(value)) {
package/dist/index.d.cts CHANGED
@@ -149,16 +149,6 @@ declare global {
149
149
  /** Node type accepted by broad dynamic node-store readers. */
150
150
  type TSLNodeType = three_webgpu.Node | CallableTSLNode
151
151
 
152
- /**
153
- * What TSL's constant constructors return: `int(1)`, `vec2(0, 1)`, `color('red')` and friends
154
- * wrap a ConstNode in a VarNode. three's `uniform()` unwraps exactly this shape to
155
- * `UniformNode<TNodeType, TValue>`, and so do the mappings below.
156
- */
157
- type TSLConstNode<TNodeType, TValue> = three_webgpu.VarNode<
158
- TNodeType,
159
- three_webgpu.ConstNode<TNodeType, TValue>
160
- >
161
-
162
152
  /**
163
153
  * Derive Three's shader node type from an existing node or a supported raw input.
164
154
  * Existing InputNode generics take precedence over structural value normalization.
@@ -169,48 +159,44 @@ declare global {
169
159
  ? TNodeType
170
160
  : T extends three_webgpu.InputNode<infer TNodeType, infer _TValue>
171
161
  ? TNodeType
172
- : T extends TSLConstNode<infer TNodeType, infer _TValue>
173
- ? TNodeType
174
- : T extends number
175
- ? 'float'
176
- : T extends boolean
177
- ? 'bool'
178
- : T extends string | three_webgpu.Color | { r: number; g: number; b: number }
179
- ? 'color'
180
- : T extends three_webgpu.Vector4 | { x: number; y: number; z: number; w: number }
181
- ? 'vec4'
182
- : T extends three_webgpu.Vector3 | { x: number; y: number; z: number }
183
- ? 'vec3'
184
- : T extends three_webgpu.Vector2 | { x: number; y: number }
185
- ? 'vec2'
186
- : T extends three_webgpu.Matrix4
187
- ? 'mat4'
188
- : T extends three_webgpu.Matrix3
189
- ? 'mat3'
190
- : T extends three_webgpu.Matrix2
191
- ? 'mat2'
192
- : unknown
162
+ : T extends number
163
+ ? 'float'
164
+ : T extends boolean
165
+ ? 'bool'
166
+ : T extends string | three_webgpu.Color | { r: number; g: number; b: number }
167
+ ? 'color'
168
+ : T extends three_webgpu.Vector4 | { x: number; y: number; z: number; w: number }
169
+ ? 'vec4'
170
+ : T extends three_webgpu.Vector3 | { x: number; y: number; z: number }
171
+ ? 'vec3'
172
+ : T extends three_webgpu.Vector2 | { x: number; y: number }
173
+ ? 'vec2'
174
+ : T extends three_webgpu.Matrix4
175
+ ? 'mat4'
176
+ : T extends three_webgpu.Matrix3
177
+ ? 'mat3'
178
+ : T extends three_webgpu.Matrix2
179
+ ? 'mat2'
180
+ : unknown
193
181
 
194
182
  /** Derive the normalized JavaScript value stored by a uniform node. */
195
183
  type UniformNodeValue<T> = T extends three_webgpu.UniformNode<infer _TNodeType, infer TValue>
196
184
  ? TValue
197
185
  : T extends three_webgpu.InputNode<infer _TNodeType, infer TValue>
198
186
  ? TValue
199
- : T extends TSLConstNode<infer _TNodeType, infer TValue>
200
- ? TValue
201
- : T extends string | { r: number; g: number; b: number }
202
- ? three_webgpu.Color
203
- : T extends { x: number; y: number; z: number; w: number }
204
- ? three_webgpu.Vector4
205
- : T extends { x: number; y: number; z: number }
206
- ? three_webgpu.Vector3
207
- : T extends { x: number; y: number }
208
- ? three_webgpu.Vector2
209
- : T extends number
210
- ? number
211
- : T extends boolean
212
- ? boolean
213
- : T
187
+ : T extends string | { r: number; g: number; b: number }
188
+ ? three_webgpu.Color
189
+ : T extends { x: number; y: number; z: number; w: number }
190
+ ? three_webgpu.Vector4
191
+ : T extends { x: number; y: number; z: number }
192
+ ? three_webgpu.Vector3
193
+ : T extends { x: number; y: number }
194
+ ? three_webgpu.Vector2
195
+ : T extends number
196
+ ? number
197
+ : T extends boolean
198
+ ? boolean
199
+ : T
214
200
 
215
201
  /** Three's exact UniformNode with shader and value generics derived from an input. */
216
202
  type UniformNodeFor<T> = three_webgpu.UniformNode<UniformNodeType<T>, UniformNodeValue<T>>
package/dist/index.d.mts CHANGED
@@ -149,16 +149,6 @@ declare global {
149
149
  /** Node type accepted by broad dynamic node-store readers. */
150
150
  type TSLNodeType = three_webgpu.Node | CallableTSLNode
151
151
 
152
- /**
153
- * What TSL's constant constructors return: `int(1)`, `vec2(0, 1)`, `color('red')` and friends
154
- * wrap a ConstNode in a VarNode. three's `uniform()` unwraps exactly this shape to
155
- * `UniformNode<TNodeType, TValue>`, and so do the mappings below.
156
- */
157
- type TSLConstNode<TNodeType, TValue> = three_webgpu.VarNode<
158
- TNodeType,
159
- three_webgpu.ConstNode<TNodeType, TValue>
160
- >
161
-
162
152
  /**
163
153
  * Derive Three's shader node type from an existing node or a supported raw input.
164
154
  * Existing InputNode generics take precedence over structural value normalization.
@@ -169,48 +159,44 @@ declare global {
169
159
  ? TNodeType
170
160
  : T extends three_webgpu.InputNode<infer TNodeType, infer _TValue>
171
161
  ? TNodeType
172
- : T extends TSLConstNode<infer TNodeType, infer _TValue>
173
- ? TNodeType
174
- : T extends number
175
- ? 'float'
176
- : T extends boolean
177
- ? 'bool'
178
- : T extends string | three_webgpu.Color | { r: number; g: number; b: number }
179
- ? 'color'
180
- : T extends three_webgpu.Vector4 | { x: number; y: number; z: number; w: number }
181
- ? 'vec4'
182
- : T extends three_webgpu.Vector3 | { x: number; y: number; z: number }
183
- ? 'vec3'
184
- : T extends three_webgpu.Vector2 | { x: number; y: number }
185
- ? 'vec2'
186
- : T extends three_webgpu.Matrix4
187
- ? 'mat4'
188
- : T extends three_webgpu.Matrix3
189
- ? 'mat3'
190
- : T extends three_webgpu.Matrix2
191
- ? 'mat2'
192
- : unknown
162
+ : T extends number
163
+ ? 'float'
164
+ : T extends boolean
165
+ ? 'bool'
166
+ : T extends string | three_webgpu.Color | { r: number; g: number; b: number }
167
+ ? 'color'
168
+ : T extends three_webgpu.Vector4 | { x: number; y: number; z: number; w: number }
169
+ ? 'vec4'
170
+ : T extends three_webgpu.Vector3 | { x: number; y: number; z: number }
171
+ ? 'vec3'
172
+ : T extends three_webgpu.Vector2 | { x: number; y: number }
173
+ ? 'vec2'
174
+ : T extends three_webgpu.Matrix4
175
+ ? 'mat4'
176
+ : T extends three_webgpu.Matrix3
177
+ ? 'mat3'
178
+ : T extends three_webgpu.Matrix2
179
+ ? 'mat2'
180
+ : unknown
193
181
 
194
182
  /** Derive the normalized JavaScript value stored by a uniform node. */
195
183
  type UniformNodeValue<T> = T extends three_webgpu.UniformNode<infer _TNodeType, infer TValue>
196
184
  ? TValue
197
185
  : T extends three_webgpu.InputNode<infer _TNodeType, infer TValue>
198
186
  ? TValue
199
- : T extends TSLConstNode<infer _TNodeType, infer TValue>
200
- ? TValue
201
- : T extends string | { r: number; g: number; b: number }
202
- ? three_webgpu.Color
203
- : T extends { x: number; y: number; z: number; w: number }
204
- ? three_webgpu.Vector4
205
- : T extends { x: number; y: number; z: number }
206
- ? three_webgpu.Vector3
207
- : T extends { x: number; y: number }
208
- ? three_webgpu.Vector2
209
- : T extends number
210
- ? number
211
- : T extends boolean
212
- ? boolean
213
- : T
187
+ : T extends string | { r: number; g: number; b: number }
188
+ ? three_webgpu.Color
189
+ : T extends { x: number; y: number; z: number; w: number }
190
+ ? three_webgpu.Vector4
191
+ : T extends { x: number; y: number; z: number }
192
+ ? three_webgpu.Vector3
193
+ : T extends { x: number; y: number }
194
+ ? three_webgpu.Vector2
195
+ : T extends number
196
+ ? number
197
+ : T extends boolean
198
+ ? boolean
199
+ : T
214
200
 
215
201
  /** Three's exact UniformNode with shader and value generics derived from an input. */
216
202
  type UniformNodeFor<T> = three_webgpu.UniformNode<UniformNodeType<T>, UniformNodeValue<T>>
package/dist/index.d.ts CHANGED
@@ -149,16 +149,6 @@ declare global {
149
149
  /** Node type accepted by broad dynamic node-store readers. */
150
150
  type TSLNodeType = three_webgpu.Node | CallableTSLNode
151
151
 
152
- /**
153
- * What TSL's constant constructors return: `int(1)`, `vec2(0, 1)`, `color('red')` and friends
154
- * wrap a ConstNode in a VarNode. three's `uniform()` unwraps exactly this shape to
155
- * `UniformNode<TNodeType, TValue>`, and so do the mappings below.
156
- */
157
- type TSLConstNode<TNodeType, TValue> = three_webgpu.VarNode<
158
- TNodeType,
159
- three_webgpu.ConstNode<TNodeType, TValue>
160
- >
161
-
162
152
  /**
163
153
  * Derive Three's shader node type from an existing node or a supported raw input.
164
154
  * Existing InputNode generics take precedence over structural value normalization.
@@ -169,48 +159,44 @@ declare global {
169
159
  ? TNodeType
170
160
  : T extends three_webgpu.InputNode<infer TNodeType, infer _TValue>
171
161
  ? TNodeType
172
- : T extends TSLConstNode<infer TNodeType, infer _TValue>
173
- ? TNodeType
174
- : T extends number
175
- ? 'float'
176
- : T extends boolean
177
- ? 'bool'
178
- : T extends string | three_webgpu.Color | { r: number; g: number; b: number }
179
- ? 'color'
180
- : T extends three_webgpu.Vector4 | { x: number; y: number; z: number; w: number }
181
- ? 'vec4'
182
- : T extends three_webgpu.Vector3 | { x: number; y: number; z: number }
183
- ? 'vec3'
184
- : T extends three_webgpu.Vector2 | { x: number; y: number }
185
- ? 'vec2'
186
- : T extends three_webgpu.Matrix4
187
- ? 'mat4'
188
- : T extends three_webgpu.Matrix3
189
- ? 'mat3'
190
- : T extends three_webgpu.Matrix2
191
- ? 'mat2'
192
- : unknown
162
+ : T extends number
163
+ ? 'float'
164
+ : T extends boolean
165
+ ? 'bool'
166
+ : T extends string | three_webgpu.Color | { r: number; g: number; b: number }
167
+ ? 'color'
168
+ : T extends three_webgpu.Vector4 | { x: number; y: number; z: number; w: number }
169
+ ? 'vec4'
170
+ : T extends three_webgpu.Vector3 | { x: number; y: number; z: number }
171
+ ? 'vec3'
172
+ : T extends three_webgpu.Vector2 | { x: number; y: number }
173
+ ? 'vec2'
174
+ : T extends three_webgpu.Matrix4
175
+ ? 'mat4'
176
+ : T extends three_webgpu.Matrix3
177
+ ? 'mat3'
178
+ : T extends three_webgpu.Matrix2
179
+ ? 'mat2'
180
+ : unknown
193
181
 
194
182
  /** Derive the normalized JavaScript value stored by a uniform node. */
195
183
  type UniformNodeValue<T> = T extends three_webgpu.UniformNode<infer _TNodeType, infer TValue>
196
184
  ? TValue
197
185
  : T extends three_webgpu.InputNode<infer _TNodeType, infer TValue>
198
186
  ? TValue
199
- : T extends TSLConstNode<infer _TNodeType, infer TValue>
200
- ? TValue
201
- : T extends string | { r: number; g: number; b: number }
202
- ? three_webgpu.Color
203
- : T extends { x: number; y: number; z: number; w: number }
204
- ? three_webgpu.Vector4
205
- : T extends { x: number; y: number; z: number }
206
- ? three_webgpu.Vector3
207
- : T extends { x: number; y: number }
208
- ? three_webgpu.Vector2
209
- : T extends number
210
- ? number
211
- : T extends boolean
212
- ? boolean
213
- : T
187
+ : T extends string | { r: number; g: number; b: number }
188
+ ? three_webgpu.Color
189
+ : T extends { x: number; y: number; z: number; w: number }
190
+ ? three_webgpu.Vector4
191
+ : T extends { x: number; y: number; z: number }
192
+ ? three_webgpu.Vector3
193
+ : T extends { x: number; y: number }
194
+ ? three_webgpu.Vector2
195
+ : T extends number
196
+ ? number
197
+ : T extends boolean
198
+ ? boolean
199
+ : T
214
200
 
215
201
  /** Three's exact UniformNode with shader and value generics derived from an input. */
216
202
  type UniformNodeFor<T> = three_webgpu.UniformNode<UniformNodeType<T>, UniformNodeValue<T>>
package/dist/index.mjs CHANGED
@@ -162,10 +162,6 @@ function extractTSLValue(value) {
162
162
  if (node.isConstNode) {
163
163
  return node.value;
164
164
  }
165
- if (node.isVarNode && node.node) {
166
- const inner = extractTSLValue(node.node);
167
- return inner === node.node ? value : inner;
168
- }
169
165
  if ("value" in node) {
170
166
  let extractedValue = node.value;
171
167
  if (typeof node.traverse === "function") {
@@ -748,20 +744,18 @@ function isSameThreeType(a, b) {
748
744
  const uniformOf = uniform;
749
745
  function useUniform(name, value) {
750
746
  const store = usePrimaryStore();
751
- const memoizedInput = useCompareMemoize(value === void 0 ? name : { [name]: normalizeValue(value) });
752
747
  const registered = useScopedResource({
753
748
  store,
754
749
  kind: "uniforms",
755
750
  scope: void 0,
756
751
  isLeaf: isUniformNode,
757
- input: memoizedInput,
752
+ input: name,
758
753
  create: () => value === void 0 ? {} : { [name]: value },
759
754
  prepare: createNamedUniform,
760
755
  reconcile: (existing2) => {
761
- if (value === void 0 || isUniformNode(value)) return;
762
- const next = normalizeValue(value);
763
- if (isTSLNode(next)) return;
764
- existing2.value = next;
756
+ if (value !== void 0 && !isTSLNode(value) && !isUniformNode(value)) {
757
+ existing2.value = typeof value === "string" ? new Color(value) : value;
758
+ }
765
759
  }
766
760
  });
767
761
  if (registered[name]) return registered[name];
@@ -771,9 +765,6 @@ function useUniform(name, value) {
771
765
  `[useUniform] Uniform "${name}" not found. Create it first with: useUniform('${name}', initialValue)`
772
766
  );
773
767
  }
774
- function normalizeValue(value) {
775
- return typeof value === "string" ? new Color(value) : vectorize(value);
776
- }
777
768
  function createNamedUniform(name, value) {
778
769
  let node;
779
770
  if (isUniformNode(value)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/tsl",
3
- "version": "10.0.0-canary.dd5379c",
3
+ "version": "10.0.0-canary.de8b03c",
4
4
  "description": "TSL resource hooks for react-three-fiber: uniforms, nodes, buffers, GPU storage and render pipelines on WebGPU",
5
5
  "keywords": [
6
6
  "react",
@@ -56,7 +56,7 @@
56
56
  "@types/three": "^0.185.0",
57
57
  "@webgpu/types": "^0.1.64",
58
58
  "three": ">=0.185.0",
59
- "@react-three/fiber": "10.0.0-canary.dd5379c"
59
+ "@react-three/fiber": "10.0.0-canary.de8b03c"
60
60
  },
61
61
  "scripts": {
62
62
  "build": "unbuild",