hydra-nodegl 2.1.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/index.html ADDED
@@ -0,0 +1,776 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>NodeGL</title>
8
+ <link
9
+ rel="icon"
10
+ type="image/x-icon"
11
+ href="https://cdn.glitch.global/efd0d1ad-4977-47ea-a2d9-9ce05d4c70fa/nodegl-logo.png?v=1676040680862"
12
+ />
13
+ <link
14
+ rel="apple-touch-icon"
15
+ sizes="180x180"
16
+ href="https://cdn.glitch.global/efd0d1ad-4977-47ea-a2d9-9ce05d4c70fa/nodegl-logo.png?v=1676040680862"
17
+ />
18
+ <script type="application/ld+json">
19
+ {
20
+ "@context": "https://schema.org",
21
+ "@type": "Person",
22
+ "name": "Hirotoshi Uchida",
23
+ "url": "https://hirotoshiuchida.glitch.me",
24
+ "sameAs": [
25
+ "g.co/kgs/sfhWkK",
26
+ "g.co/kgs/LDV2Pv",
27
+ "https://x.com/h1r010sh1",
28
+ "https://www.facebook.com/Uchida16104",
29
+ "https://www.instagram.com/hirotoshiuchida",
30
+ "https://hearthis.at/hirotoshi-uchida",
31
+ "https://hearthis.at/hirotoshi-uchida-2nd",
32
+ "https://hearthis.at/hirotoshi-uchida-3rd",
33
+ "https://youtube.com/@HirotoshiUchida",
34
+ "https://github.com/Uchida16104",
35
+ "https://lit.link/hirotoshiuchida"
36
+ ]
37
+ }
38
+ </script>
39
+ <link
40
+ rel="stylesheet"
41
+ href="https://cdn.jsdelivr.net/npm/monaspace-font@0.0.2/krypton.css"
42
+ />
43
+ <link rel="stylesheet" href="style.css" />
44
+ <script src="https://unpkg.com/hydra-synth"></script>
45
+ </head>
46
+ <body>
47
+ <div class="sidebar">
48
+ <div class="accordion">
49
+ <div class="accordion-header">Menu</div>
50
+ <div class="accordion-content">
51
+ <ul>
52
+ <li><a href="#title">NodeGL</a></li>
53
+ <li><a href="#usage">Usage</a></li>
54
+ <li><a href="#first">First to do</a></li>
55
+ <li><a href="#y">glslAxis("y")</a></li>
56
+ <li><a href="#2y">glslAxis("2y")</a></li>
57
+ <li><a href="#flash">flash</a></li>
58
+ <li><a href="#list">list</a></li>
59
+ <li><a href="#easeinout">easeInOut</a></li>
60
+ <li><a href="#vardef">varDef</a></li>
61
+ <li><a href="#funcary">funcAry</a></li>
62
+ <li><a href="#randary">randAry</a></li>
63
+ <li><a href="#genary">genAry</a></li>
64
+ <li><a href="#setloop">setLoop</a></li>
65
+ <li><a href="#form">form</a></li>
66
+ <li><a href="#pad">pad</a></li>
67
+ <li><a href="#rainbow">rainbow</a></li>
68
+ <li><a href="#particle">particle</a></li>
69
+ <li><a href="#zebra">zebra</a></li>
70
+ <li><a href="#swirl">swirl</a></li>
71
+ <li><a href="#modulateglitch">modulateGlitch</a></li>
72
+ <li><a href="#modulatewarp">modulateWarp</a></li>
73
+ <li><a href="#polar">polar</a></li>
74
+ <li><a href="#modulatespiral">modulateSpiral</a></li>
75
+ <li><a href="#modulateshear">modulateShear</a></li>
76
+ <li><a href="#modulaterandomnoise">modulateRandomNoise</a></li>
77
+ <li><a href="#visual">visual</a></li>
78
+ <li><a href="#huecircle">huecircle</a></li>
79
+ <li><a href="#lightning">lightning</a></li>
80
+ <li><a href="#shake">shake</a></li>
81
+ <li><a href="#modulaterainbow">modulateRainbow</a></li>
82
+ <li><a href="#beam">beam</a></li>
83
+ <li><a href="#crystal">crystal</a></li>
84
+ <li><a href="#fisheye">fisheye</a></li>
85
+ <li><a href="#echo">echo</a></li>
86
+ <li><a href="#chorus">chorus</a></li>
87
+ <li><a href="#vibrato">vibrato</a></li>
88
+ <li>
89
+ <a href="#ringmodulator"
90
+ >ringModulator, ringModulate, modulateRingModulator</a
91
+ >
92
+ </li>
93
+ <li><a href="#sine">sine</a></li>
94
+ <li><a href="#saw">saw</a></li>
95
+ <li><a href="#triangle">triangle</a></li>
96
+ <li><a href="#pulse">pulse</a></li>
97
+ <li><a href="#square">square</a></li>
98
+ <li><a href="#sand">sand</a></li>
99
+ <li><a href="#chaos">chaos</a></li>
100
+ <li>
101
+ <a href="#lissajouslaser">lissajous, laser, lissajouslaser</a>
102
+ </li>
103
+ <li><a href="#sphere">sphere</a></li>
104
+ <li><a href="#flower">flower</a></li>
105
+ <li><a href="#oil">oil</a></li>
106
+ <li><a href="#watercolor">watercolor</a></li>
107
+ <li><a href="#ink">ink</a></li>
108
+ <li><a href="#parametriclaser">parametriclaser</a></li>
109
+ <li><a href="#repeatoperator">repeatoperator</a></li>
110
+ <li><a href="#delay">delay</a></li>
111
+ <li><a href="#split">split, disassemble</a></li>
112
+ <li><a href="#painting">painting</a></li>
113
+ <li><a href="#over">over</a></li>
114
+ <li><a href="#sketch">sketch</a></li>
115
+ <li><a href="#fractal">fractal</a></li>
116
+ </ul>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ <div class="content">
121
+ <h1 class="title" id="title">NodeGL</h1>
122
+ <p>
123
+ It'll be convenience for
124
+ <a href="https://hydra.ojack.xyz">hydra</a> used by Node.js.
125
+ </p>
126
+ <img
127
+ src="https://cdn.glitch.me/project-avatar/efd0d1ad-4977-47ea-a2d9-9ce05d4c70fa.png?2023-02-10T14:36:52.526Z"
128
+ />
129
+ <br />
130
+ <ul>
131
+ <h1 id="usage">Usage</h1>
132
+ </ul>
133
+ <h3 id="first">First, please use the following code to read on hydra.</h3>
134
+ <div class="ready">await loadScript("<a href="https://nodegl.glitch.me/function-list.js"
135
+ >https://nodegl.glitch.me/function-list.js</a
136
+ >");</div>
137
+ <ol>
138
+ <li>
139
+ <h5>When you'd like to change the canvas axis to "y" perspective.</h5>
140
+ </li>
141
+ <ul>
142
+ <li>
143
+ <div class="codeblock" id="y">
144
+ <code>osc()
145
+ .scale(glslAxis("y"))
146
+ .out();</code>
147
+ <div class="placeholder"></div>
148
+ </div>
149
+ </li>
150
+ </ul>
151
+ <ul>
152
+ <li>
153
+ <div class="codeblock" id="2y">
154
+ <code>voronoi(20, 1, 5)
155
+ .scale(glslAxis("2y"))
156
+ .out();</code>
157
+ <div class="placeholder"></div>
158
+ </div>
159
+ </li>
160
+ </ul>
161
+ <li>
162
+ <h5>
163
+ It can be modulated using the difference between "solid" and
164
+ "gradient" color changes.
165
+ </h5>
166
+ </li>
167
+ <ul>
168
+ <li>
169
+ <div class="codeblock" id="flash">
170
+ <code>speed = 1 / 4;
171
+ flash(1, 2, 1)
172
+ .diff(osc(30, 1 / 8, 300)
173
+ .diff(osc(30, 1 / 8, 300)
174
+ .rotate(Math.PI / 2)))
175
+ .scale([1 / 4, 1 / 2].smooth())
176
+ .out();</code>
177
+ <div class="placeholder"></div>
178
+ </div>
179
+ </li>
180
+ </ul>
181
+ <li>
182
+ <h5>
183
+ You can also use functions that store trigonometric and inverse
184
+ trigonometric functions to change the video.
185
+ </h5>
186
+ </li>
187
+ <ul>
188
+ <li>
189
+ <div class="codeblock" id="list">
190
+ <code>noise()
191
+ .rotate(() => list(1, 2))
192
+ .out();</code>
193
+ <div class="placeholder"></div>
194
+ </div>
195
+ </li>
196
+ </ul>
197
+ <li>
198
+ <h5>
199
+ The options available within hydra's "ease" function can also be
200
+ easily specified.
201
+ </h5>
202
+ </li>
203
+ <ul>
204
+ <li>
205
+ <div class="codeblock" id="easeinout">
206
+ <code>gradient(1)
207
+ .hue([0, 1].ease(easeInOut(5)))
208
+ .out();</code>
209
+ <div class="placeholder"></div>
210
+ </div>
211
+ </li>
212
+ </ul>
213
+ <li>
214
+ <h5>
215
+ Variables can be defined sequentially and the last variable among
216
+ them can be used. (It can also be used outside of hydra.)
217
+ </h5>
218
+ </li>
219
+ <ul>
220
+ <li>
221
+ <div class="codeblock" id="vardef">
222
+ <code>osc()
223
+ .rotate(varDef("hydra", Math.atan, 10))
224
+ .out();</code>
225
+ <div class="placeholder"></div>
226
+ </div>
227
+ </li>
228
+ </ul>
229
+ <li>
230
+ <h5>
231
+ Two different functions can be entered, each increasing in a
232
+ different step, and the results put into an array and modulated.
233
+ </h5>
234
+ </li>
235
+ <ul>
236
+ <li>
237
+ <div class="codeblock" id="funcary">
238
+ <code
239
+ >shape(funcAry(4, 5, 6, 0.05, 0.1, Math.tan, Math.sin).smooth())
240
+ .out();</code
241
+ >
242
+ <div class="placeholder"></div>
243
+ </div>
244
+ </li>
245
+ </ul>
246
+ <li>
247
+ <h5>
248
+ It can generate an array from 0 to a specified number and output a
249
+ random value.
250
+ </h5>
251
+ </li>
252
+ <ul>
253
+ <li>
254
+ <div class="codeblock" id="randary">
255
+ <code>shape(randAry(100, 0.1))
256
+ .out();</code>
257
+ <div class="placeholder"></div>
258
+ </div>
259
+ </li>
260
+ </ul>
261
+ <li>
262
+ <h5>
263
+ It can generate an array from 0 to a specified number, repeatedly
264
+ output a random value, and store it in the array again.
265
+ </h5>
266
+ </li>
267
+ <ul>
268
+ <li>
269
+ <div class="codeblock" id="genary">
270
+ <code>shape(genAry(100, 0.1, 10).smooth())
271
+ .out();</code>
272
+ <div class="placeholder"></div>
273
+ </div>
274
+ </li>
275
+ </ul>
276
+ <li>
277
+ <h5>
278
+ Four output videos can be looped and switched every specified number
279
+ of seconds at specified speeds.
280
+ </h5>
281
+ </li>
282
+ <ul>
283
+ <li>
284
+ <div class="codeblock" id="setloop">
285
+ <code
286
+ >setLoop(1/2,-1/4,-1/2,1/4,1000);
287
+ osc().out();
288
+ noise().out(o1);
289
+ gradient(1).out(o2);
290
+ voronoi().out(o3);</code
291
+ >
292
+ <div class="placeholder"></div>
293
+ </div>
294
+ </li>
295
+ </ul>
296
+ <li>
297
+ <h5>Others(form, pad, particle, rbga, hsb, rainbow and zebra)</h5>
298
+ </li>
299
+ <ul>
300
+ <li>
301
+ <div class="codeblock" id="form">
302
+ <code
303
+ >form(4, 2, 0, 1, 15, 1 / 8, 0)
304
+ .colorama(3)
305
+ .luma()
306
+ .hue(() => Math.sin(time / 10), () => Math.cos(time / 10), () => Math.tan(time / 10))
307
+ .diff(gradient(1))
308
+ .invert()
309
+ .scale(Math.PI)
310
+ .repeat()
311
+ .out();</code
312
+ >
313
+ <div class="placeholder"></div>
314
+ </div>
315
+ </li>
316
+ <li>
317
+ <div class="codeblock" id="pad">
318
+ <code
319
+ >pad(10, o0, 4, 0, 1, .99)
320
+ .diff(osc(1, 2, 300)
321
+ .diff(gradient(1))
322
+ .scale(.1))
323
+ .diff(rgba(o0, 1, 1, 1, 1))
324
+ .diff(hsb(o0, 1, 1, 1 / 4))
325
+ .invert()
326
+ .out();</code
327
+ >
328
+ <div class="placeholder"></div>
329
+ </div>
330
+ </li>
331
+ <li>
332
+ <div class="codeblock" id="rainbow">
333
+ <code>gradient()
334
+ .blend(rainbow(3))
335
+ .out();</code>
336
+ <div class="placeholder"></div>
337
+ </div>
338
+ </li>
339
+ <li>
340
+ <div class="codeblock" id="particle">
341
+ <code
342
+ >osc(1, 2, 300)
343
+ .diff(gradient(1))
344
+ .scale(.1)
345
+ .diff(particle(o0, .99))
346
+ .invert()
347
+ .out();</code
348
+ >
349
+ <div class="placeholder"></div>
350
+ </div>
351
+ </li>
352
+ <li>
353
+ <div class="codeblock" id="zebra">
354
+ <code>
355
+ s0.initCam();
356
+ solid()
357
+ .add(zebra(src(s0), 2, 4, Math.sin, 0.1))
358
+ .out();</code
359
+ >
360
+ <div class="placeholder"></div>
361
+ </div>
362
+ </li>
363
+ <li>
364
+ <div class="codeblock" id="swirl">
365
+ <code>osc()
366
+ .swirl()
367
+ .out();</code>
368
+ <div class="placeholder"></div>
369
+ </div>
370
+ </li>
371
+ <li>
372
+ <div class="codeblock" id="modulateglitch">
373
+ <code>noise()
374
+ .modulateGlitch(osc(), 0.05)
375
+ .out();</code>
376
+ <div class="placeholder"></div>
377
+ </div>
378
+ </li>
379
+ <li>
380
+ <div class="codeblock" id="modulatewarp">
381
+ <code>osc()
382
+ .modulateWarp(solid(), 0.3)
383
+ .out();</code>
384
+ <div class="placeholder"></div>
385
+ </div>
386
+ </li>
387
+ <li>
388
+ <div class="codeblock" id="polar">
389
+ <code>osc()
390
+ .polar()
391
+ .out();</code>
392
+ <div class="placeholder"></div>
393
+ </div>
394
+ </li>
395
+ <li>
396
+ <div class="codeblock" id="modulatespiral">
397
+ <code>osc()
398
+ .modulateSpiral(solid(), 5)
399
+ .out();</code>
400
+ <div class="placeholder"></div>
401
+ </div>
402
+ </li>
403
+ <li>
404
+ <div class="codeblock" id="modulateshear">
405
+ <code>osc()
406
+ .modulateShear(solid(), 0.2)
407
+ .out();</code>
408
+ <div class="placeholder"></div>
409
+ </div>
410
+ </li>
411
+ <li>
412
+ <div class="codeblock" id="modulaterandomnoise">
413
+ <code>noise()
414
+ .modulateRandomNoise(osc(), 1)
415
+ .out();</code>
416
+ <div class="placeholder"></div>
417
+ </div>
418
+ </li>
419
+ <li>
420
+ <div class="codeblock" id="visual">
421
+ <code>visual()
422
+ .out();</code>
423
+ <div class="placeholder"></div>
424
+ </div>
425
+ </li>
426
+ <li>
427
+ <div class="codeblock" id="huecircle">
428
+ <code>huecircle()
429
+ .rotate(1, 1)
430
+ .out();</code>
431
+ <div class="placeholder"></div>
432
+ </div>
433
+ </li>
434
+ <li>
435
+ <div class="codeblock" id="lightning">
436
+ <code>lightning(10)
437
+ .out();</code>
438
+ <div class="placeholder"></div>
439
+ </div>
440
+ </li>
441
+ <li>
442
+ <div class="codeblock" id="shake">
443
+ <code>osc().shake().out();</code>
444
+ <div class="placeholder"></div>
445
+ </div>
446
+ </li>
447
+ <li>
448
+ <div class="codeblock" id="modulaterainbow">
449
+ <code>osc()
450
+ .modulateRainbow(o0)
451
+ .out();</code>
452
+ <div class="placeholder"></div>
453
+ </div>
454
+ </li>
455
+ <li>
456
+ <div class="codeblock" id="beam">
457
+ <code>beam()
458
+ .out();</code>
459
+ <div class="placeholder"></div>
460
+ </div>
461
+ </li>
462
+ <li>
463
+ <div class="codeblock" id="crystal">
464
+ <code>osc()
465
+ .crystal()
466
+ .out();</code>
467
+ <div class="placeholder"></div>
468
+ </div>
469
+ </li>
470
+ <li>
471
+ <div class="codeblock" id="fisheye">
472
+ <code>osc()
473
+ .fisheye()
474
+ .out();</code>
475
+ <div class="placeholder"></div>
476
+ </div>
477
+ </li>
478
+ <li>
479
+ <div class="codeblock" id="echo">
480
+ <code>osc()
481
+ .echo()
482
+ .out();</code>
483
+ <div class="placeholder"></div>
484
+ </div>
485
+ </li>
486
+ <li>
487
+ <div class="codeblock" id="chorus">
488
+ <code>osc()
489
+ .chorus()
490
+ .out();</code>
491
+ <div class="placeholder"></div>
492
+ </div>
493
+ </li>
494
+ <li>
495
+ <div class="codeblock" id="vibrato">
496
+ <code>osc()
497
+ .vibrato()
498
+ .out();</code>
499
+ <div class="placeholder"></div>
500
+ </div>
501
+ </li>
502
+ <li>
503
+ <div class="codeblock" id="ringmodulator">
504
+ <code
505
+ >ringModulator()
506
+ .ringModulate()
507
+ .modulateRingModulator(o0)
508
+ .out();</code
509
+ >
510
+ <div class="placeholder"></div>
511
+ </div>
512
+ </li>
513
+ <li>
514
+ <div class="codeblock" id="sine">
515
+ <code>shape(2, .01)
516
+ .modulate(sine())
517
+ .out();</code>
518
+ <div class="placeholder"></div>
519
+ </div>
520
+ </li>
521
+ <li>
522
+ <div class="codeblock" id="saw">
523
+ <code>shape(2, .01)
524
+ .modulate(saw())
525
+ .out();</code>
526
+ <div class="placeholder"></div>
527
+ </div>
528
+ </li>
529
+ <li>
530
+ <div class="codeblock" id="triangle">
531
+ <code>shape(2, .01)
532
+ .modulate(triangle())
533
+ .out();</code>
534
+ <div class="placeholder"></div>
535
+ </div>
536
+ </li>
537
+ <li>
538
+ <div class="codeblock" id="pulse">
539
+ <code>shape(2, .01)
540
+ .modulate(pulse())
541
+ .out();</code>
542
+ <div class="placeholder"></div>
543
+ </div>
544
+ </li>
545
+ <li>
546
+ <div class="codeblock" id="square">
547
+ <code>shape(2, .01)
548
+ .modulate(square())
549
+ .out();</code>
550
+ <div class="placeholder"></div>
551
+ </div>
552
+ </li>
553
+ <li>
554
+ <div class="codeblock" id="sand">
555
+ <code>shape(2, .01)
556
+ .modulate(sand())
557
+ .out();</code>
558
+ <div class="placeholder"></div>
559
+ </div>
560
+ </li>
561
+ <li>
562
+ <div class="codeblock" id="chaos">
563
+ <code>chaos(8)
564
+ .out();</code>
565
+ <div class="placeholder"></div>
566
+ </div>
567
+ </li>
568
+ <li>
569
+ <div class="codeblock" id="lissajouslaser">
570
+ <code>lissajous()
571
+ .laser()
572
+ .blend(lissajouslaser())
573
+ .out();</code>
574
+ <div class="placeholder"></div>
575
+ </div>
576
+ </li>
577
+ <li>
578
+ <div class="codeblock" id="sphere">
579
+ <code>sphere()
580
+ .out();</code>
581
+ <div class="placeholder"></div>
582
+ </div>
583
+ </li>
584
+ <li>
585
+ <div class="codeblock" id="flower">
586
+ <code>flower()
587
+ .out();</code>
588
+ <div class="placeholder"></div>
589
+ </div>
590
+ </li>
591
+ <li>
592
+ <div class="codeblock" id="oil">
593
+ <code>s0.initCam();
594
+ src(s0)
595
+ .oil()
596
+ .out();</code>
597
+ <div class="placeholder"></div>
598
+ </div>
599
+ </li>
600
+ <li>
601
+ <div class="codeblock" id="watercolor">
602
+ <code>s0.initCam();
603
+ src(s0)
604
+ .watercolor()
605
+ .out();</code>
606
+ <div class="placeholder"></div>
607
+ </div>
608
+ </li>
609
+ <li>
610
+ <div class="codeblock" id="ink">
611
+ <code>s0.initCam();
612
+ src(s0)
613
+ .ink()
614
+ .out();</code>
615
+ <div class="placeholder"></div>
616
+ </div>
617
+ </li>
618
+ <li>
619
+ <div class="codeblock" id="parametriclaser">
620
+ <code
621
+ >parametriclaser("cos(time)-0.5*cos(2.0*time)", "sin(time)-0.5*sin(2.0*time)", 100, 0.5, "sin(time)", "cos(time)*sin(time)", "cos(time)")
622
+ .scale(0.5)
623
+ .add(o0)
624
+ .out();</code
625
+ >
626
+ <div class="placeholder"></div>
627
+ </div>
628
+ </li>
629
+ <li>
630
+ <div class="codeblock" id="repeatoperator">
631
+ <code
632
+ >src(o0)
633
+ .shift("cos(st.x/time)", "sin(st.y/time)", "sin(st.y/time)/cos(st.x/time)")
634
+ .hue("sin(st.x/time)+cos(st.y/time)")
635
+ .saturate("sin(st.y/time)-cos(st.x/time)")
636
+ .brightness("cos(st.y/time)*sin(st.x/time)")
637
+ .contrast("sin(st.y/time)+cos(st.x/time)")
638
+ .layer(repeatoperator("modulateKaleid", () => osc(1).rotate(Math.PI / 2).scale(1.01), 2, osc(1))
639
+ .sub(repeatoperator("modulateRotate", () => osc(1).rotate(Math.PI / 2).scale(1.01), 3, osc(1))
640
+ .mult(repeatoperator("modulatePixelate", () => osc(1).rotate(Math.PI / 2).scale(1.01), 5, osc(1))
641
+ .mask(repeatoperator("modulateScale", () =>osc(1).rotate(Math.PI / 2).scale(1.01), 8, osc(1))))))
642
+ .out();</code
643
+ >
644
+ <div class="placeholder"></div>
645
+ </div>
646
+ </li>
647
+ <li>
648
+ <div class="codeblock" id="delay">
649
+ <code
650
+ >delay(solid(), noise()
651
+ .diff(voronoi()), 10000, o0)
652
+ .out();</code
653
+ >
654
+ <div class="placeholder"></div>
655
+ </div>
656
+ </li>
657
+ <li>
658
+ <div class="codeblock" id="split">
659
+ <code
660
+ >s0.initCam();
661
+ synth = () => src(s0);
662
+ synth()
663
+ .disassemble()
664
+ .out(o0);
665
+ synth()
666
+ .pixelate(() => Math.cos(time / 10) * window.innerWidth, () => Math.sin(time / 10) * window.innerHeight)
667
+ .out(o1);
668
+ synth()
669
+ .split()
670
+ .out(o2);
671
+ synth()
672
+ .diff(src(o3)
673
+ .hue("cos(st.x+time)/sin(st.y+time)"))
674
+ .out(o3);
675
+ render();</code
676
+ >
677
+ <div class="placeholder"></div>
678
+ </div>
679
+ </li>
680
+ <li>
681
+ <div class="codeblock" id="painting">
682
+ <code
683
+ >s0.initCam();
684
+ src(s0)
685
+ .painting(6.0, 0.2, 0.8, 0.4, 0.6, 2.0, 0.4, 0.4, 1.0, 1.5, 0.3, 0.2, 0.6, 0.3)
686
+ .out();</code
687
+ >
688
+ <div class="placeholder"></div>
689
+ </div>
690
+ </li>
691
+ <li>
692
+ <div class="codeblock" id="over">
693
+ <code>s0.initCam();
694
+ src(s0)
695
+ .over(2, 0, 50, 0)
696
+ .blend(s0)
697
+ .out();</code>
698
+ <div class="placeholder"></div>
699
+ </div>
700
+ </li>
701
+ <li>
702
+ <div class="codeblock" id="sketch">
703
+ <code
704
+ >s0.initCam();
705
+ src(s0)
706
+ .sketch(1, 1 / 100, 1 / 4, 1 / 4)
707
+ .blend(s0)
708
+ .blend(o0, 7 / 10)
709
+ .out();</code
710
+ >
711
+ <div class="placeholder"></div>
712
+ </div>
713
+ </li>
714
+ <li>
715
+ <div class="codeblock" id="fractal">
716
+ <code
717
+ >fractal([1 / 8, 1 / 4].smooth(), [0, 1].reverse()
718
+ .ease('easeInOutHalf')
719
+ .smooth(1 / 3)
720
+ .fit(1 / 4)
721
+ .offset(1 / 5)
722
+ .fast(1 / 6), [0, 1].reverse()
723
+ .ease('easeInOutCubic')
724
+ .smooth(1 / 4)
725
+ .fit(1 / 5)
726
+ .offset(1 / 6)
727
+ .fast(1 / 7), () => Math.tan(time / 10), Math.PI * 200, 10000)
728
+ .mult(osc(1, 2, 300)
729
+ .diff(gradient(1))
730
+ .diff(solid([0, 1].smooth(), [0, 1].smooth()
731
+ .fast(1 / 2), [0, 1].smooth()
732
+ .fast(1 / 4), [0, 1].smooth()
733
+ .fast(1 / 8)))
734
+ .hue())
735
+ .add(o0, [0, 1].smooth()
736
+ .fast(1 / 16))
737
+ .out();</code
738
+ >
739
+ <div class="placeholder"></div>
740
+ </div>
741
+ </li>
742
+ </ul>
743
+ </ol>
744
+ <br />
745
+ <p id="info">
746
+ Click <a href="https://nodegl.glitch.me/function-list.js">here</a> for
747
+ more information.
748
+ </p>
749
+ <p>
750
+ I appreciate all hydra users or developers on
751
+ <a href="https://github.com/hydra-synth">GitHub</a>,
752
+ <a href="https://www.facebook.com/groups/1084288351771117/">FB</a>,
753
+ <a href="https://twitter.com/hydra_patterns">Twitter</a> or
754
+ <a href="https://discord.gg/Mv9kXwtwVH">Discord</a>, etc...
755
+ </p>
756
+ <p>
757
+ By Hirotoshi Uchida<br /><a
758
+ href="https://hirotoshiuchida.glitch.me/"
759
+ >hearthis.at</a
760
+ ><br /><a href="https://www.instagram.com/hirotoshiuchida/">IG</a>
761
+ </p>
762
+ <h1 id="log">Log</h1>
763
+ <h2>First commited as "NodeBook"</h2>
764
+ <p>on Jan 19th, 2023.</p>
765
+ <h2>Released the newest</h2>
766
+ <p>on Apr 29th, 2025.</p>
767
+ <h6>
768
+ <a href="https://github.com/Uchida16104/NodeGL/commits/main/README.md"
769
+ >Show more</a
770
+ >
771
+ </h6>
772
+ </div>
773
+ <script src="./script.js"></script>
774
+ <script src="./function-list.js"></script>
775
+ </body>
776
+ </html>