tsl-textures 2.1.2 → 2.2.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.
Files changed (45) hide show
  1. package/dist/cjs/tsl-textures.js +801 -537
  2. package/dist/cjs/tsl-textures.min.js +2 -2
  3. package/dist/tsl-textures.js +801 -538
  4. package/dist/tsl-textures.min.js +2 -2
  5. package/package.json +1 -1
  6. package/src/camouflage.js +20 -20
  7. package/src/cave-art.js +21 -20
  8. package/src/circles.js +20 -20
  9. package/src/clouds.js +26 -23
  10. package/src/concrete.js +17 -17
  11. package/src/cork.js +19 -19
  12. package/src/dalmatian-spots.js +21 -19
  13. package/src/dyson-sphere.js +20 -20
  14. package/src/entangled.js +19 -19
  15. package/src/fordite.js +14 -14
  16. package/src/gas-giant.js +21 -20
  17. package/src/grid.js +21 -21
  18. package/src/isolines.js +21 -20
  19. package/src/karst-rock.js +18 -18
  20. package/src/marble.js +20 -20
  21. package/src/neon-lights.js +22 -22
  22. package/src/photosphere.js +18 -18
  23. package/src/planet.js +31 -31
  24. package/src/polka-dots.js +20 -20
  25. package/src/processed-wood.js +22 -21
  26. package/src/protozoa.js +20 -19
  27. package/src/rotator.js +23 -23
  28. package/src/rough-clay.js +19 -17
  29. package/src/runny-eggs.js +27 -26
  30. package/src/rust.js +25 -24
  31. package/src/satin.js +18 -5
  32. package/src/scaler.js +23 -23
  33. package/src/scepter-head.js +19 -19
  34. package/src/scream.js +19 -5
  35. package/src/simplex-noise.js +20 -5
  36. package/src/stars.js +19 -19
  37. package/src/supersphere.js +17 -17
  38. package/src/tiger-fur.js +22 -5
  39. package/src/translator.js +22 -22
  40. package/src/tsl-utils.js +194 -3
  41. package/src/voronoi-cells.js +19 -19
  42. package/src/water-drops.js +18 -17
  43. package/src/watermelon.js +23 -23
  44. package/src/wood.js +20 -20
  45. package/src/zebra-lines.js +22 -22
@@ -1,4 +1,4 @@
1
- // TSL Textures v2.1.1
1
+ // TSL Textures v2.1.2
2
2
 
3
3
  'use strict';
4
4
 
