tsl-textures 1.6.0 → 1.8.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tsl-textures",
3
- "version": "1.6.0",
3
+ "version": "1.8.0",
4
4
  "description": "A collection of Three.js Shading Language (TSL) textures ",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -0,0 +1,58 @@
1
+ 
2
+ // TSL-Textures: Rough clay
3
+
4
+
5
+
6
+ import { cross, exp, Fn, mx_worley_noise_float, normalLocal, positionLocal, sub, tangentLocal, transformNormalToView } from 'three/tsl';
7
+ import { noise } from 'tsl-textures/tsl-utils.js';
8
+
9
+
10
+
11
+ var surfacePos = Fn( ([ pos, normal, bump, curvature ]) => {
12
+
13
+ var k1 = mx_worley_noise_float( pos.add( noise( pos ).mul( curvature ) ) ).add( 0.8 ).pow( 5 ).toVar();
14
+ k1.addAssign( k1.pow( 0.5 ) );
15
+ //k1.addAssign( noise(pos.mul(noiseScale.add(8))).add(1).pow(2).mul(noiseBump) );
16
+ return pos.add( normal.mul( k1 ).mul( bump ) );
17
+
18
+ } );
19
+
20
+ var roughClay = Fn( ( params ) => {
21
+
22
+ var eps = 0.001;
23
+
24
+ var bump = params.bump.div( 50 ).toVar();
25
+
26
+ var position = positionLocal.mul( exp( params.scale.div( 2 ) ) ).add( params.seed.sin().mul( 10 ) ).toVar( ),
27
+ normal = normalLocal.normalize().toVar(),
28
+ tangent = tangentLocal.normalize().mul( eps ).toVar(),
29
+ bitangent = cross( normal, tangent ).normalize().mul( eps ).toVar();
30
+
31
+ var pos = surfacePos( position, normal, bump, params.curvature );
32
+ var posU = surfacePos( position.add( tangent ), normal, bump, params.curvature );
33
+ var posV = surfacePos( position.add( bitangent ), normal, bump, params.curvature );
34
+
35
+ var dU = sub( posU, pos ),
36
+ dV = sub( posV, pos );
37
+
38
+ return transformNormalToView( cross( dU, dV ).normalize() );
39
+
40
+
41
+ } );
42
+
43
+
44
+
45
+ roughClay.defaults = {
46
+ $name: 'Rough clay',
47
+ $normalNode: true,
48
+
49
+ scale: 2,
50
+ bump: 0.5,
51
+ curvature: 0.2,
52
+
53
+ seed: 0,
54
+ };
55
+
56
+
57
+
58
+ export { roughClay };
@@ -0,0 +1,96 @@
1
+ 
2
+ // TSL-Textures: Runny eggs
3
+
4
+
5
+
6
+ import { Color } from 'three';
7
+ import { cross, exp, Fn, mix, mx_worley_noise_float, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView } from 'three/tsl';
8
+
9
+
10
+
11
+ var runnyEggs = Fn( ( params ) => {
12
+
13
+ var pos = positionGeometry.mul( exp( params.scale.div( 1 ) ) ).add( params.seed.sin().mul( 10 ) ).toVar( );
14
+
15
+ var sizeYolk = params.sizeYolk.oneMinus();
16
+ var sizeWhite = params.sizeWhite.oneMinus();
17
+
18
+ var n = mx_worley_noise_float( pos ).toVar();
19
+ var whites = n.add( sizeWhite ).pow( 8 ).oneMinus().clamp( -0.5, 1 );
20
+ var yolks = n.add( sizeYolk ).pow( 18 ).oneMinus().clamp( 0, 1 ).pow( 0.4 ).clamp( 0, 1 );
21
+
22
+ return mix( params.colorBackground, mix( params.colorWhite, params.colorYolk, yolks ), whites );
23
+
24
+ } );
25
+
26
+
27
+ var surfacePos = Fn( ([ pos, normal, bump, sizeYolk, sizeWhite ]) => {
28
+
29
+ var n = mx_worley_noise_float( pos ).toVar();
30
+ var whites = n.add( sizeWhite ).pow( 8 ).oneMinus();
31
+ var yolks = n.add( sizeYolk ).pow( 18 ).oneMinus().clamp( 0, 1 );
32
+
33
+ var k = mix( 0, mix( 0, 1, yolks ), whites );
34
+
35
+ return pos.add( normal.mul( k ).mul( bump ) );
36
+
37
+ } );
38
+
39
+
40
+ runnyEggs.normal = Fn( ( params ) => {
41
+
42
+ var eps = 0.001;
43
+ var bump = 0.05;
44
+
45
+ var position = positionGeometry.mul( exp( params.scale.div( 1 ) ) ).add( params.seed.sin().mul( 10 ) ).toVar( ),
46
+ normal = normalLocal.normalize().toVar(),
47
+ tangent = tangentLocal.normalize().mul( eps ).toVar(),
48
+ bitangent = cross( normal, tangent ).normalize().mul( eps ).toVar();
49
+
50
+ var sizeYolk = params.sizeYolk.oneMinus();
51
+ var sizeWhite = params.sizeWhite.oneMinus();
52
+
53
+ var pos = surfacePos( position, normal, bump, sizeYolk, sizeWhite );
54
+ var posU = surfacePos( position.add( tangent ), normal, bump, sizeYolk, sizeWhite );
55
+ var posV = surfacePos( position.add( bitangent ), normal, bump, sizeYolk, sizeWhite );
56
+
57
+ var dU = sub( posU, pos ),
58
+ dV = sub( posV, pos );
59
+
60
+ return transformNormalToView( cross( dU, dV ).normalize() );
61
+
62
+ } );
63
+
64
+
65
+ runnyEggs.roughness = Fn( ( params ) => {
66
+
67
+ var pos = positionGeometry.mul( exp( params.scale.div( 1 ) ) ).add( params.seed.sin().mul( 10 ) ).toVar( );
68
+
69
+ var sizeYolk = params.sizeYolk.oneMinus();
70
+
71
+ var n = mx_worley_noise_float( pos ).toVar();
72
+ var yolks = n.add( sizeYolk ).pow( 18 ).clamp( 0, 1 );
73
+
74
+ return yolks;
75
+
76
+ } );
77
+
78
+
79
+ runnyEggs.defaults = {
80
+ $name: 'Runny eggs',
81
+
82
+ scale: 1,
83
+
84
+ sizeYolk: 0.2,
85
+ sizeWhite: 0.7,
86
+
87
+ colorYolk: new Color( 'orange' ),
88
+ colorWhite: new Color( 'white' ),
89
+ colorBackground: new Color( 'lightgray' ),
90
+
91
+ seed: 0,
92
+ };
93
+
94
+
95
+
96
+ export { runnyEggs };
package/src/tsl-utils.js CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- import { add, cos, cross, float, Fn, If, log2, mat4, max, min, mul, positionLocal, pow, remap, select, sin, smoothstep, sub, uniform, vec3, vec4 } from 'three/tsl';
11
+ import { add, cos, cross, dFdx, dFdy, float, Fn, If, log2, mat4, max, min, mul, positionLocal, pow, remap, select, sin, smoothstep, sub, transformNormalToView, uniform, vec3, vec4 } from 'three/tsl';
12
12
  import { Vector3 } from 'three';
13
13
  //import { mx_perlin_noise_float as noise } from 'https://cdn.jsdelivr.net/npm/three@0.167.0/src/nodes/materialx/lib/mx_noise.js';
14
14
 
@@ -363,6 +363,17 @@ const overlayPlanar = Fn( ( params )=>{
363
363
 
364
364
 
365
365
 
366
+ const normalVector = Fn( ([ pos ])=>{
367
+
368
+ var dU = dFdx( pos ),
369
+ dV = dFdy( pos );
370
+
371
+ return transformNormalToView( cross( dU, dV ).normalize() );
372
+
373
+ } );
374
+
375
+
376
+
366
377
  export
367
378
  {
368
379
  mx_noise_float as noise
@@ -384,5 +395,6 @@ export
384
395
  matTrans,
385
396
  matScale,
386
397
  selectPlanar,
387
- overlayPlanar
398
+ overlayPlanar,
399
+ normalVector
388
400
  };