Skip to content

Commit 76ff395

Browse files
authored
TSL: Remove scriptable node (#32925)
1 parent d6dbd5d commit 76ff395

File tree

6 files changed

+1
-1139
lines changed

6 files changed

+1
-1139
lines changed

examples/webgpu_materials.html

Lines changed: 1 addition & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@
3434
<script type="module">
3535

3636
import * as THREE from 'three/webgpu';
37-
import * as TSL from 'three/tsl';
3837

39-
import { Fn, wgslFn, positionLocal, scriptable, positionWorld, normalLocal, normalWorld, normalView, color, texture, uv, float, vec2, vec3, vec4, oscSine, triplanarTexture, screenUV, js, string, Loop, cameraProjectionMatrix, ScriptableNodeResources } from 'three/tsl';
38+
import { Fn, wgslFn, positionLocal, positionWorld, normalLocal, normalWorld, normalView, color, texture, uv, float, vec2, vec3, vec4, oscSine, triplanarTexture, screenUV, Loop, cameraProjectionMatrix } from 'three/tsl';
4039

4140
import { TeapotGeometry } from 'three/addons/geometries/TeapotGeometry.js';
4241
import WebGPU from 'three/addons/capabilities/WebGPU.js';
@@ -254,111 +253,6 @@
254253

255254
} );
256255

257-
// Scriptable
258-
259-
ScriptableNodeResources.set( 'TSL', TSL );
260-
261-
const asyncNode = scriptable( js( `
262-
263-
layout = {
264-
outputType: 'node'
265-
};
266-
267-
const { float } = TSL;
268-
269-
function init() {
270-
271-
setTimeout( () => {
272-
273-
local.set( 'result', float( 1.0 ) );
274-
275-
refresh(); // refresh the node
276-
277-
}, 1000 );
278-
279-
return float( 0.0 );
280-
281-
}
282-
283-
function main() {
284-
285-
const result = local.get( 'result', init );
286-
287-
//console.log( 'result', result );
288-
289-
return result;
290-
291-
}
292-
293-
` ) );
294-
295-
const scriptableNode = scriptable( js( `
296-
297-
layout = {
298-
outputType: 'node',
299-
elements: [
300-
{ name: 'source', inputType: 'node' },
301-
{ name: 'contrast', inputType: 'node' },
302-
{ name: 'vector3', inputType: 'Vector3' },
303-
{ name: 'message', inputType: 'string' },
304-
{ name: 'binary', inputType: 'ArrayBuffer' },
305-
{ name: 'object3d', inputType: 'Object3D' },
306-
{ name: 'execFrom', inputType: 'string' }
307-
]
308-
};
309-
310-
const { saturation, float, oscSine, mul } = TSL;
311-
312-
function helloWorld() {
313-
314-
console.log( "Hello World!" );
315-
316-
}
317-
318-
function main() {
319-
320-
const source = parameters.get( 'source' ) || float();
321-
const contrast = parameters.get( 'contrast' ) || float();
322-
323-
const material = local.get( 'material' );
324-
325-
//console.log( 'vector3', parameters.get( 'vector3' ) );
326-
327-
if ( parameters.get( 'execFrom' ) === 'serialized' ) {
328-
329-
//console.log( 'message', parameters.get( 'message' ).value );
330-
//console.log( 'binary', parameters.get( 'binary' ) );
331-
//console.log( 'object3d', parameters.get( 'object3d' ) ); // unserializable yet
332-
333-
//console.log( global.get( 'renderer' ) );
334-
335-
}
336-
337-
if ( material ) material.needsUpdate = true;
338-
339-
return mul( saturation( source, oscSine() ), contrast );
340-
341-
}
342-
343-
output = { helloWorld };
344-
345-
` ) );
346-
347-
scriptableNode.setParameter( 'source', texture( uvTexture ).xyz );
348-
scriptableNode.setParameter( 'contrast', asyncNode );
349-
scriptableNode.setParameter( 'vector3', vec3( new THREE.Vector3( 1, 1, 1 ) ) );
350-
scriptableNode.setParameter( 'message', string( 'Hello World!' ) );
351-
scriptableNode.setParameter( 'binary', new ArrayBuffer( 4 ) );
352-
scriptableNode.setParameter( 'object3d', new THREE.Group() );
353-
354-
scriptableNode.call( 'helloWorld' );
355-
356-
material = new THREE.MeshBasicNodeMaterial();
357-
material.colorNode = scriptableNode;
358-
materials.push( material );
359-
360-
scriptableNode.setLocal( 'material', material );
361-
362256
//
363257
// Geometry
364258
//
@@ -371,8 +265,6 @@
371265

