tsl-textures 1.7.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 +1 -1
- package/src/rough-clay.js +1 -1
- package/src/runny-eggs.js +96 -0
package/package.json
CHANGED
package/src/rough-clay.js
CHANGED
|
@@ -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 };
|