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/.github/FUNDING.yml +4 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- package/.github/ISSUE_TEMPLATE/custom.md +10 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/.github/workflows/main.yml +62 -0
- package/README.md +45 -0
- package/index.cjs +956 -0
- package/index.html +776 -0
- package/package.json +27 -0
- package/script.cjs +93 -0
- package/style.css +82 -0
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>
|