372266
}
373267

374-
const serializeMesh = scene.children[ scene.children.length - 1 ];
375-
376268
//
377269

378270
renderer = new THREE.WebGPURenderer( { antialias: true } );
@@ -386,10 +278,6 @@
386278

387279
window.addEventListener( 'resize', onWindowResize );
388280

389-
//
390-
391-
setTimeout( () => testSerialization( serializeMesh ), 1000 );
392-
393281
}
394282

395283
function addMesh( geometry, material ) {
@@ -409,47 +297,6 @@
409297

410298
}
411299

412-
function moduleToLib( module ) {
413-
414-
const lib = {};
415-
416-
for ( const nodeElement of Object.values( module ) ) {
417-
418-
if ( typeof nodeElement === 'function' && nodeElement.type !== undefined ) {
419-
420-
lib[ nodeElement.type ] = nodeElement;
421-
422-
}
423-
424-
}
425-
426-
return lib;
427-
428-
}
429-
430-
function testSerialization( mesh ) {
431-
432-
const json = mesh.toJSON();
433-
const loader = new THREE.NodeObjectLoader().setNodes( moduleToLib( THREE ) ).setNodeMaterials( moduleToLib( THREE ) );
434-
const serializedMesh = loader.parse( json, () => {
435-
436-
serializedMesh.position.x = ( objects.length % 4 ) * 200 - 400;
437-
serializedMesh.position.z = Math.floor( objects.length / 4 ) * 200 - 200;
438-
439-
const scriptableNode = serializedMesh.material.colorNode;
440-
441-
// it's because local.get( 'material' ) is used in the example ( local/global is unserializable )
442-
scriptableNode.setLocal( 'material', serializedMesh.material );
443-
scriptableNode.setParameter( 'execFrom', 'serialized' );
444-
445-
objects.push( serializedMesh );
446-
447-
scene.add( serializedMesh );
448-
449-
} );
450-
451-
}
452-
453300
function onWindowResize() {
454301

455302
camera.aspect = window.innerWidth / window.innerHeight;

src/Three.TSL.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,8 +484,6 @@ export const screenCoordinate = TSL.screenCoordinate;
484484
export const screenDPR = TSL.screenDPR;
485485
export const screenSize = TSL.screenSize;
486486
export const screenUV = TSL.screenUV;
487-
export const scriptable = TSL.scriptable;
488-
export const scriptableValue = TSL.scriptableValue;
489487
export const select = TSL.select;
490488
export const setCurrentStack = TSL.setCurrentStack;
491489
export const setName = TSL.setName;

src/nodes/Nodes.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ export { default as CodeNode } from './code/CodeNode.js';
7474
export { default as ExpressionNode } from './code/ExpressionNode.js';
7575
export { default as FunctionCallNode } from './code/FunctionCallNode.js';
7676
export { default as FunctionNode } from './code/FunctionNode.js';
77-
export { default as ScriptableNode } from './code/ScriptableNode.js';
78-
export { default as ScriptableValueNode } from './code/ScriptableValueNode.js';
7977

8078
// display
8179
export { default as BumpMapNode } from './display/BumpMapNode.js';

src/nodes/TSL.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,6 @@ export * from './code/ExpressionNode.js';
119119
export * from './code/CodeNode.js';
120120
export * from './code/FunctionCallNode.js';
121121
export * from './code/FunctionNode.js';
122-
export * from './code/ScriptableNode.js';
123-
export * from './code/ScriptableValueNode.js';
124122

125123
// fog
126124
export * from './fog/Fog.js';

0 commit comments

Comments
 (0)