tsl-textures 1.7.0 → 1.9.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/README.md +27 -1
- package/package.json +1 -1
- package/src/camouflage.js +2 -2
- package/src/cave-art.js +2 -2
- package/src/circles.js +2 -2
- package/src/clouds.js +2 -2
- package/src/concrete.js +2 -2
- package/src/cork.js +2 -2
- package/src/dalmatian-spots.js +2 -2
- package/src/dyson-sphere.js +2 -2
- package/src/entangled.js +2 -2
- package/src/fordite.js +2 -2
- package/src/gas-giant.js +2 -2
- package/src/grid.js +2 -2
- package/src/isolines.js +2 -2
- package/src/karst-rock.js +2 -2
- package/src/marble.js +2 -2
- package/src/neon-lights.js +2 -2
- package/src/photosphere.js +2 -2
- package/src/planet.js +2 -2
- package/src/polka-dots.js +2 -2
- package/src/processed-wood.js +4 -4
- package/src/protozoa.js +2 -2
- package/src/rotator.js +3 -3
- package/src/rough-clay.js +3 -3
- package/src/runny-eggs.js +96 -0
- package/src/rust.js +3 -3
- package/src/satin.js +2 -2
- package/src/scaler.js +3 -3
- package/src/scepter-head.js +2 -2
- package/src/scream.js +3 -3
- package/src/simplex-noise.js +2 -2
- package/src/stars.js +2 -2
- package/src/supersphere.js +3 -3
- package/src/tiger-fur.js +3 -3
- package/src/translator.js +3 -3
- package/src/tsl-utils.js +2 -2
- package/src/voronoi-cells.js +2 -2
- package/src/water-drops.js +2 -2
- package/src/watermelon.js +3 -3
- package/src/wood.js +4 -4
- package/src/zebra-lines.js +2 -2
package/README.md
CHANGED
|
@@ -40,6 +40,7 @@ Uses [protozoa.js](https://boytchev.github.io/tsl-textures/docs/protozoa.html)
|
|
|
40
40
|
texture to create a dynamic blob with microorganisms floating innside. A space
|
|
41
41
|
station is constructed arounnd the blob. The surface of the station is made of
|
|
42
42
|
a Dyson sphere texture from [dyson-texture.js](https://boytchev.github.io/tsl-textures/docs/dyson-sphere.html).
|
|
43
|
+
Click on the image for a live demo.
|
|
43
44
|
|
|
44
45
|
[<img src="https://boytchev.github.io/tsl-textures/examples/example-protozoa.jpg">](https://boytchev.github.io/tsl-textures/examples/example-protozoa.html)
|
|
45
46
|
|
|
@@ -50,6 +51,31 @@ Uses [rotator.js](https://boytchev.github.io/tsl-textures/docs/rotator.html)
|
|
|
50
51
|
texture that applies soft matrices on model vertices. This allows to make
|
|
51
52
|
gradual rotation that looks like stretching skin and flexing muscles. The
|
|
52
53
|
animation does not use skinning or morphing, the model is not preprocessed
|
|
53
|
-
in any way, and no additional vertex data is added.
|
|
54
|
+
in any way, and no additional vertex data is added. Click on the image
|
|
55
|
+
for a live demo.
|
|
54
56
|
|
|
55
57
|
[<img src="https://boytchev.github.io/tsl-textures/examples/example-neck-massage.jpg">](https://boytchev.github.io/tsl-textures/examples/example-neck-massage.html)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
#### Example "Watermelon supersphere"
|
|
61
|
+
|
|
62
|
+
Uses [supersphere.js](https://boytchev.github.io/tsl-textures/docs/supersphere.html)
|
|
63
|
+
texture to generate the shape of a [supersphere](https://mathworld.wolfram.com/Supersphere.html)
|
|
64
|
+
and [watermelon.js](https://boytchev.github.io/tsl-textures/docs/watermelon.html)
|
|
65
|
+
texture to color the surface in a watermelon pattern. Both the shape and the pattern
|
|
66
|
+
are continuously changing. Click on the image for a live demo.
|
|
67
|
+
|
|
68
|
+
[<img src="https://boytchev.github.io/tsl-textures/examples/example-watermelon-supersphere.jpg">](https://boytchev.github.io/tsl-textures/examples/example-watermelon-supersphere.html)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
#### Example "Texture in motion"
|
|
72
|
+
|
|
73
|
+
Uses [dyson-sphere.js](https://boytchev.github.io/tsl-textures/docs/dyson-sphere.html),
|
|
74
|
+
[camouflage.js](https://boytchev.github.io/tsl-textures/docs/camouflage.html),
|
|
75
|
+
[dalmatian-spots.js](https://boytchev.github.io/tsl-textures/docs/dalmatian-spots.html) and
|
|
76
|
+
[planet.js](https://boytchev.github.io/tsl-textures/docs/planet.html) textures
|
|
77
|
+
and applies them on the elements of an animated GLTF model. Textures are blended
|
|
78
|
+
via a TSL function. Click on the image for a live demo. (Note: non-WebGPU browsers
|
|
79
|
+
might need 30+ seconds to start up.)
|
|
80
|
+
|
|
81
|
+
[<img src="https://boytchev.github.io/tsl-textures/examples/example-texture-in-motion.jpg">](https://boytchev.github.io/tsl-textures/examples/example-texture-in-motion.html)
|
package/package.json
CHANGED
package/src/camouflage.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
|
-
import { exp, Fn, If,
|
|
7
|
+
import { exp, Fn, If, positionGeometry, round, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var camouflage = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
15
|
|
|
16
16
|
var color = vec3( 0, 0, 0 ).toVar( );
|
|
17
17
|
|
package/src/cave-art.js
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { abs, add, exp, float, Fn, If, mix, or,
|
|
7
|
+
import { abs, add, exp, float, Fn, If, mix, or, positionGeometry, pow2, sub } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
var caveArt = Fn( ( params ) => {
|
|
12
12
|
|
|
13
|
-
var pos =
|
|
13
|
+
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
14
14
|
|
|
15
15
|
var k1 = noise( pos, 4 ).sin().toVar();
|
|
16
16
|
var k2 = noise( pos.mul( 1.5 ), 4 ).cos().toVar();
|
package/src/circles.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { acos, clamp, exp, float, Fn,
|
|
7
|
+
import { acos, clamp, exp, float, Fn, positionGeometry, select, sin } from 'three/tsl';
|
|
8
8
|
import { hsl, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var circles = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.normalize().toVar( );
|
|
15
15
|
|
|
16
16
|
var angle = acos( clamp( pos.y, -1, 1 ) ).mul( 20 );
|
|
17
17
|
|
package/src/clouds.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { clamp, exp, Fn, min, mix, mul,
|
|
7
|
+
import { clamp, exp, Fn, min, mix, mul, positionGeometry, vec4 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var _clouds = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.toVar(),
|
|
15
15
|
scale = exp( params.scale.div( 1.5 ).sub( 0.5 ) ).toVar(),
|
|
16
16
|
density = params.density.remap( 0, 1, -0.15, 0.15 ).toVar();
|
|
17
17
|
|
package/src/concrete.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
import { abs, cos, cross, exp, Fn, normalLocal,
|
|
6
|
+
import { abs, cos, cross, exp, Fn, normalLocal, positionGeometry, pow, remap, sin, sub, tangentLocal, transformNormalToView, vec3 } from 'three/tsl';
|
|
7
7
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
8
|
|
|
9
9
|
|
|
@@ -22,7 +22,7 @@ var concrete = Fn( ( params ) => {
|
|
|
22
22
|
|
|
23
23
|
var eps = 0.001;
|
|
24
24
|
|
|
25
|
-
var position =
|
|
25
|
+
var position = positionGeometry.mul( exp( params.scale.div( 2 ).add( 2 ) ) ).toVar( ),
|
|
26
26
|
normal = normalLocal.normalize().toVar(),
|
|
27
27
|
tangent = tangentLocal.normalize().mul( eps ).toVar(),
|
|
28
28
|
bitangent = cross( normal, tangent ).normalize().mul( eps ).toVar();
|
package/src/cork.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
|
-
import { exp, float, Fn, If, Loop, mix,
|
|
7
|
+
import { exp, float, Fn, If, Loop, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise, vnoise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -18,7 +18,7 @@ var cellCenter = Fn( ([ cell ])=>{
|
|
|
18
18
|
|
|
19
19
|
var cork = Fn( ( params )=>{
|
|
20
20
|
|
|
21
|
-
var pos =
|
|
21
|
+
var pos = positionGeometry.mul( exp( params.scale.div( 1.5 ).add( 1 ) ) ).add( params.seed ).toVar( );
|
|
22
22
|
|
|
23
23
|
var midCell = pos.round().toVar();
|
|
24
24
|
|
package/src/dalmatian-spots.js
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { exp, float, Fn, Loop, mix,
|
|
7
|
+
import { exp, float, Fn, Loop, mix, positionGeometry } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
var dalmatianSpots = Fn( ( params )=>{
|
|
12
12
|
|
|
13
|
-
var pos =
|
|
13
|
+
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).sub( 1000 ).toVar( );
|
|
14
14
|
|
|
15
15
|
var k = float( 1 ).toVar();
|
|
16
16
|
|
package/src/dyson-sphere.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
|
-
import { exp, float, Fn, Loop, mix,
|
|
7
|
+
import { exp, float, Fn, Loop, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
@@ -61,7 +61,7 @@ var noiseg = Fn( ([ pos ])=>{
|
|
|
61
61
|
|
|
62
62
|
var dysonSphere = Fn( ( params )=>{
|
|
63
63
|
|
|
64
|
-
var pos =
|
|
64
|
+
var pos = positionGeometry.mul( exp( params.scale.div( 2 ).add( 0.5 ) ) ).add( params.seed ).toVar( );
|
|
65
65
|
|
|
66
66
|
var res = vec3().toVar();
|
|
67
67
|
var factor = float( 1 ).toVar();
|
package/src/entangled.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { abs, exp, float, floor, Fn, Loop, max, mix, mul, oneMinus,
|
|
7
|
+
import { abs, exp, float, floor, Fn, Loop, max, mix, mul, oneMinus, positionGeometry, pow, sin } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ import { noise } from 'tsl-textures/tsl-utils.js';
|
|
|
12
12
|
var entangled = Fn( ( params ) => {
|
|
13
13
|
|
|
14
14
|
var scale = exp( params.scale.div( 2 ) ).toVar( );
|
|
15
|
-
var pos =
|
|
15
|
+
var pos = positionGeometry.add( params.seed ).toVar( );
|
|
16
16
|
var k = float( -10000 ).toVar( );
|
|
17
17
|
var k1 = float( 0 ).toVar( );
|
|
18
18
|
|
package/src/fordite.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
|
-
import { exp, Fn, mul,
|
|
7
|
+
import { exp, Fn, mul, positionGeometry, sin, vec3 } from 'three/tsl';
|
|
8
8
|
import { hsl, noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var fordite = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
15
|
|
|
16
16
|
var k = noise(
|
|
17
17
|
vec3(
|
package/src/gas-giant.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { exp, Fn, mix,
|
|
7
|
+
import { exp, Fn, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
8
|
import { hsl, noise, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ import { hsl, noise, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
|
12
12
|
var gasGiant = Fn( ( params )=>{
|
|
13
13
|
|
|
14
14
|
var scale = params.scale.div( 2 ).add( 1 ).toVar();
|
|
15
|
-
var pos =
|
|
15
|
+
var pos = positionGeometry.mul( exp( scale ) ).add( params.seed ).toVar( );
|
|
16
16
|
|
|
17
17
|
// turbulence strength
|
|
18
18
|
var turbulence = params.turbulence.mul(
|
package/src/grid.js
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { abs, add, div, equirectUV, Fn, min, mix, mul, oneMinus,
|
|
7
|
+
import { abs, add, div, equirectUV, Fn, min, mix, mul, oneMinus, positionGeometry, pow, remapClamp, round, sin, smoothstep, sub } from 'three/tsl';
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
var grid = Fn( ( params ) => {
|
|
12
12
|
|
|
13
|
-
var uv = equirectUV(
|
|
13
|
+
var uv = equirectUV( positionGeometry.normalize() ).toVar(),
|
|
14
14
|
a = mul( uv.x, 2*Math.PI ),
|
|
15
15
|
b = mul( uv.y, Math.PI ).toVar();
|
|
16
16
|
|
package/src/isolines.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { add, exp, Fn, mix, oneMinus,
|
|
7
|
+
import { add, exp, Fn, mix, oneMinus, positionGeometry, sin, smoothstep, sub } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var isolines = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
15
|
|
|
16
16
|
var k = noise( pos ).mul( params.density );
|
|
17
17
|
|
package/src/karst-rock.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { exp, Fn, mix,
|
|
7
|
+
import { exp, Fn, mix, positionGeometry } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var karstRock = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed.sin().mul( 5 ) ).toVar( );
|
|
15
15
|
|
|
16
16
|
var pos2 = pos.add( noise( pos.mul( 2 ) ) ).toVar();
|
|
17
17
|
|
package/src/marble.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { add, div, exp, Fn, If, mix, mul, oneMinus,
|
|
7
|
+
import { add, div, exp, Fn, If, mix, mul, oneMinus, positionGeometry, pow } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var marble = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
15
|
|
|
16
16
|
var k = add(
|
|
17
17
|
noise( pos ),
|
package/src/neon-lights.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { abs, exp, Fn, oneMinus,
|
|
7
|
+
import { abs, exp, Fn, oneMinus, positionGeometry, select, sqrt, vec3 } from 'three/tsl';
|
|
8
8
|
import { hsl, noise, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var neonLights = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry;//.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
15
|
|
|
16
16
|
var scale = exp( params.scale.remap( 0, 4, 2, -2 ) ).toVar();
|
|
17
17
|
var thinness = exp( params.thinness.remap( 0, 1, 1.5, 0 ) ).toVar();
|
package/src/photosphere.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { exp, Fn, Loop, mix,
|
|
7
|
+
import { exp, Fn, Loop, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
8
|
import { applyEuler, noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ import { applyEuler, noise } from 'tsl-textures/tsl-utils.js';
|
|
|
12
12
|
var photosphere = Fn( ( params ) => {
|
|
13
13
|
|
|
14
14
|
var scale = exp( params.scale.add( 1 ) ).toVar( );
|
|
15
|
-
var pos =
|
|
15
|
+
var pos = positionGeometry.toVar( );
|
|
16
16
|
|
|
17
17
|
var vec = vec3( pos ).toVar();
|
|
18
18
|
|
package/src/planet.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
|
-
import { exp, float, Fn, If, Loop, mix, mul,
|
|
7
|
+
import { exp, float, Fn, If, Loop, mix, mul, positionGeometry, remap, smoothstep, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -19,7 +19,7 @@ var planet = Fn( ( params )=>{
|
|
|
19
19
|
|
|
20
20
|
Loop( params.iterations.add( 10 ), ()=>{
|
|
21
21
|
|
|
22
|
-
k.addAssign( mul( power, noise(
|
|
22
|
+
k.addAssign( mul( power, noise( positionGeometry.mul( scale ).add( params.seed ) ) ) );
|
|
23
23
|
sum.addAssign( power );
|
|
24
24
|
scale.mulAssign( 1.5 );
|
|
25
25
|
power.mulAssign( 0.8 );
|
package/src/polka-dots.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { acos, add, distance, exp, float, Fn, Loop, max, min, mix, mod, mul, oneMinus,
|
|
7
|
+
import { acos, add, distance, exp, float, Fn, Loop, max, min, mix, mod, mul, oneMinus, positionGeometry, pow, smoothstep, } from 'three/tsl';
|
|
8
8
|
import { spherical } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@ var goldenRatio = ( 1+5**0.5 )/2;
|
|
|
16
16
|
var polkaDots = Fn( ( params ) => {
|
|
17
17
|
|
|
18
18
|
var cnt = pow( 10, params.count ).toVar();
|
|
19
|
-
var vec =
|
|
19
|
+
var vec = positionGeometry.normalize().toVar();
|
|
20
20
|
|
|
21
21
|
var besti = oneMinus( vec.y ).mul( cnt ).sub( 1 ).div( 2 );
|
|
22
22
|
|
package/src/processed-wood.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { add, cos, exp, Fn, mix,
|
|
7
|
+
import { add, cos, exp, Fn, mix, positionGeometry, radians, sin, sub, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -13,9 +13,9 @@ var processedWood = Fn( ( params )=>{
|
|
|
13
13
|
|
|
14
14
|
var angle = radians( params.angle ).toVar();
|
|
15
15
|
var posLocal = vec3(
|
|
16
|
-
sub(
|
|
17
|
-
add(
|
|
18
|
-
|
|
16
|
+
sub( positionGeometry.x.mul( cos( angle ) ), positionGeometry.y.mul( sin( angle ) ) ),
|
|
17
|
+
add( positionGeometry.x.mul( sin( angle ) ), positionGeometry.y.mul( cos( angle ) ) ),
|
|
18
|
+
positionGeometry.z,
|
|
19
19
|
).toVar();
|
|
20
20
|
|
|
21
21
|
var scale = params.scale.div( 2 ).add( 1 ).toVar();
|
package/src/protozoa.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { exp, float, Fn, Loop, matcapUV, mix,
|
|
7
|
+
import { exp, float, Fn, Loop, matcapUV, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -19,7 +19,7 @@ var pnoise = Fn( ([ pos, fat ])=>{
|
|
|
19
19
|
|
|
20
20
|
var protozoa = Fn( ( params )=>{
|
|
21
21
|
|
|
22
|
-
var pos =
|
|
22
|
+
var pos = positionGeometry.mul( exp( params.scale.sub( 1 ) ) ).add( params.seed ).toVar( );
|
|
23
23
|
|
|
24
24
|
var matcap = vec3( matcapUV, matcapUV.length() ).toVar();
|
|
25
25
|
|
package/src/rotator.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Vector2, Vector3 } from "three";
|
|
7
|
-
import { cross, Fn, normalLocal,
|
|
7
|
+
import { cross, Fn, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView, vec4 } from 'three/tsl';
|
|
8
8
|
import { matRotYXZ, matTrans, selectPlanar } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -25,7 +25,7 @@ var surfacePos = Fn( ([ pos, params ])=>{
|
|
|
25
25
|
|
|
26
26
|
var rotator = Fn( ( params )=>{
|
|
27
27
|
|
|
28
|
-
return surfacePos(
|
|
28
|
+
return surfacePos( positionGeometry, params );
|
|
29
29
|
|
|
30
30
|
} );
|
|
31
31
|
|
|
@@ -35,7 +35,7 @@ rotator.normal = Fn( ( params ) => {
|
|
|
35
35
|
|
|
36
36
|
var eps = 0.01;
|
|
37
37
|
|
|
38
|
-
var position =
|
|
38
|
+
var position = positionGeometry,
|
|
39
39
|
normal = normalLocal.normalize().toVar(),
|
|
40
40
|
tangent = tangentLocal.normalize().mul( eps ).toVar(),
|
|
41
41
|
bitangent = cross( normal, tangent ).normalize().mul( eps ).toVar();
|
package/src/rough-clay.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
// TSL-Textures:
|
|
2
|
+
// TSL-Textures: Rough clay
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
import { cross, exp, Fn, mx_worley_noise_float, normalLocal,
|
|
6
|
+
import { cross, exp, Fn, mx_worley_noise_float, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView } from 'three/tsl';
|
|
7
7
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
8
|
|
|
9
9
|
|
|
@@ -23,7 +23,7 @@ var roughClay = Fn( ( params ) => {
|
|
|
23
23
|
|
|
24
24
|
var bump = params.bump.div( 50 ).toVar();
|
|
25
25
|
|
|
26
|
-
var position =
|
|
26
|
+
var position = positionGeometry.mul( exp( params.scale.div( 2 ) ) ).add( params.seed.sin().mul( 10 ) ).toVar( ),
|
|
27
27
|
normal = normalLocal.normalize().toVar(),
|
|
28
28
|
tangent = tangentLocal.normalize().mul( eps ).toVar(),
|
|
29
29
|
bitangent = cross( normal, tangent ).normalize().mul( eps ).toVar();
|
|
@@ -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/rust.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
|
-
import { exp, Fn, Loop, mix,
|
|
7
|
+
import { exp, Fn, Loop, mix, positionGeometry } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var _rust = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale.div( 4 ).add( -1 ) ) ).add( params.seed ).toVar( );
|
|
15
15
|
|
|
16
16
|
var amount = params.amount.mul( noise( pos.mul( params.amount.div( 2 ).add( 4 ) ) ).add( 4 ) ).toVar();
|
|
17
17
|
|
|
@@ -37,7 +37,7 @@ var rust = Fn( ( params )=>{
|
|
|
37
37
|
|
|
38
38
|
var k = _rust( params ).mul( 1.25 ).pow( 0.5 );
|
|
39
39
|
|
|
40
|
-
var pos =
|
|
40
|
+
var pos = positionGeometry.mul( exp( params.scale.add( params.noiseScale.mul( 3 ), 2 ) ) );
|
|
41
41
|
|
|
42
42
|
k.addAssign( params.noise.mul( noise( pos ).abs().add( 0.1 ).pow( 2 ) ) );
|
|
43
43
|
|
package/src/satin.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { abs, exp, Fn, mix,
|
|
7
|
+
import { abs, exp, Fn, mix, positionGeometry, pow, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var satin = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.toVar( );
|
|
15
15
|
|
|
16
16
|
var scale = exp( params.scale.div( 3 ) ).toVar();
|
|
17
17
|
|
package/src/scaler.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Vector2, Vector3 } from "three";
|
|
7
|
-
import { cross, Fn, mix, normalLocal,
|
|
7
|
+
import { cross, Fn, mix, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView, vec3, vec4 } from 'three/tsl';
|
|
8
8
|
import { matScale, matTrans, selectPlanar } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -25,7 +25,7 @@ var surfacePos = Fn( ([ pos, params ])=>{
|
|
|
25
25
|
|
|
26
26
|
var scaler = Fn( ( params )=>{
|
|
27
27
|
|
|
28
|
-
return surfacePos(
|
|
28
|
+
return surfacePos( positionGeometry, params );
|
|
29
29
|
|
|
30
30
|
} );
|
|
31
31
|
|
|
@@ -35,7 +35,7 @@ scaler.normal = Fn( ( params ) => {
|
|
|
35
35
|
|
|
36
36
|
var eps = 0.01;
|
|
37
37
|
|
|
38
|
-
var position =
|
|
38
|
+
var position = positionGeometry,
|
|
39
39
|
normal = normalLocal.normalize().toVar(),
|
|
40
40
|
tangent = tangentLocal.normalize().mul( eps ).toVar(),
|
|
41
41
|
bitangent = cross( normal, tangent ).normalize().mul( eps ).toVar();
|
package/src/scepter-head.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { abs, add, cos, floor, Fn, max, mix, mod, mul,
|
|
7
|
+
import { abs, add, cos, floor, Fn, max, mix, mod, mul, positionGeometry, remapClamp, sign, tan, vec3 } from 'three/tsl';
|
|
8
8
|
import { hsl, noise, remapExp, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var scepterHead = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry;
|
|
15
15
|
|
|
16
16
|
var fx = pos.x.mul( remapExp( params.xFactor, 0, 100, 1.35, 30 ) ).toVar( ),
|
|
17
17
|
fy = pos.y.mul( remapExp( params.yFactor, 0, 100, 1.35, 30 ) ).toVar( ),
|
package/src/scream.js
CHANGED
|
@@ -4,18 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { add, cos, exp, Fn, mix,
|
|
7
|
+
import { add, cos, exp, Fn, mix, positionGeometry, sin } from 'three/tsl';
|
|
8
8
|
import { hsl, noise, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var scream = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed ).toVar( );
|
|
15
15
|
|
|
16
16
|
var k = noise( add( sin( pos.xyz ), cos( pos.yzx ) ) );
|
|
17
17
|
|
|
18
|
-
pos.assign(
|
|
18
|
+
pos.assign( positionGeometry.mul( exp( params.scale ).mul( k ) ).add( params.seed ) );
|
|
19
19
|
|
|
20
20
|
var k = noise( add( sin( pos.xyz ), cos( pos.yzx ) ).mul( 2 ) );
|
|
21
21
|
|
package/src/simplex-noise.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { clamp, exp, Fn, mix,
|
|
7
|
+
import { clamp, exp, Fn, mix, positionGeometry } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var simplexNoise = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale ) ).add( params.seed );
|
|
15
15
|
|
|
16
16
|
var k = clamp( 0, 1, noise( pos ).mul( 0.5, exp( params.contrast ) ).add( 0.5, params.balance ) );
|
|
17
17
|
|
package/src/stars.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { abs, add, exp, Fn, mix,
|
|
7
|
+
import { abs, add, exp, Fn, mix, positionGeometry, select } from 'three/tsl';
|
|
8
8
|
import { hsl, noise, toHsl } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var stars = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale.div( 2 ).add( 3 ) ) ).add( params.seed ).toVar( );
|
|
15
15
|
|
|
16
16
|
var k = abs( noise( pos ) ).pow( 10 ).mul( 10 );
|
|
17
17
|
|
package/src/supersphere.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
import { cross, float, Fn, normalLocal,
|
|
6
|
+
import { cross, float, Fn, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView } from 'three/tsl';
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -25,7 +25,7 @@ var surfacePos = Fn( ([ pos, params ])=>{
|
|
|
25
25
|
|
|
26
26
|
var supersphere = Fn( ( params )=>{
|
|
27
27
|
|
|
28
|
-
return surfacePos(
|
|
28
|
+
return surfacePos( positionGeometry, params );
|
|
29
29
|
|
|
30
30
|
} );
|
|
31
31
|
|
|
@@ -35,7 +35,7 @@ supersphere.normal = Fn( ( params ) => {
|
|
|
35
35
|
|
|
36
36
|
var eps = 0.01;
|
|
37
37
|
|
|
38
|
-
var position =
|
|
38
|
+
var position = positionGeometry,
|
|
39
39
|
normal = normalLocal.normalize().toVar(),
|
|
40
40
|
tangent = tangentLocal.normalize().mul( eps ).toVar(),
|
|
41
41
|
bitangent = cross( normal, tangent ).normalize().mul( eps ).toVar();
|
package/src/tiger-fur.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { exp, Fn, mix,
|
|
7
|
+
import { exp, Fn, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ import { noise } from 'tsl-textures/tsl-utils.js';
|
|
|
12
12
|
var tigerFur = Fn( ( params )=>{
|
|
13
13
|
|
|
14
14
|
var scale = params.scale.div( 2 ).add( 1 ).toVar();
|
|
15
|
-
var pos =
|
|
15
|
+
var pos = positionGeometry.mul( exp( scale ) ).add( params.seed ).toVar( );
|
|
16
16
|
|
|
17
17
|
var len = params.length.add( 5 ).reciprocal().toVar();
|
|
18
18
|
var hairs = params.hairs.mul( 0.3 ).toVar();
|
|
@@ -20,7 +20,7 @@ var tigerFur = Fn( ( params )=>{
|
|
|
20
20
|
k = k.add( noise( pos.mul( vec3( 25, 1, 1 ) ) ).add( 1 ).mul( hairs ) );
|
|
21
21
|
k = k.add( params.strength.sub( 0.5 ) ).smoothstep( params.blur.negate(), params.blur ).oneMinus();
|
|
22
22
|
|
|
23
|
-
var n =
|
|
23
|
+
var n = positionGeometry.y.add( hairs.sub( 0.5 ) ).smoothstep( -1, 0.5 );
|
|
24
24
|
|
|
25
25
|
return mix( params.bottomColor, params.color, n ).mul( k );
|
|
26
26
|
|
package/src/translator.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Vector2, Vector3 } from "three";
|
|
7
|
-
import { cross, Fn, normalLocal,
|
|
7
|
+
import { cross, Fn, normalLocal, positionGeometry, sub, tangentLocal, transformNormalToView, vec4 } from 'three/tsl';
|
|
8
8
|
import { matTrans, selectPlanar } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -23,7 +23,7 @@ var surfacePos = Fn( ([ pos, params ])=>{
|
|
|
23
23
|
|
|
24
24
|
var translator = Fn( ( params )=>{
|
|
25
25
|
|
|
26
|
-
return surfacePos(
|
|
26
|
+
return surfacePos( positionGeometry, params );
|
|
27
27
|
|
|
28
28
|
} );
|
|
29
29
|
|
|
@@ -33,7 +33,7 @@ translator.normal = Fn( ( params ) => {
|
|
|
33
33
|
|
|
34
34
|
var eps = 0.01;
|
|
35
35
|
|
|
36
|
-
var position =
|
|
36
|
+
var position = positionGeometry,
|
|
37
37
|
normal = normalLocal.normalize().toVar(),
|
|
38
38
|
tangent = tangentLocal.normalize().mul( eps ).toVar(),
|
|
39
39
|
bitangent = cross( normal, tangent ).normalize().mul( eps ).toVar();
|
package/src/tsl-utils.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
import { add, cos, cross, dFdx, dFdy, float, Fn, If, log2, mat4, max, min, mul,
|
|
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
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
|
|
|
@@ -349,7 +349,7 @@ const selectPlanar = Fn( ([ pos, selAngles, selCenter, selWidth ])=>{
|
|
|
349
349
|
const overlayPlanar = Fn( ( params )=>{
|
|
350
350
|
|
|
351
351
|
var zone = selectPlanar(
|
|
352
|
-
|
|
352
|
+
positionGeometry,
|
|
353
353
|
params.selectorAngles,
|
|
354
354
|
params.selectorCenter,
|
|
355
355
|
params.selectorWidth
|
package/src/voronoi-cells.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
|
-
import { exp, float, Fn, If, Loop, mix,
|
|
7
|
+
import { exp, float, Fn, If, Loop, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -18,7 +18,7 @@ var cellCenter = Fn( ([ cell ])=>{
|
|
|
18
18
|
|
|
19
19
|
var voronoiCells = Fn( ( params )=>{
|
|
20
20
|
|
|
21
|
-
var pos =
|
|
21
|
+
var pos = positionGeometry.mul( exp( params.scale.div( 2 ).add( 0.5 ) ) ).add( params.seed ).toVar( );
|
|
22
22
|
|
|
23
23
|
var midCell = pos.round().toVar();
|
|
24
24
|
|
package/src/water-drops.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
import { cos, cross, exp, Fn, normalLocal,
|
|
6
|
+
import { cos, cross, exp, Fn, normalLocal, positionGeometry, remap, sin, sub, tangentLocal, transformNormalToView, vec3 } from 'three/tsl';
|
|
7
7
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
8
8
|
|
|
9
9
|
|
|
@@ -22,7 +22,7 @@ var waterDrops = Fn( ( params ) => {
|
|
|
22
22
|
|
|
23
23
|
var eps = 0.001;
|
|
24
24
|
|
|
25
|
-
var position =
|
|
25
|
+
var position = positionGeometry.mul( exp( params.scale.div( 1 ).add( 1 ) ) ).toVar( ),
|
|
26
26
|
normal = normalLocal.normalize().toVar(),
|
|
27
27
|
tangent = tangentLocal.normalize().mul( eps ).toVar(),
|
|
28
28
|
bitangent = cross( normal, tangent ).normalize().mul( eps ).toVar();
|
package/src/watermelon.js
CHANGED
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
|
-
import { equirectUV, exp, Fn, mix,
|
|
7
|
+
import { equirectUV, exp, Fn, mix, positionGeometry, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var watermelon = Fn( ( params )=>{
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.mul( exp( params.scale.div( 4 ).add( 2 ) ) ).add( params.seed ).toVar( );
|
|
15
15
|
|
|
16
|
-
var uv = equirectUV(
|
|
16
|
+
var uv = equirectUV( positionGeometry.normalize() ).toVar(),
|
|
17
17
|
a = uv.x.mul( params.stripes.round(), 2*Math.PI ).add( noise( pos.mul( vec3( 1, 0, 1 ) ) ).mul( 2 ) );
|
|
18
18
|
|
|
19
19
|
var k = a.sin().add( 0.5 ).div( 2 ).mul( uv.y.remap( 0, 1, -Math.PI, Math.PI ).cos().add( 1.2 ).clamp( 0, 1 ) )
|
package/src/wood.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from 'three';
|
|
7
|
-
import { add, cos, exp, float, Fn, Loop, mix, mul,
|
|
7
|
+
import { add, cos, exp, float, Fn, Loop, mix, mul, positionGeometry, radians, reciprocal, sin, sub, vec3 } from 'three/tsl';
|
|
8
8
|
import { noise } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -13,9 +13,9 @@ var wood = Fn( ( params ) => {
|
|
|
13
13
|
|
|
14
14
|
var angle = radians( params.angle ).toVar();
|
|
15
15
|
var posLocal = vec3(
|
|
16
|
-
sub(
|
|
17
|
-
add(
|
|
18
|
-
|
|
16
|
+
sub( positionGeometry.x.mul( cos( angle ) ), positionGeometry.y.mul( sin( angle ) ) ),
|
|
17
|
+
add( positionGeometry.x.mul( sin( angle ) ), positionGeometry.y.mul( cos( angle ) ) ),
|
|
18
|
+
positionGeometry.z,
|
|
19
19
|
).toVar();
|
|
20
20
|
|
|
21
21
|
|
package/src/zebra-lines.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import { Color } from "three";
|
|
7
|
-
import { acos, clamp, exp, Fn, mix,
|
|
7
|
+
import { acos, clamp, exp, Fn, mix, positionGeometry, sin } from 'three/tsl';
|
|
8
8
|
import { spherical } from 'tsl-textures/tsl-utils.js';
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var zebraLines = Fn( ( params ) => {
|
|
13
13
|
|
|
14
|
-
var pos =
|
|
14
|
+
var pos = positionGeometry.normalize().toVar( );
|
|
15
15
|
|
|
16
16
|
var dir = spherical( params.phi, params.theta ).toVar();
|
|
17
17
|
|