tsl-textures 1.9.0 → 1.10.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 +1 -1
- package/src/camouflage.js +3 -1
- package/src/cave-art.js +3 -1
- package/src/circles.js +6 -4
- package/src/clouds.js +5 -1
- package/src/concrete.js +3 -1
- package/src/cork.js +3 -1
- package/src/dalmatian-spots.js +3 -1
- package/src/darth-maul.js +58 -0
- package/src/dyson-sphere.js +3 -0
- package/src/entangled.js +3 -1
- package/src/fordite.js +3 -1
- package/src/gas-giant.js +3 -1
- package/src/grid.js +3 -0
- package/src/isolines.js +3 -1
- package/src/karst-rock.js +3 -1
- package/src/marble.js +3 -1
- package/src/neon-lights.js +3 -1
- package/src/photosphere.js +3 -1
- package/src/planet.js +3 -1
- package/src/polka-dots.js +3 -1
- package/src/processed-wood.js +3 -1
- package/src/protozoa.js +3 -1
- package/src/rotator.js +5 -1
- package/src/rough-clay.js +3 -1
- package/src/runny-eggs.js +7 -0
- package/src/rust.js +5 -1
- package/src/satin.js +3 -1
- package/src/scaler.js +5 -1
- package/src/scepter-head.js +3 -1
- package/src/scream.js +3 -1
- package/src/simplex-noise.js +3 -1
- package/src/stars.js +5 -2
- package/src/supersphere.js +5 -0
- package/src/tiger-fur.js +3 -1
- package/src/translator.js +5 -1
- package/src/tsl-utils.js +89 -2
- package/src/voronoi-cells.js +3 -1
- package/src/water-drops.js +3 -1
- package/src/watermelon.js +3 -1
- package/src/wood.js +3 -1
- package/src/zebra-lines.js +3 -1
package/package.json
CHANGED
package/src/camouflage.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { exp, Fn, If, positionGeometry, round, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var camouflage = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...camouflage.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
17
|
|
|
16
18
|
var color = vec3( 0, 0, 0 ).toVar( );
|
package/src/cave-art.js
CHANGED
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { abs, add, exp, float, Fn, If, mix, or, positionGeometry, pow2, sub } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
var caveArt = Fn( ( params ) => {
|
|
12
12
|
|
|
13
|
+
params = prepare( { ...caveArt.defaults, ...params } );
|
|
14
|
+
|
|
13
15
|
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
14
16
|
|
|
15
17
|
var k1 = noise( pos, 4 ).sin().toVar();
|
package/src/circles.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { acos, clamp, exp, float, Fn, positionGeometry, select, sin } from 'three/tsl';
|
|
8
|
-
import { hsl, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { hsl, prepare, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var circles = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...circles.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.normalize().toVar( );
|
|
15
17
|
|
|
16
18
|
var angle = acos( clamp( pos.y, -1, 1 ) ).mul( 20 );
|
|
@@ -21,10 +23,10 @@ var circles = Fn( ( params ) => {
|
|
|
21
23
|
|
|
22
24
|
var k = float( params.seed.sin().mul( 100 ) ).toVar();
|
|
23
25
|
|
|
24
|
-
for ( var n=0; n<=10; n++ ) {
|
|
26
|
+
for ( var n=0; n<=10; n++ ) {
|
|
25
27
|
|
|
26
28
|
k.addAssign( sin( x.mul( 2**n ).sub( Math.PI*n/2 ) ).mul( -n*( n+1 )/2 ) );
|
|
27
|
-
|
|
29
|
+
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
k.assign( k.div( 200 ).clamp( -2, 2 ) );
|
|
@@ -39,7 +41,7 @@ var circles = Fn( ( params ) => {
|
|
|
39
41
|
hue.assign( huei.add( huef ) );
|
|
40
42
|
|
|
41
43
|
return hsl( hue.div( 10 ), HSL.y, HSL.z );
|
|
42
|
-
|
|
44
|
+
|
|
43
45
|
} );
|
|
44
46
|
|
|
45
47
|
|
package/src/clouds.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { clamp, exp, Fn, min, mix, mul, positionGeometry, vec4 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -29,6 +29,8 @@ var _clouds = Fn( ( params ) => {
|
|
|
29
29
|
|
|
30
30
|
var clouds = Fn( ( params ) => {
|
|
31
31
|
|
|
32
|
+
params = prepare( { ...clouds.defaults, ...params } );
|
|
33
|
+
|
|
32
34
|
return _clouds( params ).rgb;
|
|
33
35
|
|
|
34
36
|
} );
|
|
@@ -37,6 +39,8 @@ var clouds = Fn( ( params ) => {
|
|
|
37
39
|
|
|
38
40
|
clouds.opacity = Fn( ( params ) => {
|
|
39
41
|
|
|
42
|
+
params = prepare( { ...clouds.defaults, ...params } );
|
|
43
|
+
|
|
40
44
|
return _clouds( params ).a;
|
|
41
45
|
|
|
42
46
|
} );
|
package/src/concrete.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { abs, cos, cross, exp, Fn, normalLocal, positionGeometry, pow, remap, sin, sub, tangentLocal, transformNormalToView, vec3 } from 'three/tsl';
|
|
7
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
7
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
@@ -20,6 +20,8 @@ var surfacePos = Fn( ([ pos, normal, bump, density, seed ]) => {
|
|
|
20
20
|
|
|
21
21
|
var concrete = Fn( ( params ) => {
|
|
22
22
|
|
|
23
|
+
params = prepare( { ...concrete.defaults, ...params } );
|
|
24
|
+
|
|
23
25
|
var eps = 0.001;
|
|
24
26
|
|
|
25
27
|
var position = positionGeometry.mul( exp( params.scale.div( 2 ).add( 2 ) ) ).toVar( ),
|
package/src/cork.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { exp, float, Fn, If, Loop, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise, vnoise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare, vnoise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -18,6 +18,8 @@ var cellCenter = Fn( ([ cell ])=>{
|
|
|
18
18
|
|
|
19
19
|
var cork = Fn( ( params )=>{
|
|
20
20
|
|
|
21
|
+
params = prepare( { ...cork.defaults, ...params } );
|
|
22
|
+
|
|
21
23
|
var pos = positionGeometry.mul( exp( params.scale.div( 1.5 ).add( 1 ) ) ).add( params.seed ).toVar( );
|
|
22
24
|
|
|
23
25
|
var midCell = pos.round().toVar();
|
package/src/dalmatian-spots.js
CHANGED
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { exp, float, Fn, Loop, mix, positionGeometry } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
var dalmatianSpots = Fn( ( params )=>{
|
|
12
12
|
|
|
13
|
+
params = prepare( { ...dalmatianSpots.defaults, ...params } );
|
|
14
|
+
|
|
13
15
|
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).sub( 1000 ).toVar( );
|
|
14
16
|
|
|
15
17
|
var k = float( 1 ).toVar();
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
|
|
2
|
+
// TSL-Textures: Darth Maul
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
import { Color, Vector3 } from "three";
|
|
7
|
+
import { abs, exp, Fn, mix, positionGeometry, pow, select, vec3 } from 'three/tsl';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var darthMaul = Fn( ( params ) => {
|
|
13
|
+
|
|
14
|
+
params = prepare( { ...darthMaul.defaults, ...params } );
|
|
15
|
+
|
|
16
|
+
var dX = vec3( params.shift.x, 0, 0 );
|
|
17
|
+
|
|
18
|
+
var position = positionGeometry.add( params.shift ).mul( exp( params.scale.div( 1.5 ).sub( 1 ) ) ).sub( params.shift ).mul( vec3( 1, 1/2, 1/2 ) ).toVar( );
|
|
19
|
+
|
|
20
|
+
var s = select( positionGeometry.y.mul( params.angle.radians().cos() ).add( positionGeometry.z.mul( params.angle.radians().sin() ) ).greaterThan( params.distance ), 1, 0 );
|
|
21
|
+
|
|
22
|
+
// implement symmetry
|
|
23
|
+
position.x.assign( position.x.add( params.shift.x ).abs() );
|
|
24
|
+
position.y.addAssign( params.seed );
|
|
25
|
+
position.z.mulAssign( params.shift.z );
|
|
26
|
+
|
|
27
|
+
var n = noise( position ).toVar();
|
|
28
|
+
|
|
29
|
+
var k = n.sin().mul( n.mul( params.complexity.mul( 2 ).add( 1 ).exp() ).sin() ).remap( 0, 0.2, 1, -1 ).greaterThan( params.balance ).select( 0, 1 );
|
|
30
|
+
|
|
31
|
+
var c = select( position.x.greaterThan( noise( position.mul( 2.3 ) ).abs().mul( 0.5 ).add( 0.02 ) ), 1, 0 );
|
|
32
|
+
|
|
33
|
+
return mix( params.background, params.color, k.mul( s ).mul( c ).clamp( 0, 1 ) );
|
|
34
|
+
|
|
35
|
+
} );
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
darthMaul.defaults = {
|
|
40
|
+
$name: 'Darth Maul',
|
|
41
|
+
|
|
42
|
+
scale: 2,
|
|
43
|
+
shift: new Vector3( 0, 0, 0 ),
|
|
44
|
+
complexity: 0,
|
|
45
|
+
|
|
46
|
+
angle: 60,
|
|
47
|
+
distance: 1.9,
|
|
48
|
+
|
|
49
|
+
color: new Color( 0xD02020 ),
|
|
50
|
+
background: new Color( 0x000000 ),
|
|
51
|
+
balance: 0,
|
|
52
|
+
|
|
53
|
+
seed: 0,
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
export { darthMaul };
|
package/src/dyson-sphere.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { exp, float, Fn, Loop, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
|
+
import { prepare } from 'tsl-textures/tsl-utils.js';
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
|
|
@@ -61,6 +62,8 @@ var noiseg = Fn( ([ pos ])=>{
|
|
|
61
62
|
|
|
62
63
|
var dysonSphere = Fn( ( params )=>{
|
|
63
64
|
|
|
65
|
+
params = prepare( { ...dysonSphere.defaults, ...params } );
|
|
66
|
+
|
|
64
67
|
var pos = positionGeometry.mul( exp( params.scale.div( 2 ).add( 0.5 ) ) ).add( params.seed ).toVar( );
|
|
65
68
|
|
|
66
69
|
var res = vec3().toVar();
|
package/src/entangled.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { abs, exp, float, floor, Fn, Loop, max, mix, mul, oneMinus, positionGeometry, pow, sin } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var entangled = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...entangled.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var scale = exp( params.scale.div( 2 ) ).toVar( );
|
|
15
17
|
var pos = positionGeometry.add( params.seed ).toVar( );
|
|
16
18
|
var k = float( -10000 ).toVar( );
|
package/src/fordite.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { exp, Fn, mul, positionGeometry, sin, vec3 } from 'three/tsl';
|
|
8
|
-
import { hsl, noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { hsl, noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var fordite = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...fordite.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
17
|
|
|
16
18
|
var k = noise(
|
package/src/gas-giant.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { exp, Fn, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
|
-
import { hsl, noise, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { hsl, noise, prepare, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var gasGiant = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...gasGiant.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var scale = params.scale.div( 2 ).add( 1 ).toVar();
|
|
15
17
|
var pos = positionGeometry.mul( exp( scale ) ).add( params.seed ).toVar( );
|
|
16
18
|
|
package/src/grid.js
CHANGED
|
@@ -5,11 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { abs, add, div, equirectUV, Fn, min, mix, mul, oneMinus, positionGeometry, pow, remapClamp, round, sin, smoothstep, sub } from 'three/tsl';
|
|
8
|
+
import { prepare } from 'tsl-textures/tsl-utils.js';
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
var grid = Fn( ( params ) => {
|
|
12
13
|
|
|
14
|
+
params = prepare( { ...grid.defaults, ...params } );
|
|
15
|
+
|
|
13
16
|
var uv = equirectUV( positionGeometry.normalize() ).toVar(),
|
|
14
17
|
a = mul( uv.x, 2*Math.PI ),
|
|
15
18
|
b = mul( uv.y, Math.PI ).toVar();
|
package/src/isolines.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { add, exp, Fn, mix, oneMinus, positionGeometry, sin, smoothstep, sub } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var isolines = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...isolines.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
17
|
|
|
16
18
|
var k = noise( pos ).mul( params.density );
|
package/src/karst-rock.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { exp, Fn, mix, positionGeometry } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var karstRock = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...karstRock.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed.sin().mul( 5 ) ).toVar( );
|
|
15
17
|
|
|
16
18
|
var pos2 = pos.add( noise( pos.mul( 2 ) ) ).toVar();
|
package/src/marble.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { add, div, exp, Fn, If, mix, mul, oneMinus, positionGeometry, pow } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var marble = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...marble.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
17
|
|
|
16
18
|
var k = add(
|
package/src/neon-lights.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { abs, exp, Fn, oneMinus, positionGeometry, select, sqrt, vec3 } from 'three/tsl';
|
|
8
|
-
import { hsl, noise, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { hsl, noise, prepare, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var neonLights = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...neonLights.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry;//.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
17
|
|
|
16
18
|
var scale = exp( params.scale.remap( 0, 4, 2, -2 ) ).toVar();
|
package/src/photosphere.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { exp, Fn, Loop, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
|
-
import { applyEuler, noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { applyEuler, noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var photosphere = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...photosphere.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var scale = exp( params.scale.add( 1 ) ).toVar( );
|
|
15
17
|
var pos = positionGeometry.toVar( );
|
|
16
18
|
|
package/src/planet.js
CHANGED
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { exp, float, Fn, If, Loop, mix, mul, positionGeometry, remap, smoothstep, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
var planet = Fn( ( params )=>{
|
|
14
14
|
|
|
15
|
+
params = prepare( { ...planet.defaults, ...params } );
|
|
16
|
+
|
|
15
17
|
var k = float( 0 ).toVar(),
|
|
16
18
|
sum = float( 0 ).toVar(),
|
|
17
19
|
scale = exp( params.scale.sub( 2 ) ).toVar(),
|
package/src/polka-dots.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { acos, add, distance, exp, float, Fn, Loop, max, min, mix, mod, mul, oneMinus, positionGeometry, pow, smoothstep, } from 'three/tsl';
|
|
8
|
-
import { spherical } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { prepare, spherical } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -15,6 +15,8 @@ var goldenRatio = ( 1+5**0.5 )/2;
|
|
|
15
15
|
|
|
16
16
|
var polkaDots = Fn( ( params ) => {
|
|
17
17
|
|
|
18
|
+
params = prepare( { ...polkaDots.defaults, ...params } );
|
|
19
|
+
|
|
18
20
|
var cnt = pow( 10, params.count ).toVar();
|
|
19
21
|
var vec = positionGeometry.normalize().toVar();
|
|
20
22
|
|
package/src/processed-wood.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { add, cos, exp, Fn, mix, positionGeometry, radians, sin, sub, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var processedWood = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...processedWood.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var angle = radians( params.angle ).toVar();
|
|
15
17
|
var posLocal = vec3(
|
|
16
18
|
sub( positionGeometry.x.mul( cos( angle ) ), positionGeometry.y.mul( sin( angle ) ) ),
|
package/src/protozoa.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { exp, float, Fn, Loop, matcapUV, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -19,6 +19,8 @@ var pnoise = Fn( ([ pos, fat ])=>{
|
|
|
19
19
|
|
|
20
20
|
var protozoa = Fn( ( params )=>{
|
|
21
21
|
|
|
22
|
+
params = prepare( { ...protozoa.defaults, ...params } );
|
|
23
|
+
|
|
22
24
|
var pos = positionGeometry.mul( exp( params.scale.sub( 1 ) ) ).add( params.seed ).toVar( );
|
|
23
25
|
|
|
24
26
|
var matcap = vec3( matcapUV, matcapUV.length() ).toVar();
|
package/src/rotator.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Vector2, Vector3 } from "three";
|
|
7
7
|
import { cross, Fn, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView, vec4 } from 'three/tsl';
|
|
8
|
-
import { matRotYXZ, matTrans, selectPlanar } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { matRotYXZ, matTrans, prepare, selectPlanar } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -25,6 +25,8 @@ var surfacePos = Fn( ([ pos, params ])=>{
|
|
|
25
25
|
|
|
26
26
|
var rotator = Fn( ( params )=>{
|
|
27
27
|
|
|
28
|
+
params = prepare( { ...rotator.defaults, ...params } );
|
|
29
|
+
|
|
28
30
|
return surfacePos( positionGeometry, params );
|
|
29
31
|
|
|
30
32
|
} );
|
|
@@ -33,6 +35,8 @@ var rotator = Fn( ( params )=>{
|
|
|
33
35
|
|
|
34
36
|
rotator.normal = Fn( ( params ) => {
|
|
35
37
|
|
|
38
|
+
params = prepare( { ...rotator.defaults, ...params } );
|
|
39
|
+
|
|
36
40
|
var eps = 0.01;
|
|
37
41
|
|
|
38
42
|
var position = positionGeometry,
|
package/src/rough-clay.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { cross, exp, Fn, mx_worley_noise_float, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView } from 'three/tsl';
|
|
7
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
7
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
@@ -19,6 +19,8 @@ var surfacePos = Fn( ([ pos, normal, bump, curvature ]) => {
|
|
|
19
19
|
|
|
20
20
|
var roughClay = Fn( ( params ) => {
|
|
21
21
|
|
|
22
|
+
params = prepare( { ...roughClay.defaults, ...params } );
|
|
23
|
+
|
|
22
24
|
var eps = 0.001;
|
|
23
25
|
|
|
24
26
|
var bump = params.bump.div( 50 ).toVar();
|
package/src/runny-eggs.js
CHANGED
|
@@ -5,11 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { cross, exp, Fn, mix, mx_worley_noise_float, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView } from 'three/tsl';
|
|
8
|
+
import { prepare } from 'tsl-textures/tsl-utils.js';
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
var runnyEggs = Fn( ( params ) => {
|
|
12
13
|
|
|
14
|
+
params = prepare( { ...runnyEggs.defaults, ...params } );
|
|
15
|
+
|
|
13
16
|
var pos = positionGeometry.mul( exp( params.scale.div( 1 ) ) ).add( params.seed.sin().mul( 10 ) ).toVar( );
|
|
14
17
|
|
|
15
18
|
var sizeYolk = params.sizeYolk.oneMinus();
|
|
@@ -39,6 +42,8 @@ var surfacePos = Fn( ([ pos, normal, bump, sizeYolk, sizeWhite ]) => {
|
|
|
39
42
|
|
|
40
43
|
runnyEggs.normal = Fn( ( params ) => {
|
|
41
44
|
|
|
45
|
+
params = prepare( { ...runnyEggs.defaults, ...params } );
|
|
46
|
+
|
|
42
47
|
var eps = 0.001;
|
|
43
48
|
var bump = 0.05;
|
|
44
49
|
|
|
@@ -64,6 +69,8 @@ runnyEggs.normal = Fn( ( params ) => {
|
|
|
64
69
|
|
|
65
70
|
runnyEggs.roughness = Fn( ( params ) => {
|
|
66
71
|
|
|
72
|
+
params = prepare( { ...runnyEggs.defaults, ...params } );
|
|
73
|
+
|
|
67
74
|
var pos = positionGeometry.mul( exp( params.scale.div( 1 ) ) ).add( params.seed.sin().mul( 10 ) ).toVar( );
|
|
68
75
|
|
|
69
76
|
var sizeYolk = params.sizeYolk.oneMinus();
|
package/src/rust.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { exp, Fn, Loop, mix, positionGeometry } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -35,6 +35,8 @@ var _rust = Fn( ( params )=>{
|
|
|
35
35
|
|
|
36
36
|
var rust = Fn( ( params )=>{
|
|
37
37
|
|
|
38
|
+
params = prepare( { ...rust.defaults, ...params } );
|
|
39
|
+
|
|
38
40
|
var k = _rust( params ).mul( 1.25 ).pow( 0.5 );
|
|
39
41
|
|
|
40
42
|
var pos = positionGeometry.mul( exp( params.scale.add( params.noiseScale.mul( 3 ), 2 ) ) );
|
|
@@ -49,6 +51,8 @@ var rust = Fn( ( params )=>{
|
|
|
49
51
|
|
|
50
52
|
rust.opacity = Fn( ( params )=>{
|
|
51
53
|
|
|
54
|
+
params = prepare( { ...rust.defaults, ...params } );
|
|
55
|
+
|
|
52
56
|
var k = _rust( params ).mul( params.opacity.add( 0.2 ) );
|
|
53
57
|
|
|
54
58
|
return k.oneMinus();
|
package/src/satin.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { abs, exp, Fn, mix, positionGeometry, pow, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var satin = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...satin.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.toVar( );
|
|
15
17
|
|
|
16
18
|
var scale = exp( params.scale.div( 3 ) ).toVar();
|
package/src/scaler.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Vector2, Vector3 } from "three";
|
|
7
7
|
import { cross, Fn, mix, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView, vec3, vec4 } from 'three/tsl';
|
|
8
|
-
import { matScale, matTrans, selectPlanar } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { matScale, matTrans, prepare, selectPlanar } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -25,6 +25,8 @@ var surfacePos = Fn( ([ pos, params ])=>{
|
|
|
25
25
|
|
|
26
26
|
var scaler = Fn( ( params )=>{
|
|
27
27
|
|
|
28
|
+
params = prepare( { ...scaler.defaults, ...params } );
|
|
29
|
+
|
|
28
30
|
return surfacePos( positionGeometry, params );
|
|
29
31
|
|
|
30
32
|
} );
|
|
@@ -33,6 +35,8 @@ var scaler = Fn( ( params )=>{
|
|
|
33
35
|
|
|
34
36
|
scaler.normal = Fn( ( params ) => {
|
|
35
37
|
|
|
38
|
+
params = prepare( { ...scaler.defaults, ...params } );
|
|
39
|
+
|
|
36
40
|
var eps = 0.01;
|
|
37
41
|
|
|
38
42
|
var position = positionGeometry,
|
package/src/scepter-head.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { abs, add, cos, floor, Fn, max, mix, mod, mul, positionGeometry, remapClamp, sign, tan, vec3 } from 'three/tsl';
|
|
8
|
-
import { hsl, noise, remapExp, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { hsl, noise, prepare, remapExp, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var scepterHead = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...scepterHead.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry;
|
|
15
17
|
|
|
16
18
|
var fx = pos.x.mul( remapExp( params.xFactor, 0, 100, 1.35, 30 ) ).toVar( ),
|
package/src/scream.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { add, cos, exp, Fn, mix, positionGeometry, sin } from 'three/tsl';
|
|
8
|
-
import { hsl, noise, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { hsl, noise, prepare, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var scream = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...scream.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
17
|
|
|
16
18
|
var k = noise( add( sin( pos.xyz ), cos( pos.yzx ) ) );
|
package/src/simplex-noise.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { clamp, exp, Fn, mix, positionGeometry } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var simplexNoise = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...simplexNoise.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed );
|
|
15
17
|
|
|
16
18
|
var k = clamp( 0, 1, noise( pos ).mul( 0.5, exp( params.contrast ) ).add( 0.5, params.balance ) );
|
package/src/stars.js
CHANGED
|
@@ -5,12 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { abs, add, exp, Fn, mix, positionGeometry, select } from 'three/tsl';
|
|
8
|
-
import { hsl, noise, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { hsl, noise, prepare, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
|
+
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
var stars = Fn( ( params ) => {
|
|
13
14
|
|
|
15
|
+
params = prepare( { ...stars.defaults, ...params } );
|
|
16
|
+
|
|
14
17
|
var pos = positionGeometry.mul( exp( params.scale.div( 2 ).add( 3 ) ) ).add( params.seed ).toVar( );
|
|
15
18
|
|
|
16
19
|
var k = abs( noise( pos ) ).pow( 10 ).mul( 10 );
|
|
@@ -22,7 +25,7 @@ var stars = Fn( ( params ) => {
|
|
|
22
25
|
var col = toHsl( mix( params.background, params.color, k ) );
|
|
23
26
|
|
|
24
27
|
return hsl( add( col.x, dS ), col.y, col.z );
|
|
25
|
-
|
|
28
|
+
|
|
26
29
|
} );
|
|
27
30
|
|
|
28
31
|
|
package/src/supersphere.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { cross, float, Fn, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView } from 'three/tsl';
|
|
7
|
+
import { prepare } from 'tsl-textures/tsl-utils.js';
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
|
|
@@ -25,6 +26,8 @@ var surfacePos = Fn( ([ pos, params ])=>{
|
|
|
25
26
|
|
|
26
27
|
var supersphere = Fn( ( params )=>{
|
|
27
28
|
|
|
29
|
+
params = prepare( { ...supersphere.defaults, ...params } );
|
|
30
|
+
|
|
28
31
|
return surfacePos( positionGeometry, params );
|
|
29
32
|
|
|
30
33
|
} );
|
|
@@ -33,6 +36,8 @@ var supersphere = Fn( ( params )=>{
|
|
|
33
36
|
|
|
34
37
|
supersphere.normal = Fn( ( params ) => {
|
|
35
38
|
|
|
39
|
+
params = prepare( { ...supersphere.defaults, ...params } );
|
|
40
|
+
|
|
36
41
|
var eps = 0.01;
|
|
37
42
|
|
|
38
43
|
var position = positionGeometry,
|
package/src/tiger-fur.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { exp, Fn, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var tigerFur = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...tigerFur.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var scale = params.scale.div( 2 ).add( 1 ).toVar();
|
|
15
17
|
var pos = positionGeometry.mul( exp( scale ) ).add( params.seed ).toVar( );
|
|
16
18
|
|
package/src/translator.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Vector2, Vector3 } from "three";
|
|
7
7
|
import { cross, Fn, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView, vec4 } from 'three/tsl';
|
|
8
|
-
import { matTrans, selectPlanar } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { matTrans, prepare, selectPlanar } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -23,6 +23,8 @@ var surfacePos = Fn( ([ pos, params ])=>{
|
|
|
23
23
|
|
|
24
24
|
var translator = Fn( ( params )=>{
|
|
25
25
|
|
|
26
|
+
params = prepare( { ...translator.defaults, ...params } );
|
|
27
|
+
|
|
26
28
|
return surfacePos( positionGeometry, params );
|
|
27
29
|
|
|
28
30
|
} );
|
|
@@ -31,6 +33,8 @@ var translator = Fn( ( params )=>{
|
|
|
31
33
|
|
|
32
34
|
translator.normal = Fn( ( params ) => {
|
|
33
35
|
|
|
36
|
+
params = prepare( { ...translator.defaults, ...params } );
|
|
37
|
+
|
|
34
38
|
var eps = 0.01;
|
|
35
39
|
|
|
36
40
|
var position = positionGeometry,
|
package/src/tsl-utils.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
import { add, cos, cross, dFdx, dFdy, float, Fn, If, log2, mat4, max, min, mul, positionGeometry, pow, remap, select, sin, smoothstep, sub, transformNormalToView, uniform, vec3, vec4 } from 'three/tsl';
|
|
12
|
-
import { Vector3 } from 'three';
|
|
12
|
+
import { Color, 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
|
|
|
15
15
|
|
|
@@ -373,6 +373,90 @@ const normalVector = Fn( ([ pos ])=>{
|
|
|
373
373
|
} );
|
|
374
374
|
|
|
375
375
|
|
|
376
|
+
var banner = null;
|
|
377
|
+
var bannerCounter = 10;
|
|
378
|
+
async function showFallbackWarning( ) {
|
|
379
|
+
|
|
380
|
+
if ( navigator.gpu != undefined ) {
|
|
381
|
+
|
|
382
|
+
var adapter = await navigator.gpu.requestAdapter();
|
|
383
|
+
if ( adapter ) return;
|
|
384
|
+
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
var html = `
|
|
388
|
+
<div style="font-size:1.25em; font-weight:bold;">PLEASE, WAIT</div>
|
|
389
|
+
<div style="font-size:0.85em; font-weight:100;" >NO WEBGPU — TRYING WEBGL2</div>
|
|
390
|
+
<div id="counter"></div>
|
|
391
|
+
`;
|
|
392
|
+
|
|
393
|
+
banner = document.createElement( 'div' );
|
|
394
|
+
banner.innerHTML = html;
|
|
395
|
+
|
|
396
|
+
banner.style.left = 'calc(50% - 8em)';
|
|
397
|
+
banner.style.width = '16em';
|
|
398
|
+
|
|
399
|
+
banner.style.fontFamily = 'Bahnschrifts, Arial';
|
|
400
|
+
banner.style.position = 'absolute';
|
|
401
|
+
banner.style.bottom = '20px';
|
|
402
|
+
banner.style.padding = '12px 6px';
|
|
403
|
+
banner.style.border = '1px solid white';
|
|
404
|
+
banner.style.borderRadius = '4px';
|
|
405
|
+
banner.style.background = 'rgba(0,0,0,0.5)';
|
|
406
|
+
banner.style.color = 'white';
|
|
407
|
+
banner.style.textAlign = 'center';
|
|
408
|
+
banner.style.opacity = '0.8';
|
|
409
|
+
banner.style.outline = 'none';
|
|
410
|
+
banner.style.zIndex = '999';
|
|
411
|
+
|
|
412
|
+
document.body.appendChild( banner );
|
|
413
|
+
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
function hideFallbackWarning( ) {
|
|
419
|
+
|
|
420
|
+
if ( banner ) {
|
|
421
|
+
|
|
422
|
+
if ( bannerCounter>0 )
|
|
423
|
+
bannerCounter--;
|
|
424
|
+
else {
|
|
425
|
+
|
|
426
|
+
banner.style.display = 'none';
|
|
427
|
+
// document.removeChild( banner );
|
|
428
|
+
banner = null;
|
|
429
|
+
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
// converts all numeric, color and vector properties to nodes
|
|
439
|
+
function prepare( params ) {
|
|
440
|
+
|
|
441
|
+
for ( var name of Object.keys( params ) ) {
|
|
442
|
+
|
|
443
|
+
if ( typeof params[ name ] === 'number' )
|
|
444
|
+
params[ name ] = float( params[ name ]);
|
|
445
|
+
else
|
|
446
|
+
if ( params[ name ] instanceof Color )
|
|
447
|
+
params[ name ] = vec3( params[ name ].r, params[ name ].g, params[ name ].b );
|
|
448
|
+
else
|
|
449
|
+
if ( params[ name ] instanceof Vector3 )
|
|
450
|
+
params[ name ] = vec3( params[ name ].x, params[ name ].y, params[ name ].z );
|
|
451
|
+
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
return params;
|
|
455
|
+
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
376
460
|
|
|
377
461
|
export
|
|
378
462
|
{
|
|
@@ -396,5 +480,8 @@ export
|
|
|
396
480
|
matScale,
|
|
397
481
|
selectPlanar,
|
|
398
482
|
overlayPlanar,
|
|
399
|
-
|
|
483
|
+
showFallbackWarning,
|
|
484
|
+
hideFallbackWarning,
|
|
485
|
+
normalVector,
|
|
486
|
+
prepare
|
|
400
487
|
};
|
package/src/voronoi-cells.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { exp, float, Fn, If, Loop, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -18,6 +18,8 @@ var cellCenter = Fn( ([ cell ])=>{
|
|
|
18
18
|
|
|
19
19
|
var voronoiCells = Fn( ( params )=>{
|
|
20
20
|
|
|
21
|
+
params = prepare( { ...voronoiCells.defaults, ...params } );
|
|
22
|
+
|
|
21
23
|
var pos = positionGeometry.mul( exp( params.scale.div( 2 ).add( 0.5 ) ) ).add( params.seed ).toVar( );
|
|
22
24
|
|
|
23
25
|
var midCell = pos.round().toVar();
|
package/src/water-drops.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { cos, cross, exp, Fn, normalLocal, positionGeometry, remap, sin, sub, tangentLocal, transformNormalToView, vec3 } from 'three/tsl';
|
|
7
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
7
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
@@ -20,6 +20,8 @@ var surfacePos = Fn( ([ pos, normal, bump, density, seed ]) => {
|
|
|
20
20
|
|
|
21
21
|
var waterDrops = Fn( ( params ) => {
|
|
22
22
|
|
|
23
|
+
params = prepare( { ...waterDrops.defaults, ...params } );
|
|
24
|
+
|
|
23
25
|
var eps = 0.001;
|
|
24
26
|
|
|
25
27
|
var position = positionGeometry.mul( exp( params.scale.div( 1 ).add( 1 ) ) ).toVar( ),
|
package/src/watermelon.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { equirectUV, exp, Fn, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var watermelon = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...watermelon.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.mul( exp( params.scale.div( 4 ).add( 2 ) ) ).add( params.seed ).toVar( );
|
|
15
17
|
|
|
16
18
|
var uv = equirectUV( positionGeometry.normalize() ).toVar(),
|
package/src/wood.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
7
|
import { add, cos, exp, float, Fn, Loop, mix, mul, positionGeometry, radians, reciprocal, sin, sub, vec3 } from 'three/tsl';
|
|
8
|
-
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { noise, prepare } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var wood = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...wood.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var angle = radians( params.angle ).toVar();
|
|
15
17
|
var posLocal = vec3(
|
|
16
18
|
sub( positionGeometry.x.mul( cos( angle ) ), positionGeometry.y.mul( sin( angle ) ) ),
|
package/src/zebra-lines.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
7
|
import { acos, clamp, exp, Fn, mix, positionGeometry, sin } from 'three/tsl';
|
|
8
|
-
import { spherical } from 'tsl-textures/tsl-utils.js';
|
|
8
|
+
import { prepare, spherical } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var zebraLines = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
+
params = prepare( { ...zebraLines.defaults, ...params } );
|
|
15
|
+
|
|
14
16
|
var pos = positionGeometry.normalize().toVar( );
|
|
15
17
|
|
|
16
18
|
var dir = spherical( params.phi, params.theta ).toVar();
|