@@ -538,9 +538,30 @@ function hideFallbackWarning( ) {
538
538
 
539
539
 
540
540
  // converts all numeric, color and vector properties to nodes
541
- function prepare( params ) {
541
+ function prepare( userParams, defaults ) {
542
542
 
543
- for ( var name of Object.keys( params ) ) {
543
+ var propertyNames = [];
544
+ for ( var item of userParams ) {
545
+
546
+ if ( item && typeof item === 'object' ) {
547
+
548
+ propertyNames = Object.keys( item );
549
+ break;
550
+
551
+ }
552
+
553
+ }
554
+
555
+ var params = { ...defaults };
556
+
557
+ for ( var key of propertyNames ) {
558
+
559
+ if ( typeof userParams[ key ] !== 'undefined' )
560
+ params[ key ] = userParams[ key ];
561
+
562
+ }
563
+
564
+ for ( var name of Object.keys( params ) ) {
544
565
 
545
566
  if ( typeof params[ name ] === 'number' )
546
567
  params[ name ] = tsl.float( params[ name ]);
@@ -564,11 +585,196 @@ function noised( pos, scale=1, octave=1, seed=0 ) {
564
585
 
565
586
  return tsl.mx_noise_float( pos.mul( scale, octave ).add( seed ) );
566
587
 
567
- }
588
+ }
589
+
590
+
591
+
592
+ // a shim (proposed by Grok) to recover from a change of how Fn
593
+ // is proxied since Three.js v0.180.0
594
+
595
+ // explanation from Grok:
596
+ /*
597
+ In 0.179.0, TSL.Fn likely returned a plain function, allowing a.defaults
598
+ to work without Proxy interference. In 0.180.0, the Proxy wrapping an FnNode
599
+ instance blocks defaults access (returns undefined) and requires specific FnNode
600
+ behavior, making the wrapper incompatible.
601
+
602
+ Solutions to Fix the Error and Access a.defaultsWe need a solution that:
603
+
604
+ * Makes a.defaults directly accessible.
605
+ * Preserves TSL compatibility by ensuring the object passed to TSL behaves
606
+ like a TSL.Fn Proxy.
607
+ * Avoids separate defaults variables.
608
+ * Mimics the 0.179.0 API where a.defaults worked.
609
+
610
+ Given the error, direct property access on the TSL.Fn Proxy (e.g., Object.defineProperty(a, 'defaults', {...})) fails because the get trap
611
+ returns undefined for unknown properties on FnNode. The non-Proxy wrapper
612
+ breaks TSL, so let’s try a refined approach that balances compatibility and
613
+ accessibility.1. Proxy Wrapper with FnNode PrototypeInstead of a non-Proxy
614
+ wrapper, create a Proxy that mimics TSL.Fn but stores defaults separately to
615
+ bypass FnNode’s get behavior. To avoid breaking TSL, ensure the Proxy’s target
616
+ has the FnNode prototype.
617
+
618
+ Why This Might Work:
619
+
620
+ * The Proxy’s target inherits the FnNode prototype (via fn.call), making it
621
+ appear more like the original TSL.Fn Proxy to TSL’s checks.
622
+ * defaults is stored in a Map, bypassing FnNode’s get trap that returns
623
+ undefined.
624
+ * a.fn exposes the original TSL.Fn Proxy for TSL operations.
625
+ * Function calls (a(...)) are forwarded to the original Proxy.
626
+ * Matches Object.getOwnPropertyDescriptor behavior.
627
+
628
+ */
629
+
630
+ function TSLFn( jsFunc, defaults, layout = null ) {
631
+
632
+ var opacity = null;
633
+ var roughness = null;
634
+ var normal = null;
635
+
636
+ const fn = tsl.Fn( jsFunc, layout );
637
+ const customProps = new Map();
638
+ customProps.set( 'defaults', defaults );
639
+ customProps.set( 'opacity', opacity );
640
+ customProps.set( 'roughness', roughness );
641
+ customProps.set( 'normal', normal );
642
+
643
+ // Create a target with FnNode prototype to mimic TSL.Fn
644
+ const target = function () {};
645
+
646
+ Object.setPrototypeOf( target, Object.getPrototypeOf( fn.call ) ); // Inherit FnNode prototype
647
+
648
+ return new Proxy( target, {
649
+ get( target, prop, receiver ) {
650
+
651
+ if ( prop === 'defaults' ) {
652
+
653
+ return customProps.get( 'defaults' );
654
+
655
+ }
656
+
657
+ if ( prop === 'opacity' ) {
658
+
659
+ return customProps.get( 'opacity' );
660
+
661
+ }
662
+
663
+ if ( prop === 'roughness' ) {
664
+
665
+ return customProps.get( 'roughness' );
666
+
667
+ }
668
+
669
+ if ( prop === 'normal' ) {
670
+
671
+ return customProps.get( 'normal' );
672
+
673
+ }
674
+
675
+ if ( prop === 'fn' ) {
676
+
677
+ return fn; // Expose original TSL.Fn Proxy
678
+
679
+ }
680
+
681
+ return Reflect.get( fn, prop, receiver ); // Forward to original Proxy
568
682
 
569
- var camouflage = tsl.Fn( ( params )=>{
683
+ },
684
+ set( target, prop, value, receiver ) {
685
+
686
+ if ( prop === 'defaults' ) {
687
+
688
+ customProps.set( 'defaults', value );
689
+ return true;
690
+
691
+ }
692
+
693
+ if ( prop === 'opacity' ) {
694
+
695
+ customProps.set( 'opacity', value );
696
+ return true;
697
+
698
+ }
699
+
700
+ if ( prop === 'roughness' ) {
701
+
702
+ customProps.set( 'roughness', value );
703
+ return true;
704
+
705
+ }
706
+
707
+ if ( prop === 'normal' ) {
708
+
709
+ customProps.set( 'normal', value );
710
+ return true;
711
+
712
+ }
713
+
714
+ return Reflect.set( fn, prop, value, receiver );
715
+
716
+ },
717
+ apply( target, thisArg, args ) {
718
+
719
+ return Reflect.apply( fn, thisArg, args ); // Delegate calls to original Proxy
720
+
721
+ },
722
+ getOwnPropertyDescriptor( target, prop ) {
723
+
724
+ if ( prop === 'defaults' ) {
725
+
726
+ return {
727
+ value: customProps.get( 'defaults' ),
728
+ writable: true,
729
+ enumerable: true,
730
+ configurable: true,
731
+ };
732
+
733
+ }
734
+
735
+ if ( prop === 'opacity' ) {
736
+
737
+ Reflect.getOwnPropertyDescriptor( opacity, prop );
738
+
739
+ }
740
+
741
+ if ( prop === 'roughness' ) {
742
+
743
+ Reflect.getOwnPropertyDescriptor( roughness, prop );
744
+
745
+ }
746
+
747
+ if ( prop === 'normal' ) {
748
+
749
+ Reflect.getOwnPropertyDescriptor( normal, prop );
750
+
751
+ }
752
+
753
+ return Reflect.getOwnPropertyDescriptor( fn, prop );
754
+
755
+ }
756
+ } );
757
+
758
+ } // TSLFn
759
+
760
+ var defaults$C = {
761
+ $name: 'Camouflage',
762
+
763
+ scale: 2,
764
+
765
+ colorA: new three.Color( 0xc2bea8 ),
766
+ colorB: new three.Color( 0x9c895e ),
767
+ colorC: new three.Color( 0x92a375 ),
768
+ colorD: new three.Color( 0x717561 ),
769
+
770
+ seed: 0,
771
+ };
772
+
570
773
 
571
- params = prepare( { ...camouflage.defaults, ...params } );
774
+
775
+ var camouflage = TSLFn( ( params )=>{
776
+
777
+ params = prepare( params, defaults$C );
572
778
 
573
779
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale ) ).add( params.seed ).toVar( );
574
780
 
@@ -601,26 +807,26 @@ var camouflage = tsl.Fn( ( params )=>{
601
807
 
602
808
  return color;
603
809
 
604
- } );
810
+ }, defaults$C );
811
+
812
+ var defaults$B = {
813
+ $name: 'Cave art',
605
814
 
815
+ scale: 2,
816
+ thinness: 2,
817
+ noise: 0.3,
606
818
 
819
+ color: new three.Color( 0xD34545 ),
820
+ background: new three.Color( 0xFFF8F0 ),
607
821
 
608
- camouflage.defaults = {
609
- $name: 'Camouflage',
822
+ seed: 0,
823
+ };
610
824
 
611
- scale: 2,
612
825
 
613
- colorA: new three.Color( 0xc2bea8 ),
614
- colorB: new three.Color( 0x9c895e ),
615
- colorC: new three.Color( 0x92a375 ),
616
- colorD: new three.Color( 0x717561 ),
617
826
 
618
- seed: 0,
619
- };
620
-
621
- var caveArt = tsl.Fn( ( params ) => {
827
+ var caveArt = TSLFn( ( params ) => {
622
828
 
623
- params = prepare( { ...caveArt.defaults, ...params } );
829
+ params = prepare( params, defaults$B );
624
830
 
625
831
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale ) ).add( params.seed ).toVar( );
626
832
 
@@ -644,26 +850,26 @@ var caveArt = tsl.Fn( ( params ) => {
644
850
 
645
851
  return tsl.mix( params.background, params.color, k );
646
852
 
647
- } );
853
+ }, defaults$B );
854
+
855
+ var defaults$A = {
856
+ $name: 'Circles',
648
857
 
858
+ scale: 2,
859
+ variety: 1,
649
860
 
861
+ color: new three.Color( 0xF0E0D0 ),
650
862
 
651
- caveArt.defaults = {
652
- $name: 'Cave art',
863
+ flat: 0,
653
864
 
654
- scale: 2,
655
- thinness: 2,
656
- noise: 0.3,
865
+ seed: 0,
866
+ };
657
867
 
658
- color: new three.Color( 0xD34545 ),
659
- background: new three.Color( 0xFFF8F0 ),
660
868
 
661
- seed: 0,
662
- };
663
-
664
- var circles = tsl.Fn( ( params ) => {
665
869
 
666
- params = prepare( { ...circles.defaults, ...params } );
870
+ var circles = TSLFn( ( params ) => {
871
+
872
+ params = prepare( params, defaults$A );
667
873
 
668
874
  var pos = tsl.select( params.flat, tsl.positionGeometry, tsl.positionGeometry.normalize() );
669
875
 
@@ -693,28 +899,25 @@ var circles = tsl.Fn( ( params ) => {
693
899
 
694
900
  return hsl( huei.add( huef ).div( 10 ), HSL.y, HSL.z );
695
901
 
696
- } );
697
-
902
+ }, defaults$A );
903
+
904
+ var defaults$z = {
905
+ $name: 'Clouds',
698
906
 
907
+ scale: 2,
908
+ density: 0.5,
909
+ opacity: 1,
699
910
 
700
- circles.defaults = {
701
- $name: 'Circles',
911
+ color: new three.Color( 0xFFFFFF ),
912
+ subcolor: new three.Color( 0xA0A0B0 ),
702
913
 
703
- scale: 2,
704
- variety: 1,
914
+ seed: 0,
915
+ };
705
916
 
706
- color: new three.Color( 0xF0E0D0 ),
707
917
 
708
- flat: 0,
709
918
 
710
- seed: 0,
711
- };
712
-
713
919
  var _clouds = tsl.Fn( ( params ) => {
714
920
 
715
- // prepare parameters
716
- params = prepare( { ...clouds.defaults, ...params } );
717
-
718
921
  const pos = tsl.positionGeometry;
719
922
  const scale = tsl.exp( params.scale.div( 1.5 ).sub( 0.5 ) );
720
923
 
@@ -737,35 +940,39 @@ var _clouds = tsl.Fn( ( params ) => {
737
940
 
738
941
 
739
942
 
740
- var clouds = tsl.Fn( ( params ) => {
741
-
742
- return _clouds( params ).rgb;
943
+ var clouds = TSLFn( ( params ) => {
743
944
 
744
- } );
945
+ // prepare parameters
946
+ params = prepare( params, defaults$z );
745
947
 
948
+ return _clouds( params ).rgb;
746
949
 
950
+ }, defaults$z );
747
951
 
748
- clouds.opacity = tsl.Fn( ( params ) => {
749
952
 
750
- return _clouds( params ).a;
751
953
 
752
- } );
954
+ clouds.opacity = TSLFn( ( params ) => {
753
955
 
956
+ // prepare parameters
957
+ params = prepare( params, defaults$z );
754
958
 
959
+ return _clouds( params ).a;
755
960
 
756
- clouds.defaults = {
757
- $name: 'Clouds',
961
+ }, defaults$z );
962
+
963
+ var defaults$y = {
964
+ $name: 'Concrete',
965
+ $normalNode: true,
758
966
 
759
967
  scale: 2,
760
968
  density: 0.5,
761
- opacity: 1,
762
-
763
- color: new three.Color( 0xFFFFFF ),
764
- subcolor: new three.Color( 0xA0A0B0 ),
969
+ bump: 0.5,
765
970
 
766
971
  seed: 0,
767
- };
768
-
972
+ };
973
+
974
+
975
+
769
976
  var surfacePos$7 = tsl.Fn( ([ pos, normal, bump, density, seed ]) => {
770
977
 
771
978
  var k = tsl.mx_noise_float( pos.add( seed ) ).mul( 0.5 ).add( 0.5 );
@@ -776,9 +983,9 @@ var surfacePos$7 = tsl.Fn( ([ pos, normal, bump, density, seed ]) => {
776
983
  } );
777
984
 
778
985
 
779
- var concrete = tsl.Fn( ( params ) => {
986
+ var concrete = TSLFn( ( params ) => {
780
987
 
781
- params = prepare( { ...concrete.defaults, ...params } );
988
+ params = prepare( params, defaults$y );
782
989
 
783
990
  var eps = 0.001;
784
991
 
@@ -799,21 +1006,23 @@ var concrete = tsl.Fn( ( params ) => {
799
1006
 
800
1007
  return tsl.transformNormalToView( tsl.cross( dU, dV ).normalize() );
801
1008
 
802
- } );
1009
+ }, defaults$y );
1010
+
1011
+ var defaults$x = {
1012
+ $name: 'Cork',
803
1013
 
1014
+ scale: 1,
1015
+ straight: 1,
1016
+ noise: 0.3,
1017
+
1018
+ color: new three.Color( 0xfff0c0 ),
1019
+ background: new three.Color( 0xd08060 ),
804
1020
 
1021
+ seed: 0,
1022
+ };
805
1023
 
806
- concrete.defaults = {
807
- $name: 'Concrete',
808
- $normalNode: true,
809
1024
 
810
- scale: 2,
811
- density: 0.5,
812
- bump: 0.5,
813
1025
 
814
- seed: 0,
815
- };
816
-
817
1026
  var cellCenter$1 = tsl.Fn( ([ cell ])=>{
818
1027
 
819
1028
  return cell.add( vnoise( cell ) );
@@ -821,9 +1030,9 @@ var cellCenter$1 = tsl.Fn( ([ cell ])=>{
821
1030
  } );
822
1031
 
823
1032
 
824
- var cork = tsl.Fn( ( params )=>{
1033
+ var cork = TSLFn( ( params )=>{
825
1034
 
826
- params = prepare( { ...cork.defaults, ...params } );
1035
+ params = prepare( params, defaults$x );
827
1036
 
828
1037
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale.div( 1.5 ).add( 1 ) ) ).add( params.seed ).toVar( );
829
1038
 
@@ -868,26 +1077,26 @@ var cork = tsl.Fn( ( params )=>{
868
1077
 
869
1078
  return color;
870
1079
 
871
- } );
1080
+ }, defaults$x );
1081
+
1082
+ var defaults$w = {
1083
+ $name: 'Dalmatian spots',
1084
+ $width: 260,
872
1085
 
1086
+ scale: 2,
1087
+ density: 0.6,
873
1088
 
1089
+ color: new three.Color( 0xFFFFFF ),
1090
+ background: new three.Color( 0x000000 ),
874
1091
 
875
- cork.defaults = {
876
- $name: 'Cork',
1092
+ seed: 0,
1093
+ };
877
1094
 
878
- scale: 1,
879
- straight: 1,
880
- noise: 0.3,
881
1095
 
882
- color: new three.Color( 0xfff0c0 ),
883
- background: new three.Color( 0xd08060 ),
884
1096
 
885
- seed: 0,
886
- };
887
-
888
- var dalmatianSpots = tsl.Fn( ( params )=>{
1097
+ var dalmatianSpots = TSLFn( ( params )=>{
889
1098
 
890
- params = prepare( { ...dalmatianSpots.defaults, ...params } );
1099
+ params = prepare( params, defaults$w );
891
1100
 
892
1101
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale ) ).add( params.seed ).sub( 1000 ).toVar( );
893
1102
 
@@ -909,22 +1118,24 @@ var dalmatianSpots = tsl.Fn( ( params )=>{
909
1118
 
910
1119
  return tsl.mix( params.background, params.color, k.clamp( 0, 1 ) );
911
1120
 
912
- } );
913
-
914
-
915
- dalmatianSpots.defaults = {
916
- $name: 'Dalmatian spots',
917
- $width: 260,
1121
+ }, defaults$w );
1122
+
1123
+ var defaults$v = {
1124
+ $name: 'Dyson sphere',
918
1125
 
919
1126
  scale: 2,
920
- density: 0.6,
1127
+ complexity: 2,
921
1128
 
922
- color: new three.Color( 0xFFFFFF ),
923
- background: new three.Color( 0x000000 ),
1129
+ variation: 0,
1130
+
1131
+ color: new three.Color( 0xc0d0ff ),
1132
+ background: new three.Color( 0 ),
924
1133
 
925
1134
  seed: 0,
926
- };
927
-
1135
+ };
1136
+
1137
+
1138
+
928
1139
  var noisea = tsl.Fn( ([ pos ])=>{
929
1140
 
930
1141
  var p = pos.mul( 5**0.5 ).fract().toVar();
@@ -976,9 +1187,9 @@ var noiseg = tsl.Fn( ([ pos ])=>{
976
1187
 
977
1188
 
978
1189
 
979
- var dysonSphere = tsl.Fn( ( params )=>{
1190
+ var dysonSphere = TSLFn( ( params )=>{
980
1191
 
981
- params = prepare( { ...dysonSphere.defaults, ...params } );
1192
+ params = prepare( params, defaults$v );
982
1193
 
983
1194
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale.div( 2 ).add( 0.5 ) ) ).add( params.seed ).toVar( );
984
1195
 
@@ -994,27 +1205,25 @@ var dysonSphere = tsl.Fn( ( params )=>{
994
1205
 
995
1206
  return tsl.mix( params.background, params.color, res.x.add( 1 ).div( 5 ) );
996
1207
 
997
- } );
998
-
1208
+ }, defaults$v );
1209
+
1210
+ var defaults$u = {
1211
+ $name: 'Entangled',
999
1212
 
1213
+ scale: 2,
1214
+ density: 10,
1000
1215
 
1001
- dysonSphere.defaults = {
1002
- $name: 'Dyson sphere',
1216
+ color: new three.Color( 0x002040 ),
1217
+ background: new three.Color( 0xFFFFFF ),
1003
1218
 
1004
- scale: 2,
1005
- complexity: 2,
1219
+ seed: 0,
1220
+ };
1006
1221
 
1007
- variation: 0,
1008
1222
 
1009
- color: new three.Color( 0xc0d0ff ),
1010
- background: new three.Color( 0 ),
1011
1223
 
1012
- seed: 0,
1013
- };
1014
-
1015
- var entangled = tsl.Fn( ( params ) => {
1224
+ var entangled = TSLFn( ( params ) => {
1016
1225
 
1017
- params = prepare( { ...entangled.defaults, ...params } );
1226
+ params = prepare( params, defaults$u );
1018
1227
 
1019
1228
  var scale = tsl.exp( params.scale.div( 2 ) ).toVar( );
1020
1229
  var pos = tsl.positionGeometry.add( params.seed ).toVar( );
@@ -1033,25 +1242,20 @@ var entangled = tsl.Fn( ( params ) => {
1033
1242
 
1034
1243
  return tsl.mix( params.color, params.background, k );
1035
1244
 
1036
- } );
1037
-
1038
-
1039
-
1040
- entangled.defaults = {
1041
- $name: 'Entangled',
1042
-
1245
+ }, defaults$u );
1246
+
1247
+ var defaults$t = {
1248
+ $name: 'Fordite',
1043
1249
  scale: 2,
1044
- density: 10,
1250
+ color: new three.Color( 0, 0, 0 ),
1251
+ seed: 0,
1252
+ };
1045
1253
 
1046
- color: new three.Color( 0x002040 ),
1047
- background: new three.Color( 0xFFFFFF ),
1048
1254
 
1049
- seed: 0,
1050
- };
1051
-
1052
- var fordite = tsl.Fn( ( params ) => {
1053
1255
 
1054
- params = prepare( { ...fordite.defaults, ...params } );
1256
+ var fordite = TSLFn( ( params ) => {
1257
+
1258
+ params = prepare( params, defaults$t );
1055
1259
 
1056
1260
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale ) ).add( params.seed ).toVar( );
1057
1261
 
@@ -1069,20 +1273,27 @@ var fordite = tsl.Fn( ( params ) => {
1069
1273
  tsl.sin( tsl.mul( k, Math.PI, 4 ) ).mul( 0.5 ).add( 0.5 )
1070
1274
  ).add( params.color );
1071
1275
 
1072
- } );
1276
+ }, defaults$t );
1277
+
1278
+ var defaults$s = {
1279
+ $name: 'Gas giant',
1073
1280
 
1281
+ scale: 2,
1282
+ turbulence: 0.3,
1283
+ blur: 0.6,
1074
1284
 
1285
+ colorA: new three.Color( 0xFFF8F0 ),
1286
+ colorB: new three.Color( 0xF0E8B0 ),
1287
+ colorC: new three.Color( 0xAFA0D0 ),
1075
1288
 
1076
- fordite.defaults = {
1077
- $name: 'Fordite',
1078
- scale: 2,
1079
- color: new three.Color( 0, 0, 0 ),
1080
1289
  seed: 0,
1081
- };
1082
-
1083
- var gasGiant = tsl.Fn( ( params )=>{
1290
+ };
1291
+
1292
+
1084
1293
 
1085
- params = prepare( { ...gasGiant.defaults, ...params } );
1294
+ var gasGiant = TSLFn( ( params )=>{
1295
+
1296
+ params = prepare( params, defaults$s );
1086
1297
 
1087
1298
  var scale = params.scale.div( 2 ).add( 1 ).toVar();
1088
1299
  var pos = tsl.positionGeometry.mul( tsl.exp( scale ) ).add( params.seed ).toVar( );
@@ -1116,26 +1327,27 @@ var gasGiant = tsl.Fn( ( params )=>{
1116
1327
 
1117
1328
  return color.mul( k );
1118
1329
 
1119
- } );
1330
+ }, defaults$s );
1331
+
1332
+ var defaults$r = {
1333
+ $name: 'Grid',
1120
1334
 
1335
+ countU: 32,
1336
+ countV: 16,
1121
1337
 
1122
- gasGiant.defaults = {
1123
- $name: 'Gas giant',
1338
+ thinness: 0.8,
1124
1339
 
1125
- scale: 2,
1126
- turbulence: 0.3,
1127
- blur: 0.6,
1340
+ color: new three.Color( 0x000000 ),
1341
+ background: new three.Color( 0xFFFFFF ),
1128
1342
 
1129
- colorA: new three.Color( 0xFFF8F0 ),
1130
- colorB: new three.Color( 0xF0E8B0 ),
1131
- colorC: new three.Color( 0xAFA0D0 ),
1343
+ flat: 0,
1344
+ };
1132
1345
 
1133
- seed: 0,
1134
- };
1135
-
1136
- var grid = tsl.Fn( ( params ) => {
1137
1346
 
1138
- params = prepare( { ...grid.defaults, ...params } );
1347
+
1348
+ var grid = TSLFn( ( params ) => {
1349
+
1350
+ params = prepare( params, defaults$r );
1139
1351
 
1140
1352
  var aspect = tsl.select( params.flat, tsl.screenSize.x.div( tsl.screenSize.y ), 2 );
1141
1353
 
@@ -1157,27 +1369,27 @@ var grid = tsl.Fn( ( params ) => {
1157
1369
 
1158
1370
  return tsl.mix( params.background, params.color, k );
1159
1371
 
1160
- } );
1372
+ }, defaults$r );
1373
+
1374
+ var defaults$q = {
1375
+ $name: 'Isolines',
1161
1376
 
1377
+ scale: 2,
1378
+ density: 40,
1379
+ blur: 0.3,
1380
+ thinness: 0.6,
1162
1381
 
1382
+ color: new three.Color( 0xFFFFFF ),
1383
+ background: new three.Color( 0x000000 ),
1163
1384
 
1164
- grid.defaults = {
1165
- $name: 'Grid',
1385
+ seed: 0,
1386
+ };
1166
1387
 
1167
- countU: 32,
1168
- countV: 16,
1169
1388
 
1170
- thinness: 0.8,
1171
1389
 
1172
- color: new three.Color( 0x000000 ),
1173
- background: new three.Color( 0xFFFFFF ),
1174
-
1175
- flat: 0,
1176
- };
1177
-
1178
- var isolines = tsl.Fn( ( params )=>{
1390
+ var isolines = TSLFn( ( params )=>{
1179
1391
 
1180
- params = prepare( { ...isolines.defaults, ...params } );
1392
+ params = prepare( params, defaults$q );
1181
1393
 
1182
1394
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale ) ).add( params.seed ).toVar( );
1183
1395
 
@@ -1189,26 +1401,24 @@ var isolines = tsl.Fn( ( params )=>{
1189
1401
 
1190
1402
  return tsl.mix( params.color, params.background, k );
1191
1403
 
1192
- } );
1193
-
1194
-
1195
- isolines.defaults = {
1196
- $name: 'Isolines',
1404
+ }, defaults$q );
1405
+
1406
+ var defaults$p = {
1407
+ $name: 'Karst rock',
1197
1408
 
1198
1409
  scale: 2,
1199
- density: 40,
1200
- blur: 0.3,
1201
- thinness: 0.6,
1202
1410
 
1203
- color: new three.Color( 0xFFFFFF ),
1204
- background: new three.Color( 0x000000 ),
1411
+ color: new three.Color( 0xFFF4F0 ),
1412
+ background: new three.Color( 0xD0D0D0 ),
1205
1413
 
1206
1414
  seed: 0,
1207
- };
1208
-
1209
- var karstRock = tsl.Fn( ( params )=>{
1415
+ };
1416
+
1210
1417
 
1211
- params = prepare( { ...karstRock.defaults, ...params } );
1418
+
1419
+ var karstRock = TSLFn( ( params )=>{
1420
+
1421
+ params = prepare( params, defaults$p );
1212
1422
 
1213
1423
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale ) ).add( params.seed.sin().mul( 5 ) ).toVar( );
1214
1424
 
@@ -1221,24 +1431,26 @@ var karstRock = tsl.Fn( ( params )=>{
1221
1431
 
1222
1432
  return tsl.mix( params.background, params.color, k ).mul( k.pow( 0.1 ) );
1223
1433
 
1224
- } );
1434
+ }, defaults$p );
1435
+
1436
+ var defaults$o = {
1437
+ $name: 'Marble',
1225
1438
 
1439
+ scale: 1.2,
1440
+ thinness: 5,
1441
+ noise: 0.3,
1226
1442
 
1443
+ color: new three.Color( 0x4545D3 ),
1444
+ background: new three.Color( 0xF0F8FF ),
1227
1445
 
1228
- karstRock.defaults = {
1229
- $name: 'Karst rock',
1446
+ seed: 0,
1447
+ };
1230
1448
 
1231
- scale: 2,
1232
1449
 
1233
- color: new three.Color( 0xFFF4F0 ),
1234
- background: new three.Color( 0xD0D0D0 ),
1235
1450
 
1236
- seed: 0,
1237
- };
1238
-
1239
- var marble = tsl.Fn( ( params ) => {
1451
+ var marble = TSLFn( ( params ) => {
1240
1452
 
1241
- params = prepare( { ...marble.defaults, ...params } );
1453
+ params = prepare( params, defaults$o );
1242
1454
 
1243
1455
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale ) ).add( params.seed ).toVar( );
1244
1456
 
@@ -1276,26 +1488,28 @@ var marble = tsl.Fn( ( params ) => {
1276
1488
 
1277
1489
  return tsl.mix( params.background, params.color, k );
1278
1490
 
1279
- } );
1491
+ }, defaults$o );
1492
+
1493
+ var defaults$n = {
1494
+ $name: 'Neon Lights',
1280
1495
 
1496
+ scale: 1.5,
1497
+ thinness: 0.8,
1498
+ mode: 0, // 0=additive, 1=subtractive
1281
1499
 
1500
+ colorA: new three.Color( 0xFF0000 ),
1501
+ colorB: new three.Color( 0x00FF00 ),
1502
+ colorC: new three.Color( 0x0000FF ),
1503
+ background: new three.Color( 0x000000 ),
1282
1504
 
1283
- marble.defaults = {
1284
- $name: 'Marble',
1505
+ seed: 0,
1506
+ };
1285
1507
 
1286
- scale: 1.2,
1287
- thinness: 5,
1288
- noise: 0.3,
1289
1508
 
1290
- color: new three.Color( 0x4545D3 ),
1291
- background: new three.Color( 0xF0F8FF ),
1292
1509
 
1293
- seed: 0,
1294
- };
1295
-
1296
- var neonLights = tsl.Fn( ( params ) => {
1510
+ var neonLights = TSLFn( ( params ) => {
1297
1511
 
1298
- params = prepare( { ...neonLights.defaults, ...params } );
1512
+ params = prepare( params, defaults$n );
1299
1513
 
1300
1514
  var pos = tsl.positionGeometry;//.mul( exp( params.scale ) ).add( params.seed ).toVar( );
1301
1515
 
@@ -1339,28 +1553,24 @@ var neonLights = tsl.Fn( ( params ) => {
1339
1553
 
1340
1554
  return color;
1341
1555
 
1342
- } );
1556
+ }, defaults$n );
1557
+
1558
+ var defaults$m = {
1559
+ $name: 'Photosphere',
1343
1560
 
1561
+ scale: 2,
1344
1562
 
1563
+ color: new three.Color( 0xFFFF00 ),
1564
+ background: new three.Color( 0xFF0000 ),
1345
1565
 
1346
- neonLights.defaults = {
1347
- $name: 'Neon Lights',
1566
+ seed: 0,
1567
+ };
1348
1568
 
1349
- scale: 1.5,
1350
- thinness: 0.8,
1351
- mode: 0, // 0=additive, 1=subtractive
1352
1569
 
1353
- colorA: new three.Color( 0xFF0000 ),
1354
- colorB: new three.Color( 0x00FF00 ),
1355
- colorC: new three.Color( 0x0000FF ),
1356
- background: new three.Color( 0x000000 ),
1357
1570
 
1358
- seed: 0,
1359
- };
1360
-
1361
- var photosphere = tsl.Fn( ( params ) => {
1571
+ var photosphere = TSLFn( ( params ) => {
1362
1572
 
1363
- params = prepare( { ...photosphere.defaults, ...params } );
1573
+ params = prepare( params, defaults$m );
1364
1574
 
1365
1575
  var scale = tsl.exp( params.scale.add( 1 ) ).toVar( );
1366
1576
  var pos = tsl.positionGeometry.toVar( );
@@ -1379,24 +1589,37 @@ var photosphere = tsl.Fn( ( params ) => {
1379
1589
 
1380
1590
  return tsl.mix( params.background, params.color, k );
1381
1591
 
1382
- } );
1592
+ }, defaults$m );
1593
+
1594
+ var defaults$l = {
1595
+ $name: 'Planet',
1383
1596
 
1597
+ scale: 2,
1384
1598
 
1599
+ iterations: 5,
1385
1600
 
1386
- photosphere.defaults = {
1387
- $name: 'Photosphere',
1601
+ levelSea: 0.3,
1602
+ levelMountain: 0.7,
1388
1603
 
1389
- scale: 2,
1604
+ balanceWater: 0.3,
1605
+ balanceSand: 0.2,
1606
+ balanceSnow: 0.8,
1390
1607
 
1391
- color: new three.Color( 0xFFFF00 ),
1392
- background: new three.Color( 0xFF0000 ),
1608
+ colorDeep: new three.Color( 0x123a59 ).convertLinearToSRGB(), // SteelBlue
1609
+ colorShallow: new three.Color( 0x87CEEB ).convertLinearToSRGB(), // SkyBlue
1610
+ colorBeach: new three.Color( 0xFFFACD ).convertLinearToSRGB(), // LemonChiffon
1611
+ colorGrass: new three.Color( 0x3CB371 ).convertLinearToSRGB(), // MediumSeaGreen
1612
+ colorForest: new three.Color( 0x003000 ).convertLinearToSRGB(), // Dark green
1613
+ colorSnow: new three.Color( 0xF0FFFF ).convertLinearToSRGB(), // Azure
1393
1614
 
1394
1615
  seed: 0,
1395
- };
1396
-
1397
- var planet = tsl.Fn( ( params )=>{
1616
+ };
1398
1617
 
1399
- params = prepare( { ...planet.defaults, ...params } );
1618
+
1619
+
1620
+ var planet = TSLFn( ( params )=>{
1621
+
1622
+ params = prepare( params, defaults$l );
1400
1623
 
1401
1624
  var k = tsl.float( 0 ).toVar(),
1402
1625
  sum = tsl.float( 0 ).toVar(),
@@ -1483,41 +1706,30 @@ var planet = tsl.Fn( ( params )=>{
1483
1706
 
1484
1707
  return color;
1485
1708
 
1486
- } );
1487
-
1488
-
1489
-
1490
- planet.defaults = {
1491
- $name: 'Planet',
1709
+ }, defaults$l );
1710
+
1711
+ var defaults$k = {
1712
+ $name: 'Polka dots',
1492
1713
 
1493
- scale: 2,
1714
+ count: 2,
1715
+ size: 0.5,
1716
+ blur: 0.25,
1494
1717
 
1495
- iterations: 5,
1718
+ color: new three.Color( 0x000000 ),
1719
+ background: new three.Color( 0xFFFFFF ),
1496
1720
 
1497
- levelSea: 0.3,
1498
- levelMountain: 0.7,
1721
+ flat: 0,
1722
+ };
1499
1723
 
1500
- balanceWater: 0.3,
1501
- balanceSand: 0.2,
1502
- balanceSnow: 0.8,
1503
1724
 
1504
- colorDeep: new three.Color( 0x123a59 ).convertLinearToSRGB(), // SteelBlue
1505
- colorShallow: new three.Color( 0x87CEEB ).convertLinearToSRGB(), // SkyBlue
1506
- colorBeach: new three.Color( 0xFFFACD ).convertLinearToSRGB(), // LemonChiffon
1507
- colorGrass: new three.Color( 0x3CB371 ).convertLinearToSRGB(), // MediumSeaGreen
1508
- colorForest: new three.Color( 0x003000 ).convertLinearToSRGB(), // Dark green
1509
- colorSnow: new three.Color( 0xF0FFFF ).convertLinearToSRGB(), // Azure
1510
1725
 
1511
- seed: 0,
1512
- };
1513
-
1514
1726
  var goldenRatio = ( 1+5**0.5 )/2;
1515
1727
 
1516
1728
 
1517
1729
 
1518
- var polkaDots = tsl.Fn( ( params ) => {
1730
+ var polkaDots = TSLFn( ( params ) => {
1519
1731
 
1520
- params = prepare( { ...polkaDots.defaults, ...params } );
1732
+ params = prepare( params, defaults$k );
1521
1733
 
1522
1734
  var dist = tsl.float( 1 ).toVar();
1523
1735
 
@@ -1561,26 +1773,28 @@ var polkaDots = tsl.Fn( ( params ) => {
1561
1773
 
1562
1774
  return tsl.mix( params.color, params.background, k );
1563
1775
 
1564
- } );
1776
+ }, defaults$k );
1777
+
1778
+ var defaults$j = {
1779
+ $name: 'Processed wood',
1780
+ $width: 260,
1565
1781
 
1782
+ scale: 2,
1783
+ length: 4,
1784
+ strength: 0.3,
1785
+ angle: 0,
1566
1786
 
1787
+ color: new three.Color( 0x702020 ),
1788
+ background: new three.Color( 0xF0D0A0 ),
1567
1789
 
1568
- polkaDots.defaults = {
1569
- $name: 'Polka dots',
1790
+ seed: 0,
1791
+ };
1570
1792
 
1571
- count: 2,
1572
- size: 0.5,
1573
- blur: 0.25,
1574
1793
 
1575
- color: new three.Color( 0x000000 ),
1576
- background: new three.Color( 0xFFFFFF ),
1577
1794
 
1578
- flat: 0,
1579
- };
1580
-
1581
- var processedWood = tsl.Fn( ( params )=>{
1795
+ var processedWood = TSLFn( ( params )=>{
1582
1796
 
1583
- params = prepare( { ...processedWood.defaults, ...params } );
1797
+ params = prepare( params, defaults$j );
1584
1798
 
1585
1799
  var angle = tsl.radians( params.angle ).toVar();
1586
1800
  var posLocal = tsl.vec3(
@@ -1599,24 +1813,24 @@ var processedWood = tsl.Fn( ( params )=>{
1599
1813
 
1600
1814
  return tsl.mix( params.color, params.background, k );
1601
1815
 
1602
- } );
1816
+ }, defaults$j );
1817
+
1818
+ var defaults$i = {
1819
+ $name: 'Protozoa',
1603
1820
 
1821
+ scale: 1.5,
1822
+ fat: 0.7,
1823
+ amount: 0.4,
1604
1824
 
1605
- processedWood.defaults = {
1606
- $name: 'Processed wood',
1607
- $width: 260,
1825
+ color: new three.Color( 0xA0A0A0 ),
1826
+ subcolor: new three.Color( 0xE0E8FF ),
1827
+ background: new three.Color( 0xF0F8FF ),
1828
+
1829
+ seed: 0,
1830
+ };
1608
1831
 
1609
- scale: 2,
1610
- length: 4,
1611
- strength: 0.3,
1612
- angle: 0,
1613
1832
 
1614
- color: new three.Color( 0x702020 ),
1615
- background: new three.Color( 0xF0D0A0 ),
1616
1833
 
1617
- seed: 0,
1618
- };
1619
-
1620
1834
  var pnoise = tsl.Fn( ([ pos, fat ])=>{
1621
1835
 
1622
1836
  return tsl.mx_noise_float( pos ).mul( fat ).clamp( -3.14, 3.14 ).cos().add( 1 ).div( 2 );
@@ -1625,9 +1839,9 @@ var pnoise = tsl.Fn( ([ pos, fat ])=>{
1625
1839
 
1626
1840
 
1627
1841
 
1628
- var protozoa = tsl.Fn( ( params )=>{
1842
+ var protozoa = TSLFn( ( params )=>{
1629
1843
 
1630
- params = prepare( { ...protozoa.defaults, ...params } );
1844
+ params = prepare( params, defaults$i );
1631
1845
 
1632
1846
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale.sub( 1 ) ) ).add( params.seed ).toVar( );
1633
1847
 
@@ -1660,23 +1874,24 @@ var protozoa = tsl.Fn( ( params )=>{
1660
1874
 
1661
1875
  return tsl.mix( params.background, tsl.mix( params.color, params.subcolor, n2.mul( 0.1 ) ), n1 );
1662
1876
 
1663
- } );
1877
+ }, defaults$i );
1878
+
1879
+ var defaults$h = {
1880
+ $name: 'Rotator',
1881
+ $positionNode: true,
1882
+ $selectorPlanar: true,
1664
1883
 
1884
+ angles: new three.Vector3( 0.4, -0.6, 0 ),
1885
+ center: new three.Vector3( 0, 0, 0 ),
1665
1886
 
1666
- protozoa.defaults = {
1667
- $name: 'Protozoa',
1887
+ selectorCenter: new three.Vector3( 0, 0, 0 ),
1888
+ selectorAngles: new three.Vector2( 0, 0 ),
1889
+ selectorWidth: 2,
1890
+
1891
+ };
1668
1892
 
1669
- scale: 1.5,
1670
- fat: 0.7,
1671
- amount: 0.4,
1672
1893
 
1673
- color: new three.Color( 0xA0A0A0 ),
1674
- subcolor: new three.Color( 0xE0E8FF ),
1675
- background: new three.Color( 0xF0F8FF ),
1676
1894
 
1677
- seed: 0,
1678
- };
1679
-
1680
1895
  var surfacePos$6 = tsl.Fn( ([ pos, params ])=>{
1681
1896
 
1682
1897
  var zone = selectPlanar( pos, params.selectorAngles, params.selectorCenter, params.selectorWidth );
@@ -1691,19 +1906,19 @@ var surfacePos$6 = tsl.Fn( ([ pos, params ])=>{
1691
1906
 
1692
1907
 
1693
1908
 
1694
- var rotator = tsl.Fn( ( params )=>{
1909
+ var rotator = TSLFn( ( params )=>{
1695
1910
 
1696
- params = prepare( { ...rotator.defaults, ...params } );
1911
+ params = prepare( params, defaults$h );
1697
1912
 
1698
1913
  return surfacePos$6( tsl.positionGeometry, params );
1699
1914
 
1700
- } );
1915
+ }, defaults$h );
1701
1916
 
1702
1917
 
1703
1918
 
1704
- rotator.normal = tsl.Fn( ( params ) => {
1919
+ rotator.normal = TSLFn( ( params ) => {
1705
1920
 
1706
- params = prepare( { ...rotator.defaults, ...params } );
1921
+ params = prepare( params, defaults$h );
1707
1922
 
1708
1923
  var eps = 0.01;
1709
1924
 
@@ -1721,24 +1936,21 @@ rotator.normal = tsl.Fn( ( params ) => {
1721
1936
 
1722
1937
  return tsl.transformNormalToView( tsl.cross( dU, dV ).normalize() );
1723
1938
 
1724
- } );
1725
-
1939
+ }, defaults$h );
1940
+
1941
+ var defaults$g = {
1942
+ $name: 'Rough clay',
1943
+ $normalNode: true,
1726
1944
 
1945
+ scale: 2,
1946
+ bump: 0.5,
1947
+ curvature: 0.2,
1727
1948
 
1728
- rotator.defaults = {
1729
- $name: 'Rotator',
1730
- $positionNode: true,
1731
- $selectorPlanar: true,
1949
+ seed: 0,
1950
+ };
1732
1951
 
1733
- angles: new three.Vector3( 0.4, -0.6, 0 ),
1734
- center: new three.Vector3( 0, 0, 0 ),
1735
1952
 
1736
- selectorCenter: new three.Vector3( 0, 0, 0 ),
1737
- selectorAngles: new three.Vector2( 0, 0 ),
1738
- selectorWidth: 2,
1739
1953
 
1740
- };
1741
-
1742
1954
  var surfacePos$5 = tsl.Fn( ([ pos, normal, bump, curvature ]) => {
1743
1955
 
1744
1956
  var k1 = tsl.mx_worley_noise_float( pos.add( tsl.mx_noise_float( pos ).mul( curvature ) ) ).add( 0.8 ).pow( 5 ).toVar();
@@ -1748,9 +1960,11 @@ var surfacePos$5 = tsl.Fn( ([ pos, normal, bump, curvature ]) => {
1748
1960
 
1749
1961
  } );
1750
1962
 
1751
- var roughClay = tsl.Fn( ( params ) => {
1752
1963
 
1753
- params = prepare( { ...roughClay.defaults, ...params } );
1964
+
1965
+ var roughClay = TSLFn( ( params ) => {
1966
+
1967
+ params = prepare( params, defaults$g );
1754
1968
 
1755
1969
  var eps = 0.001;
1756
1970
 
@@ -1771,24 +1985,28 @@ var roughClay = tsl.Fn( ( params ) => {
1771
1985
  return tsl.transformNormalToView( tsl.cross( dU, dV ).normalize() );
1772
1986
 
1773
1987
 
1774
- } );
1775
-
1988
+ }, defaults$g );
1989
+
1990
+ var defaults$f = {
1991
+ $name: 'Runny eggs',
1776
1992
 
1993
+ scale: 1,
1777
1994
 
1778
- roughClay.defaults = {
1779
- $name: 'Rough clay',
1780
- $normalNode: true,
1995
+ sizeYolk: 0.2,
1996
+ sizeWhite: 0.7,
1781
1997
 
1782
- scale: 2,
1783
- bump: 0.5,
1784
- curvature: 0.2,
1998
+ colorYolk: new three.Color( 'orange' ),
1999
+ colorWhite: new three.Color( 'white' ),
2000
+ colorBackground: new three.Color( 'lightgray' ),
1785
2001
 
1786
2002
  seed: 0,
1787
- };
1788
-
1789
- var runnyEggs = tsl.Fn( ( params ) => {
2003
+ };
2004
+
2005
+
1790
2006
 
1791
- params = prepare( { ...runnyEggs.defaults, ...params } );
2007
+ var runnyEggs = TSLFn( ( params ) => {
2008
+
2009
+ params = prepare( params, defaults$f );
1792
2010
 
1793
2011
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale.div( 1 ) ) ).add( params.seed.sin().mul( 10 ) ).toVar( );
1794
2012
 
@@ -1801,7 +2019,7 @@ var runnyEggs = tsl.Fn( ( params ) => {
1801
2019
 
1802
2020
  return tsl.mix( params.colorBackground, tsl.mix( params.colorWhite, params.colorYolk, yolks ), whites );
1803
2021
 
1804
- } );
2022
+ }, defaults$f );
1805
2023
 
1806
2024
 
1807
2025
  var surfacePos$4 = tsl.Fn( ([ pos, normal, bump, sizeYolk, sizeWhite ]) => {
@@ -1817,9 +2035,9 @@ var surfacePos$4 = tsl.Fn( ([ pos, normal, bump, sizeYolk, sizeWhite ]) => {
1817
2035
  } );
1818
2036
 
1819
2037
 
1820
- runnyEggs.normal = tsl.Fn( ( params ) => {
2038
+ runnyEggs.normal = TSLFn( ( params ) => {
1821
2039
 
1822
- params = prepare( { ...runnyEggs.defaults, ...params } );
2040
+ params = prepare( params, defaults$f );
1823
2041
 
1824
2042
  var eps = 0.001;
1825
2043
  var bump = 0.05;
@@ -1841,12 +2059,12 @@ runnyEggs.normal = tsl.Fn( ( params ) => {
1841
2059
 
1842
2060
  return tsl.transformNormalToView( tsl.cross( dU, dV ).normalize() );
1843
2061
 
1844
- } );
2062
+ }, defaults$f );
1845
2063
 
1846
2064
 
1847
- runnyEggs.roughness = tsl.Fn( ( params ) => {
2065
+ runnyEggs.roughness = TSLFn( ( params ) => {
1848
2066
 
1849
- params = prepare( { ...runnyEggs.defaults, ...params } );
2067
+ params = prepare( params, defaults$f );
1850
2068
 
1851
2069
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale.div( 1 ) ) ).add( params.seed.sin().mul( 10 ) ).toVar( );
1852
2070
 
@@ -1857,24 +2075,26 @@ runnyEggs.roughness = tsl.Fn( ( params ) => {
1857
2075
 
1858
2076
  return yolks;
1859
2077
 
1860
- } );
2078
+ }, defaults$f );
2079
+
2080
+ var defaults$e = {
2081
+ $name: 'rust',
1861
2082
 
2083
+ scale: 2,
2084
+ iterations: 8,
2085
+ amount: -0.3,
2086
+ opacity: 0.5,
2087
+ noise: 0.5,
2088
+ noiseScale: 0.5,
1862
2089
 
1863
- runnyEggs.defaults = {
1864
- $name: 'Runny eggs',
2090
+ color: new three.Color( 0xC08000 ),
2091
+ background: new three.Color( 0x000020 ),
1865
2092
 
1866
- scale: 1,
2093
+ seed: 0,
2094
+ };
1867
2095
 
1868
- sizeYolk: 0.2,
1869
- sizeWhite: 0.7,
1870
2096
 
1871
- colorYolk: new three.Color( 'orange' ),
1872
- colorWhite: new three.Color( 'white' ),
1873
- colorBackground: new three.Color( 'lightgray' ),
1874
2097
 
1875
- seed: 0,
1876
- };
1877
-
1878
2098
  var _rust = tsl.Fn( ( params )=>{
1879
2099
 
1880
2100
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale.div( 4 ).add( -1 ) ) ).add( params.seed ).toVar( );
@@ -1899,9 +2119,9 @@ var _rust = tsl.Fn( ( params )=>{
1899
2119
  } );
1900
2120
 
1901
2121
 
1902
- var rust = tsl.Fn( ( params )=>{
2122
+ var rust = TSLFn( ( params )=>{
1903
2123
 
1904
- params = prepare( { ...rust.defaults, ...params } );
2124
+ params = prepare( params, defaults$e );
1905
2125
 
1906
2126
  var k = _rust( params ).mul( 1.25 ).pow( 0.5 );
1907
2127
 
@@ -1911,40 +2131,36 @@ var rust = tsl.Fn( ( params )=>{
1911
2131
 
1912
2132
  return tsl.mix( params.color, params.background, k );
1913
2133
 
1914
- } );
2134
+ }, defaults$e );
1915
2135
 
1916
2136
 
1917
2137
 
1918
- rust.opacity = tsl.Fn( ( params )=>{
2138
+ rust.opacity = TSLFn( ( params )=>{
1919
2139
 
1920
- params = prepare( { ...rust.defaults, ...params } );
2140
+ params = prepare( params, defaults$e );
1921
2141
 
1922
2142
  var k = _rust( params ).mul( params.opacity.add( 0.2 ) );
1923
2143
 
1924
2144
  return k.oneMinus();
1925
2145
 
1926
- } );
1927
-
1928
-
1929
- rust.defaults = {
1930
- $name: 'rust',
2146
+ }, defaults$e );
2147
+
2148
+ var defaults$d = {
2149
+ $name: 'Satin',
1931
2150
 
1932
2151
  scale: 2,
1933
- iterations: 8,
1934
- amount: -0.3,
1935
- opacity: 0.5,
1936
- noise: 0.5,
1937
- noiseScale: 0.5,
1938
2152
 
1939
- color: new three.Color( 0xC08000 ),
1940
- background: new three.Color( 0x000020 ),
2153
+ color: new three.Color( 0x7080FF ),
2154
+ background: new three.Color( 0x000050 ),
1941
2155
 
1942
2156
  seed: 0,
1943
- };
1944
-
1945
- var satin = tsl.Fn( ( params ) => {
2157
+ };
2158
+
1946
2159
 
1947
- params = prepare( { ...satin.defaults, ...params } );
2160
+
2161
+ var satin = TSLFn( ( params ) => {
2162
+
2163
+ params = prepare( params, defaults$d );
1948
2164
 
1949
2165
  var pos = tsl.positionGeometry.toVar( );
1950
2166
 
@@ -1962,21 +2178,37 @@ var satin = tsl.Fn( ( params ) => {
1962
2178
 
1963
2179
  return tsl.mix( params.background, params.color, k );
1964
2180
 
1965
- } );
2181
+ }, defaults$d );
2182
+
2183
+
2184
+
2185
+ satin.defaults = {
2186
+ $name: 'Satin',
2187
+
2188
+ scale: 2,
2189
+
2190
+ color: new three.Color( 0x7080FF ),
2191
+ background: new three.Color( 0x000050 ),
2192
+
2193
+ seed: 0,
2194
+ };
2195
+
2196
+ var defaults$c = {
2197
+ $name: 'Scaler',
2198
+ $positionNode: true,
2199
+ $selectorPlanar: true,
1966
2200
 
2201
+ scales: new three.Vector3( 0.01, 0.9, 1.7 ),
2202
+ center: new three.Vector3( 0, 0, 0 ),
1967
2203
 
2204
+ selectorCenter: new three.Vector3( 0, 0, 0 ),
2205
+ selectorAngles: new three.Vector2( 0, 0 ),
2206
+ selectorWidth: 2,
1968
2207
 
1969
- satin.defaults = {
1970
- $name: 'Satin',
2208
+ };
1971
2209
 
1972
- scale: 2,
1973
2210
 
1974
- color: new three.Color( 0x7080FF ),
1975
- background: new three.Color( 0x000050 ),
1976
2211
 
1977
- seed: 0,
1978
- };
1979
-
1980
2212
  var surfacePos$3 = tsl.Fn( ([ pos, params ])=>{
1981
2213
 
1982
2214
  var zone = selectPlanar( pos, params.selectorAngles, params.selectorCenter, params.selectorWidth );
@@ -1991,19 +2223,19 @@ var surfacePos$3 = tsl.Fn( ([ pos, params ])=>{
1991
2223
 
1992
2224
 
1993
2225
 
1994
- var scaler = tsl.Fn( ( params )=>{
2226
+ var scaler = TSLFn( ( params )=>{
1995
2227
 
1996
- params = prepare( { ...scaler.defaults, ...params } );
2228
+ params = prepare( params, defaults$c );
1997
2229
 
1998
2230
  return surfacePos$3( tsl.positionGeometry, params );
1999
2231
 
2000
- } );
2232
+ }, defaults$c );
2001
2233
 
2002
2234
 
2003
2235
 
2004
- scaler.normal = tsl.Fn( ( params ) => {
2236
+ scaler.normal = TSLFn( ( params ) => {
2005
2237
 
2006
- params = prepare( { ...scaler.defaults, ...params } );
2238
+ params = prepare( params, defaults$c );
2007
2239
 
2008
2240
  var eps = 0.01;
2009
2241
 
@@ -2021,27 +2253,25 @@ scaler.normal = tsl.Fn( ( params ) => {
2021
2253
 
2022
2254
  return tsl.transformNormalToView( tsl.cross( dU, dV ).normalize() );
2023
2255
 
2024
- } );
2025
-
2256
+ }, defaults$c );
2257
+
2258
+ var defaults$b = {
2259
+ $name: 'Scepter head',
2026
2260
 
2261
+ xFactor: 10,
2262
+ yFactor: 22,
2263
+ zFactor: 10,
2027
2264
 
2028
- scaler.defaults = {
2029
- $name: 'Scaler',
2030
- $positionNode: true,
2031
- $selectorPlanar: true,
2265
+ colorRim: new three.Color( 0xFFFFFF ),
2266
+ colorA: new three.Color( 0x70E0FF ),
2267
+ colorB: new three.Color( 0x3000FF ),
2268
+ };
2032
2269
 
2033
- scales: new three.Vector3( 0.01, 0.9, 1.7 ),
2034
- center: new three.Vector3( 0, 0, 0 ),
2035
2270
 
2036
- selectorCenter: new three.Vector3( 0, 0, 0 ),
2037
- selectorAngles: new three.Vector2( 0, 0 ),
2038
- selectorWidth: 2,
2039
2271
 
2040
- };
2041
-
2042
- var scepterHead = tsl.Fn( ( params ) => {
2272
+ var scepterHead = TSLFn( ( params ) => {
2043
2273
 
2044
- params = prepare( { ...scepterHead.defaults, ...params } );
2274
+ params = prepare( params, defaults$b );
2045
2275
 
2046
2276
  var pos = tsl.positionGeometry;
2047
2277
 
@@ -2077,25 +2307,25 @@ var scepterHead = tsl.Fn( ( params ) => {
2077
2307
 
2078
2308
  return tsl.mix( color1, color2, tsl.remapClamp( tsl.max( dx, tsl.max( dy, dz ) ), 55-10, 55+10 ) );
2079
2309
 
2080
- } );
2310
+ }, defaults$b );
2311
+
2312
+ var defaults$a = {
2313
+ $name: 'Scream',
2081
2314
 
2315
+ scale: 2,
2316
+ variety: 1,
2082
2317
 
2318
+ color: new three.Color( 0xF0F060 ),
2319
+ background: new three.Color( 0xD09090 ),
2083
2320
 
2084
- scepterHead.defaults = {
2085
- $name: 'Scepter head',
2321
+ seed: 0,
2322
+ };
2086
2323
 
2087
- xFactor: 10,
2088
- yFactor: 22,
2089
- zFactor: 10,
2090
2324
 
2091
- colorRim: new three.Color( 0xFFFFFF ),
2092
- colorA: new three.Color( 0x70E0FF ),
2093
- colorB: new three.Color( 0x3000FF ),
2094
- };
2095
-
2096
- var scream = tsl.Fn( ( params ) => {
2097
2325
 
2098
- params = prepare( { ...scream.defaults, ...params } );
2326
+ var scream = TSLFn( ( params ) => {
2327
+
2328
+ params = prepare( params, defaults$a );
2099
2329
 
2100
2330
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale ) ).add( params.seed ).toVar( );
2101
2331
 
@@ -2111,7 +2341,7 @@ var scream = tsl.Fn( ( params ) => {
2111
2341
 
2112
2342
  return hsl( tsl.add( HSL.x, params.variety.mul( tsl.sin( k.mul( Math.PI ) ) ).mul( 0.5 ) ), HSL.y, HSL.z );
2113
2343
 
2114
- } );
2344
+ }, defaults$a );
2115
2345
 
2116
2346
 
2117
2347
 
@@ -2127,9 +2357,24 @@ scream.defaults = {
2127
2357
  seed: 0,
2128
2358
  };
2129
2359
 
2130
- var simplexNoise = tsl.Fn( ( params ) => {
2360
+ var defaults$9 = {
2361
+ $name: 'Simplex noise',
2362
+
2363
+ scale: 2,
2364
+ balance: 0,
2365
+ contrast: 0,
2366
+
2367
+ color: new three.Color( 0xFFFFFF ),
2368
+ background: new three.Color( 0x000000 ),
2369
+
2370
+ seed: 0,
2371
+ };
2372
+
2131
2373
 
2132
- params = prepare( { ...simplexNoise.defaults, ...params } );
2374
+
2375
+ var simplexNoise = TSLFn( ( params ) => {
2376
+
2377
+ params = prepare( params, defaults$9 );
2133
2378
 
2134
2379
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale ) ).add( params.seed );
2135
2380
 
@@ -2137,7 +2382,7 @@ var simplexNoise = tsl.Fn( ( params ) => {
2137
2382
 
2138
2383
  return tsl.mix( params.background, params.color, k );
2139
2384
 
2140
- } );
2385
+ }, defaults$9 );
2141
2386
 
2142
2387
 
2143
2388
 
@@ -2154,9 +2399,24 @@ simplexNoise.defaults = {
2154
2399
  seed: 0,
2155
2400
  };
2156
2401
 
2157
- var stars = tsl.Fn( ( params ) => {
2402
+ var defaults$8 = {
2403
+ $name: 'Stars',
2404
+
2405
+ scale: 2,
2406
+ density: 2,
2407
+ variation: 0,
2408
+
2409
+ color: new three.Color( 0xfff5f0 ),
2410
+ background: new three.Color( 0x000060 ),
2411
+
2412
+ seed: 0,
2413
+ };
2414
+
2415
+
2416
+
2417
+ var stars = TSLFn( ( params ) => {
2158
2418
 
2159
- params = prepare( { ...stars.defaults, ...params } );
2419
+ params = prepare( params, defaults$8 );
2160
2420
 
2161
2421
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale.div( 2 ).add( 3 ) ) ).add( params.seed ).toVar( );
2162
2422
 
@@ -2170,23 +2430,18 @@ var stars = tsl.Fn( ( params ) => {
2170
2430
 
2171
2431
  return hsl( tsl.add( col.x, dS ), col.y, col.z );
2172
2432
 
2173
- } );
2174
-
2433
+ }, defaults$8 );
2434
+
2435
+ var defaults$7 = {
2436
+ $name: 'Supersphere',
2437
+ $positionNode: true,
2175
2438
 
2439
+ exponent: 3,
2176
2440
 
2177
- stars.defaults = {
2178
- $name: 'Stars',
2441
+ };
2179
2442
 
2180
- scale: 2,
2181
- density: 2,
2182
- variation: 0,
2183
2443
 
2184
- color: new three.Color( 0xfff5f0 ),
2185
- background: new three.Color( 0x000060 ),
2186
2444
 
2187
- seed: 0,
2188
- };
2189
-
2190
2445
  var surfacePos$2 = tsl.Fn( ([ pos, params ])=>{
2191
2446
 
2192
2447
  var exponent = tsl.float( 2 ).pow( params.exponent );
@@ -2203,19 +2458,19 @@ var surfacePos$2 = tsl.Fn( ([ pos, params ])=>{
2203
2458
 
2204
2459
 
2205
2460
 
2206
- var supersphere = tsl.Fn( ( params )=>{
2461
+ var supersphere = TSLFn( ( params )=>{
2207
2462
 
2208
- params = prepare( { ...supersphere.defaults, ...params } );
2463
+ params = prepare( params, defaults$7 );
2209
2464
 
2210
2465
  return surfacePos$2( tsl.positionGeometry, params );
2211
2466
 
2212
- } );
2467
+ }, defaults$7 );
2213
2468
 
2214
2469
 
2215
2470
 
2216
- supersphere.normal = tsl.Fn( ( params ) => {
2471
+ supersphere.normal = TSLFn( ( params ) => {
2217
2472
 
2218
- params = prepare( { ...supersphere.defaults, ...params } );
2473
+ params = prepare( params, defaults$7 );
2219
2474
 
2220
2475
  var eps = 0.01;
2221
2476
 
@@ -2233,21 +2488,28 @@ supersphere.normal = tsl.Fn( ( params ) => {
2233
2488
 
2234
2489
  return tsl.transformNormalToView( tsl.cross( dU, dV ).normalize() );
2235
2490
 
2236
- } );
2491
+ }, defaults$7 );
2492
+
2493
+ var defaults$6 = {
2494
+ $name: 'Tiger fur',
2237
2495
 
2496
+ scale: 2,
2497
+ length: 4,
2498
+ blur: 0.3,
2499
+ strength: 0.3,
2500
+ hairs: 0.5,
2238
2501
 
2502
+ color: new three.Color( 0xFFAA00 ),
2503
+ bottomColor: new three.Color( 0xFFFFEE ),
2239
2504
 
2240
- supersphere.defaults = {
2241
- $name: 'Supersphere',
2242
- $positionNode: true,
2505
+ seed: 0,
2506
+ };
2243
2507
 
2244
- exponent: 3,
2245
2508
 
2246
- };
2247
-
2248
- var tigerFur = tsl.Fn( ( params )=>{
2249
2509
 
2250
- params = prepare( { ...tigerFur.defaults, ...params } );
2510
+ var tigerFur = TSLFn( ( params )=>{
2511
+
2512
+ params = prepare( params, defaults$6 );
2251
2513
 
2252
2514
  var scale = params.scale.div( 2 ).add( 1 ).toVar();
2253
2515
  var pos = tsl.positionGeometry.mul( tsl.exp( scale ) ).add( params.seed ).toVar( );
@@ -2262,7 +2524,7 @@ var tigerFur = tsl.Fn( ( params )=>{
2262
2524
 
2263
2525
  return tsl.mix( params.bottomColor, params.color, n ).mul( k );
2264
2526
 
2265
- } );
2527
+ }, defaults$6 );
2266
2528
 
2267
2529
 
2268
2530
  tigerFur.defaults = {
@@ -2280,6 +2542,21 @@ tigerFur.defaults = {
2280
2542
  seed: 0,
2281
2543
  };
2282
2544
 
2545
+ var defaults$5 = {
2546
+ $name: 'Translator',
2547
+ $positionNode: true,
2548
+ $selectorPlanar: true,
2549
+
2550
+ distance: new three.Vector3( -0.5, 0, 0.2 ),
2551
+
2552
+ selectorCenter: new three.Vector3( 0, 0, 0 ),
2553
+ selectorAngles: new three.Vector2( 0, 0 ),
2554
+ selectorWidth: 0.7,
2555
+
2556
+ };
2557
+
2558
+
2559
+
2283
2560
  var surfacePos$1 = tsl.Fn( ([ pos, params ])=>{
2284
2561
 
2285
2562
  var zone = selectPlanar( pos, params.selectorAngles, params.selectorCenter, params.selectorWidth );
@@ -2292,19 +2569,19 @@ var surfacePos$1 = tsl.Fn( ([ pos, params ])=>{
2292
2569
 
2293
2570
 
2294
2571
 
2295
- var translator = tsl.Fn( ( params )=>{
2572
+ var translator = TSLFn( ( params )=>{
2296
2573
 
2297
- params = prepare( { ...translator.defaults, ...params } );
2574
+ params = prepare( params, defaults$5 );
2298
2575
 
2299
2576
  return surfacePos$1( tsl.positionGeometry, params );
2300
2577
 
2301
- } );
2578
+ }, defaults$5 );
2302
2579
 
2303
2580
 
2304
2581
 
2305
- translator.normal = tsl.Fn( ( params ) => {
2582
+ translator.normal = TSLFn( ( params ) => {
2306
2583
 
2307
- params = prepare( { ...translator.defaults, ...params } );
2584
+ params = prepare( params, defaults$5 );
2308
2585
 
2309
2586
  var eps = 0.01;
2310
2587
 
@@ -2322,23 +2599,23 @@ translator.normal = tsl.Fn( ( params ) => {
2322
2599
 
2323
2600
  return tsl.transformNormalToView( tsl.cross( dU, dV ).normalize() );
2324
2601
 
2325
- } );
2602
+ }, defaults$5 );
2603
+
2604
+ var defaults$4 = {
2605
+ $name: 'Voronoi cells',
2326
2606
 
2607
+ scale: 2,
2608
+ variation: 0,
2609
+ facet: 0,
2327
2610
 
2611
+ color: new three.Color( 0 ),
2612
+ background: new three.Color( 0xc0d0ff ),
2328
2613
 
2329
- translator.defaults = {
2330
- $name: 'Translator',
2331
- $positionNode: true,
2332
- $selectorPlanar: true,
2614
+ seed: 0,
2615
+ };
2333
2616
 
2334
- distance: new three.Vector3( -0.5, 0, 0.2 ),
2335
2617
 
2336
- selectorCenter: new three.Vector3( 0, 0, 0 ),
2337
- selectorAngles: new three.Vector2( 0, 0 ),
2338
- selectorWidth: 0.7,
2339
2618
 
2340
- };
2341
-
2342
2619
  var cellCenter = tsl.Fn( ([ cell ])=>{
2343
2620
 
2344
2621
  return cell.add( tsl.mx_noise_float( cell.mul( Math.PI ) ) );
@@ -2346,9 +2623,9 @@ var cellCenter = tsl.Fn( ([ cell ])=>{
2346
2623
  } );
2347
2624
 
2348
2625
 
2349
- var voronoiCells = tsl.Fn( ( params )=>{
2626
+ var voronoiCells = TSLFn( ( params )=>{
2350
2627
 
2351
- params = prepare( { ...voronoiCells.defaults, ...params } );
2628
+ params = prepare( params, defaults$4 );
2352
2629
 
2353
2630
  var pos = tsl.positionGeometry.mul( tsl.exp( params.scale.div( 2 ).add( 0.5 ) ) ).add( params.seed ).toVar( );
2354
2631
 
@@ -2389,23 +2666,21 @@ var voronoiCells = tsl.Fn( ( params )=>{
2389
2666
 
2390
2667
  return tsl.mix( color, tsl.mix( color, randomColor, params.variation ), params.variation );
2391
2668
 
2392
- } );
2393
-
2669
+ }, defaults$4 );
2670
+
2671
+ var defaults$3 = {
2672
+ $name: 'Water Drops',
2673
+ $normalNode: true,
2394
2674
 
2675
+ scale: 1.4,
2676
+ density: 0.5,
2677
+ bump: 0.6,
2395
2678
 
2396
- voronoiCells.defaults = {
2397
- $name: 'Voronoi cells',
2679
+ seed: 0,
2680
+ };
2398
2681
 
2399
- scale: 2,
2400
- variation: 0,
2401
- facet: 0,
2402
2682
 
2403
- color: new three.Color( 0 ),
2404
- background: new three.Color( 0xc0d0ff ),
2405
2683
 
2406
- seed: 0,
2407
- };
2408
-
2409
2684
  var surfacePos = tsl.Fn( ([ pos, normal, bump, density, seed ]) => {
2410
2685
 
2411
2686
  var k = tsl.mx_noise_float( pos.add( seed ) ).add( density ).clamp( 0, 1 );
@@ -2416,9 +2691,10 @@ var surfacePos = tsl.Fn( ([ pos, normal, bump, density, seed ]) => {
2416
2691
  } );
2417
2692
 
2418
2693
 
2419
- var waterDrops = tsl.Fn( ( params ) => {
2420
2694
 
2421
- params = prepare( { ...waterDrops.defaults, ...params } );
2695
+ var waterDrops = TSLFn( ( params ) => {
2696
+
2697
+ params = prepare( params, defaults$3 );
2422
2698
 
2423
2699
  var eps = 0.001;
2424
2700
 
@@ -2440,24 +2716,29 @@ var waterDrops = tsl.Fn( ( params ) => {
2440
2716
 
2441
2717
  return tsl.transformNormalToView( tsl.cross( dU, dV ).normalize() );
2442
2718
 
2443
- } );
2444
-
2719
+ }, defaults$3 );
2720
+
2721
+ var defaults$2 = {
2722
+ $name: 'Watermelon',
2445
2723
 
2724
+ scale: 2,
2725
+ stripes: 12,
2726
+ variation: 0.5,
2727
+ noise: 0.25,
2446
2728
 
2447
- waterDrops.defaults = {
2448
- $name: 'Water Drops',
2449
- $normalNode: true,
2729
+ color: new three.Color( 'yellowgreen' ),
2730
+ background: new three.Color( 'darkgreen' ),
2450
2731
 
2451
- scale: 1.4,
2452
- density: 0.5,
2453
- bump: 0.6,
2732
+ flat: 0,
2454
2733
 
2455
2734
  seed: 0,
2456
- };
2457
-
2458
- var watermelon = tsl.Fn( ( params )=>{
2735
+ };
2736
+
2459
2737
 
2460
- params = prepare( { ...watermelon.defaults, ...params } );
2738
+
2739
+ var watermelon = TSLFn( ( params )=>{
2740
+
2741
+ params = prepare( params, defaults$2 );
2461
2742
 
2462
2743
  var variation = tsl.select( params.flat, params.variation.mul( 0.85 ).add( 0.15 ), params.variation );
2463
2744
 
@@ -2483,29 +2764,26 @@ var watermelon = tsl.Fn( ( params )=>{
2483
2764
 
2484
2765
  return color;
2485
2766
 
2486
- } );
2487
-
2488
-
2489
-
2490
- watermelon.defaults = {
2491
- $name: 'Watermelon',
2492
-
2493
- scale: 2,
2494
- stripes: 12,
2495
- variation: 0.5,
2496
- noise: 0.25,
2767
+ }, defaults$2 );
2768
+
2769
+ var defaults$1 = {
2770
+ $name: 'Wood',
2771
+ scale: 2.5,
2772
+ rings: 4.5,
2773
+ length: 1,
2774
+ angle: 0,
2775
+ fibers: 0.3,
2776
+ fibersDensity: 10,
2777
+ color: new three.Color( 0.8, 0.4, 0 ),
2778
+ background: new three.Color( 0.4, 0.1, 0 ),
2779
+ seed: 0,
2780
+ };
2497
2781
 
2498
- color: new three.Color( 'yellowgreen' ),
2499
- background: new three.Color( 'darkgreen' ),
2500
2782
 
2501
- flat: 0,
2502
2783
 
2503
- seed: 0,
2504
- };
2505
-
2506
- var wood = tsl.Fn( ( params ) => {
2784
+ var wood = TSLFn( ( params ) => {
2507
2785
 
2508
- params = prepare( { ...wood.defaults, ...params } );
2786
+ params = prepare( params, defaults$1 );
2509
2787
 
2510
2788
  var angle = tsl.radians( params.angle ).toVar();
2511
2789
  var posLocal = tsl.vec3(
@@ -2538,26 +2816,28 @@ var wood = tsl.Fn( ( params ) => {
2538
2816
 
2539
2817
  return tsl.mix( params.color, params.background, tsl.mix( k, kk, params.fibers ) );
2540
2818
 
2541
- } );
2819
+ }, defaults$1 );
2820
+
2821
+ var defaults = {
2822
+ $name: 'Zebra lines',
2542
2823
 
2824
+ scale: 2,
2825
+ thinness: 0.5,
2826
+ phi: 0,
2827
+ theta: 0,
2543
2828
 
2829
+ color: new three.Color( 0x0 ),
2830
+ background: new three.Color( 0xFFFFFF ),
2544
2831
 
2545
- wood.defaults = {
2546
- $name: 'Wood',
2547
- scale: 2.5,
2548
- rings: 4.5,
2549
- length: 1,
2550
- angle: 0,
2551
- fibers: 0.3,
2552
- fibersDensity: 10,
2553
- color: new three.Color( 0.8, 0.4, 0 ),
2554
- background: new three.Color( 0.4, 0.1, 0 ),
2555
- seed: 0,
2556
- };
2557
-
2558
- var zebraLines = tsl.Fn( ( params ) => {
2832
+ flat: 0,
2833
+ // no seed for zebra lines
2834
+ };
2559
2835
 
2560
- params = prepare( { ...zebraLines.defaults, ...params } );
2836
+
2837
+
2838
+ var zebraLines = TSLFn( ( params ) => {
2839
+
2840
+ params = prepare( params, defaults );
2561
2841
 
2562
2842
  var pos = tsl.select( params.flat, tsl.positionGeometry, tsl.positionGeometry.normalize() ).toVar( );
2563
2843
 
@@ -2573,29 +2853,13 @@ var zebraLines = tsl.Fn( ( params ) => {
2573
2853
 
2574
2854
  return tsl.mix( params.background, params.color, k );
2575
2855
 
2576
- } );
2577
-
2578
-
2579
-
2580
- zebraLines.defaults = {
2581
- $name: 'Zebra lines',
2582
-
2583
- scale: 2,
2584
- thinness: 0.5,
2585
- phi: 0,
2586
- theta: 0,
2587
-
2588
- color: new three.Color( 0x0 ),
2589
- background: new three.Color( 0xFFFFFF ),
2590
-
2591
- flat: 0,
2592
- // no seed for zebra lines
2593
- };
2856
+ }, defaults );
2594
2857
 
2595
2858
  Object.defineProperty(exports, "noise", {
2596
2859
  enumerable: true,
2597
2860
  get: function () { return tsl.mx_noise_float; }
2598
2861
  });
2862
+ exports.TSLFn = TSLFn;
2599
2863
  exports.applyEuler = applyEuler;
2600
2864
  exports.camouflage = camouflage;
2601
2865
  exports.caveArt = caveArt;