hydra-nodegl 2.1.0 → 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.
- package/README.md +4 -4
- package/index.cjs +660 -0
- package/index.html +6 -6
- package/package.json +5 -1
- package/script.cjs +0 -0
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# NodeGL
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/hydra-nodegl)
|
|
4
|
+
|
|
3
5
|
<p>It'll be convenience for <a href="https://hydra.ojack.xyz">hydra</a> used by Node.js.</p>
|
|
4
|
-
<img src="https://cdn.glitch.me/project-avatar/efd0d1ad-4977-47ea-a2d9-9ce05d4c70fa.png?2023-02-10T14:36:52.526Z"/>
|
|
5
|
-
<br>
|
|
6
6
|
<ul><h1>Usage</h1></ul>
|
|
7
7
|
<h3>First, please use the following code to read on hydra.</h3>
|
|
8
|
-
<pre><code>await loadScript("<a href="https://
|
|
8
|
+
<pre><code>await loadScript("<a href="https://unpkg.com/hydra-nodegl">https://unpkg.com/hydra-nodegl</a>");</code></pre>
|
|
9
9
|
<ol><li><h5>When you'd like to change the canvas axis to "y" perspective.</h5></li>
|
|
10
10
|
<ul><li><a href="https://hydra.ojack.xyz/?code=YXdhaXQlMjBsb2FkU2NyaXB0KCUyMmh0dHBzJTNBJTJGJTJGbm9kZWdsLmdsaXRjaC5tZSUyRmZ1bmN0aW9uLWxpc3QuanMlMjIpJTNCJTBBb3NjKCkuc2NhbGUoZ2xzbEF4aXMoJTIyeSUyMikpLm91dCgpJTNC">osc().scale(glslAxis("y")).out();</a></li></ul>
|
|
11
11
|
<ul><li><a href="https://hydra.ojack.xyz/?code=YXdhaXQlMjBsb2FkU2NyaXB0KCUyMmh0dHBzJTNBJTJGJTJGbm9kZWdsLmdsaXRjaC5tZSUyRmZ1bmN0aW9uLWxpc3QuanMlMjIpJTNCJTBBdm9yb25vaSgyMCUyQzElMkM1KS5zY2FsZShnbHNsQXhpcyglMjIyeSUyMikpLm91dCgpJTNC">voronoi(20,1,5).scale(glslAxis("2y")).out();</a></li></ul>
|
|
@@ -41,5 +41,5 @@
|
|
|
41
41
|
<h2>First commited as "NodeBook"</h2>
|
|
42
42
|
<p>on Jan 19th, 2023.</p>
|
|
43
43
|
<h2>Released the newest</h2>
|
|
44
|
-
<p>on
|
|
44
|
+
<p>on Feb 9th, 2026.</p>
|
|
45
45
|
<h6><a href="https://github.com/Uchida16104/NodeGL/commits/main/README.md">Show more</a></h6>
|
package/index.cjs
CHANGED
|
@@ -954,3 +954,663 @@ setFunction({
|
|
|
954
954
|
return vec4(col, 1.0);
|
|
955
955
|
`
|
|
956
956
|
});
|
|
957
|
+
setFunction({
|
|
958
|
+
name: 'jigsawPauseShift',
|
|
959
|
+
type: 'combineCoord',
|
|
960
|
+
inputs: [{
|
|
961
|
+
type: 'float',
|
|
962
|
+
name: 'tilesX',
|
|
963
|
+
default: 4
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
type: 'float',
|
|
967
|
+
name: 'tilesY',
|
|
968
|
+
default: 4
|
|
969
|
+
},
|
|
970
|
+
{
|
|
971
|
+
type: 'float',
|
|
972
|
+
name: 'amplitude',
|
|
973
|
+
default: 0.2
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
type: 'float',
|
|
977
|
+
name: 'pauseDuration',
|
|
978
|
+
default: 1.0
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
type: 'float',
|
|
982
|
+
name: 'speed',
|
|
983
|
+
default: 0.1
|
|
984
|
+
}
|
|
985
|
+
],
|
|
986
|
+
glsl: `
|
|
987
|
+
vec2 st = _st;
|
|
988
|
+
vec2 tile = floor(st * vec2(tilesX, tilesY));
|
|
989
|
+
vec2 tileSize = vec2(1.0 / tilesX, 1.0 / tilesY);
|
|
990
|
+
float seedX = fract(sin(dot(tile, vec2(12.9898,78.233))) * 43758.5453);
|
|
991
|
+
float seedY = fract(sin(dot(tile, vec2(93.9898,67.345))) * 43758.5453);
|
|
992
|
+
vec2 randDir = vec2(seedX*2.0-1.0, seedY*2.0-1.0);
|
|
993
|
+
float phase = fract((time + (tile.x + tile.y)) / pauseDuration);
|
|
994
|
+
float active = step(phase, 0.5);
|
|
995
|
+
vec2 offset = randDir * amplitude * active;
|
|
996
|
+
float t = clamp(1.0 - (time * speed), 0.0, 1.0);
|
|
997
|
+
st += offset * t;
|
|
998
|
+
return st;
|
|
999
|
+
`
|
|
1000
|
+
});
|
|
1001
|
+
setFunction({
|
|
1002
|
+
name: 'gestalt',
|
|
1003
|
+
type: 'combineCoord',
|
|
1004
|
+
inputs: [{
|
|
1005
|
+
type: 'float',
|
|
1006
|
+
name: 'multiple',
|
|
1007
|
+
default: 1.0
|
|
1008
|
+
},
|
|
1009
|
+
{
|
|
1010
|
+
type: 'float',
|
|
1011
|
+
name: 'offset',
|
|
1012
|
+
default: 1.0
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
type: 'float',
|
|
1016
|
+
name: 'rotateMultiple',
|
|
1017
|
+
default: 1.0
|
|
1018
|
+
},
|
|
1019
|
+
{
|
|
1020
|
+
type: 'float',
|
|
1021
|
+
name: 'rotateOffset',
|
|
1022
|
+
default: 0.0
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
type: 'float',
|
|
1026
|
+
name: 'tilesX',
|
|
1027
|
+
default: 6.0
|
|
1028
|
+
},
|
|
1029
|
+
{
|
|
1030
|
+
type: 'float',
|
|
1031
|
+
name: 'tilesY',
|
|
1032
|
+
default: 6.0
|
|
1033
|
+
},
|
|
1034
|
+
{
|
|
1035
|
+
type: 'float',
|
|
1036
|
+
name: 'jitter',
|
|
1037
|
+
default: 0.12
|
|
1038
|
+
},
|
|
1039
|
+
{
|
|
1040
|
+
type: 'float',
|
|
1041
|
+
name: 'warp',
|
|
1042
|
+
default: 0.30
|
|
1043
|
+
},
|
|
1044
|
+
{
|
|
1045
|
+
type: 'float',
|
|
1046
|
+
name: 'phaseSpeed',
|
|
1047
|
+
default: 0.6
|
|
1048
|
+
},
|
|
1049
|
+
{
|
|
1050
|
+
type: 'float',
|
|
1051
|
+
name: 'pauseDuration',
|
|
1052
|
+
default: 1.0
|
|
1053
|
+
}
|
|
1054
|
+
],
|
|
1055
|
+
glsl: `
|
|
1056
|
+
vec2 st = _st - vec2(0.5);
|
|
1057
|
+
|
|
1058
|
+
float safeTilesX = max(1.0, tilesX);
|
|
1059
|
+
float safeTilesY = max(1.0, tilesY);
|
|
1060
|
+
float safePause = max(0.0001, pauseDuration);
|
|
1061
|
+
float safeMultiple = max(0.0001, multiple);
|
|
1062
|
+
float safeOffset = max(0.0001, offset);
|
|
1063
|
+
|
|
1064
|
+
float angle = rotateOffset + (_c0.z * rotateMultiple) + sin(time * max(0.0001, phaseSpeed)) * 0.5;
|
|
1065
|
+
mat2 R = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
|
|
1066
|
+
st = R * st;
|
|
1067
|
+
|
|
1068
|
+
vec2 scale = vec2(safeOffset + safeMultiple * _c0.r, safeOffset + safeMultiple * _c0.g);
|
|
1069
|
+
|
|
1070
|
+
vec2 uv = st + vec2(0.5);
|
|
1071
|
+
vec2 tilePos = floor(uv * vec2(safeTilesX, safeTilesY));
|
|
1072
|
+
vec2 tileFrac = fract(uv * vec2(safeTilesX, safeTilesY)) - vec2(0.5);
|
|
1073
|
+
|
|
1074
|
+
float seed1 = fract(sin(dot(tilePos , vec2(12.9898,78.233))) * 43758.5453);
|
|
1075
|
+
float seed2 = fract(sin(dot(tilePos , vec2(93.9898,67.345))) * 24634.6345);
|
|
1076
|
+
vec2 randDir = vec2(seed1 * 2.0 - 1.0, seed2 * 2.0 - 1.0);
|
|
1077
|
+
|
|
1078
|
+
float phase = fract((time + (tilePos.x + tilePos.y)) / safePause);
|
|
1079
|
+
float hold = step(phase, 0.5); // 1.0 when in hold, else 0.0
|
|
1080
|
+
|
|
1081
|
+
vec2 jitterOff = randDir * jitter * hold;
|
|
1082
|
+
|
|
1083
|
+
float lumin = dot(_c0.rgb, vec3(0.2126, 0.7152, 0.0722));
|
|
1084
|
+
float localWarp = (lumin * 2.0 - 1.0); // -1 .. 1
|
|
1085
|
+
|
|
1086
|
+
st += jitterOff + tileFrac * warp * localWarp;
|
|
1087
|
+
|
|
1088
|
+
st = st / scale;
|
|
1089
|
+
|
|
1090
|
+
st += vec2(0.5);
|
|
1091
|
+
st = fract(st);
|
|
1092
|
+
|
|
1093
|
+
float mx = mod(tilePos.x, 2.0);
|
|
1094
|
+
float my = mod(tilePos.y, 2.0);
|
|
1095
|
+
if (mx > 0.5) st.x = 1.0 - st.x;
|
|
1096
|
+
if (my > 0.5) st.y = 1.0 - st.y;
|
|
1097
|
+
|
|
1098
|
+
return st;
|
|
1099
|
+
`
|
|
1100
|
+
});
|
|
1101
|
+
setFunction({
|
|
1102
|
+
name: 'chaosDistort',
|
|
1103
|
+
type: 'combineCoord',
|
|
1104
|
+
inputs: [
|
|
1105
|
+
{
|
|
1106
|
+
type: 'float',
|
|
1107
|
+
name: 'fadeAmount',
|
|
1108
|
+
default: 0.3
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
type: 'float',
|
|
1112
|
+
name: 'distortStrength',
|
|
1113
|
+
default: 0.5
|
|
1114
|
+
},
|
|
1115
|
+
{
|
|
1116
|
+
type: 'float',
|
|
1117
|
+
name: 'chromaShift',
|
|
1118
|
+
default: 0.02
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
type: 'float',
|
|
1122
|
+
name: 'decayRate',
|
|
1123
|
+
default: 0.8
|
|
1124
|
+
},
|
|
1125
|
+
{
|
|
1126
|
+
type: 'float',
|
|
1127
|
+
name: 'glitchIntensity',
|
|
1128
|
+
default: 0.4
|
|
1129
|
+
},
|
|
1130
|
+
{
|
|
1131
|
+
type: 'float',
|
|
1132
|
+
name: 'illusionSpeed',
|
|
1133
|
+
default: 1.0
|
|
1134
|
+
}
|
|
1135
|
+
],
|
|
1136
|
+
glsl: `
|
|
1137
|
+
vec2 st = _st;
|
|
1138
|
+
vec2 center = vec2(0.5);
|
|
1139
|
+
vec2 toCenter = st - center;
|
|
1140
|
+
float dist = length(toCenter);
|
|
1141
|
+
float angle = atan(toCenter.y, toCenter.x);
|
|
1142
|
+
|
|
1143
|
+
float t = time * illusionSpeed;
|
|
1144
|
+
float glitchTrigger = step(0.97, fract(sin(floor(t * 10.0) * 43758.5453)));
|
|
1145
|
+
|
|
1146
|
+
float blockY = floor(st.y * 20.0);
|
|
1147
|
+
float blockSeed = fract(sin(blockY * 78.233 + floor(t)) * 43758.5453);
|
|
1148
|
+
float horizontalShift = (blockSeed - 0.5) * glitchIntensity * glitchTrigger;
|
|
1149
|
+
st.x += horizontalShift;
|
|
1150
|
+
|
|
1151
|
+
float noise1 = fract(sin(dot(st * 10.0 + t, vec2(12.9898, 78.233))) * 43758.5453);
|
|
1152
|
+
float noise2 = fract(sin(dot(st * 15.0 - t * 0.5, vec2(93.9898, 67.345))) * 43758.5453);
|
|
1153
|
+
|
|
1154
|
+
vec2 waveDistort = vec2(
|
|
1155
|
+
sin(st.y * 10.0 + t * 2.0) * distortStrength * 0.05,
|
|
1156
|
+
cos(st.x * 10.0 + t * 1.5) * distortStrength * 0.05
|
|
1157
|
+
);
|
|
1158
|
+
st += waveDistort;
|
|
1159
|
+
|
|
1160
|
+
float spiralAngle = angle + dist * 5.0 + t;
|
|
1161
|
+
vec2 spiralOffset = vec2(
|
|
1162
|
+
cos(spiralAngle) * dist * distortStrength * 0.1,
|
|
1163
|
+
sin(spiralAngle) * dist * distortStrength * 0.1
|
|
1164
|
+
);
|
|
1165
|
+
st += spiralOffset;
|
|
1166
|
+
|
|
1167
|
+
float turbulence = (noise1 - 0.5) * distortStrength * 0.1;
|
|
1168
|
+
st += vec2(turbulence, turbulence * 0.7);
|
|
1169
|
+
|
|
1170
|
+
float pixelDecay = pow(decayRate, t * 0.5);
|
|
1171
|
+
float decayNoise = fract(sin(dot(floor(st * 50.0), vec2(12.9898, 78.233))) * 43758.5453);
|
|
1172
|
+
float decayMask = step(pixelDecay, decayNoise);
|
|
1173
|
+
st = mix(st, center + (st - center) * 0.9, decayMask * 0.3);
|
|
1174
|
+
|
|
1175
|
+
float chromaAngle = t * 2.0;
|
|
1176
|
+
vec2 rgShift = vec2(cos(chromaAngle), sin(chromaAngle)) * chromaShift;
|
|
1177
|
+
vec2 baShift = vec2(cos(chromaAngle + 2.094), sin(chromaAngle + 2.094)) * chromaShift;
|
|
1178
|
+
|
|
1179
|
+
float colorShift = _c0.r * 0.299 + _c0.g * 0.587 + _c0.b * 0.114;
|
|
1180
|
+
st += rgShift * colorShift;
|
|
1181
|
+
|
|
1182
|
+
float scanline = sin(st.y * 200.0 + t * 5.0) * 0.5 + 0.5;
|
|
1183
|
+
float scanlineGlitch = mix(1.0, scanline, glitchIntensity * 0.3);
|
|
1184
|
+
|
|
1185
|
+
vec2 uvR = st + rgShift;
|
|
1186
|
+
vec2 uvB = st - baShift;
|
|
1187
|
+
|
|
1188
|
+
float moirePattern = sin(st.x * 100.0 + t) * sin(st.y * 100.0 - t);
|
|
1189
|
+
st += vec2(moirePattern * 0.002);
|
|
1190
|
+
|
|
1191
|
+
float kaleidoSeg = 6.0;
|
|
1192
|
+
float kaleidoAngle = mod(atan(toCenter.y, toCenter.x), 6.28318 / kaleidoSeg);
|
|
1193
|
+
if(mod(floor(atan(toCenter.y, toCenter.x) / (6.28318 / kaleidoSeg)), 2.0) > 0.5) {
|
|
1194
|
+
kaleidoAngle = (6.28318 / kaleidoSeg) - kaleidoAngle;
|
|
1195
|
+
}
|
|
1196
|
+
vec2 kaleidoOffset = vec2(cos(kaleidoAngle), sin(kaleidoAngle)) * dist * illusionSpeed * 0.05;
|
|
1197
|
+
st += kaleidoOffset * sin(t);
|
|
1198
|
+
|
|
1199
|
+
float feedback = fract(sin(dot(st, vec2(12.9898, 78.233)) + t) * 43758.5453);
|
|
1200
|
+
st = mix(st, st + (feedback - 0.5) * 0.02, glitchIntensity);
|
|
1201
|
+
|
|
1202
|
+
st = clamp(st, vec2(0.0), vec2(1.0));
|
|
1203
|
+
|
|
1204
|
+
return st;
|
|
1205
|
+
`
|
|
1206
|
+
});
|
|
1207
|
+
setFunction({
|
|
1208
|
+
name: 'physicalGlitchIllusion',
|
|
1209
|
+
type: 'combineCoord',
|
|
1210
|
+
inputs: [
|
|
1211
|
+
{
|
|
1212
|
+
type: 'float',
|
|
1213
|
+
name: 'displacementIntensity',
|
|
1214
|
+
default: 0.3
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
type: 'float',
|
|
1218
|
+
name: 'glitchFrequency',
|
|
1219
|
+
default: 2.0
|
|
1220
|
+
},
|
|
1221
|
+
{
|
|
1222
|
+
type: 'float',
|
|
1223
|
+
name: 'glitchAmount',
|
|
1224
|
+
default: 0.15
|
|
1225
|
+
},
|
|
1226
|
+
{
|
|
1227
|
+
type: 'float',
|
|
1228
|
+
name: 'rotationSpeed',
|
|
1229
|
+
default: 0.1
|
|
1230
|
+
},
|
|
1231
|
+
{
|
|
1232
|
+
type: 'float',
|
|
1233
|
+
name: 'scaleOscillation',
|
|
1234
|
+
default: 0.2
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
type: 'float',
|
|
1238
|
+
name: 'chromaticAberration',
|
|
1239
|
+
default: 0.02
|
|
1240
|
+
},
|
|
1241
|
+
{
|
|
1242
|
+
type: 'float',
|
|
1243
|
+
name: 'warpIntensity',
|
|
1244
|
+
default: 0.5
|
|
1245
|
+
}
|
|
1246
|
+
],
|
|
1247
|
+
glsl: `
|
|
1248
|
+
vec2 st = _st;
|
|
1249
|
+
vec2 center = vec2(0.5);
|
|
1250
|
+
|
|
1251
|
+
float glitchTrigger = step(0.95, fract(sin(floor(time * glitchFrequency) * 12.9898) * 43758.5453));
|
|
1252
|
+
float glitchLine = floor(st.y * 20.0 + time * 5.0);
|
|
1253
|
+
float glitchOffset = fract(sin(glitchLine * 78.233) * 43758.5453) * 2.0 - 1.0;
|
|
1254
|
+
st.x += glitchOffset * glitchAmount * glitchTrigger;
|
|
1255
|
+
|
|
1256
|
+
float displacementAngle = _c0.r * 6.28318;
|
|
1257
|
+
float displacementRadius = _c0.g * displacementIntensity;
|
|
1258
|
+
vec2 displacement = vec2(cos(displacementAngle), sin(displacementAngle)) * displacementRadius;
|
|
1259
|
+
st += displacement;
|
|
1260
|
+
|
|
1261
|
+
vec2 centered = st - center;
|
|
1262
|
+
float angle = time * rotationSpeed + _c0.b * 3.14159;
|
|
1263
|
+
mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
|
|
1264
|
+
centered = rotation * centered;
|
|
1265
|
+
|
|
1266
|
+
float scaleWave = 1.0 + sin(time * 2.0 + _c0.r * 6.28318) * scaleOscillation;
|
|
1267
|
+
centered *= scaleWave;
|
|
1268
|
+
|
|
1269
|
+
float warpPhase = time * 0.5;
|
|
1270
|
+
float warpX = sin(centered.y * 10.0 + warpPhase) * warpIntensity * _c0.g;
|
|
1271
|
+
float warpY = cos(centered.x * 10.0 + warpPhase) * warpIntensity * _c0.b;
|
|
1272
|
+
centered += vec2(warpX, warpY) * 0.1;
|
|
1273
|
+
|
|
1274
|
+
st = centered + center;
|
|
1275
|
+
|
|
1276
|
+
float pixelBreak = step(0.98, fract(sin(dot(floor(st * 50.0), vec2(12.9898, 78.233))) * 43758.5453));
|
|
1277
|
+
st += vec2(pixelBreak * 0.1);
|
|
1278
|
+
|
|
1279
|
+
return st;
|
|
1280
|
+
`
|
|
1281
|
+
});
|
|
1282
|
+
setFunction({
|
|
1283
|
+
name: 'collapseGlitchIllusion',
|
|
1284
|
+
type: 'combineCoord',
|
|
1285
|
+
inputs: [
|
|
1286
|
+
{ type: 'float', name: 'tiles', default: 6 },
|
|
1287
|
+
{ type: 'float', name: 'rotateAmp', default: 2.0 },
|
|
1288
|
+
{ type: 'float', name: 'scaleAmp', default: 1.2 },
|
|
1289
|
+
{ type: 'float', name: 'pauseRate', default: 0.5 },
|
|
1290
|
+
{ type: 'float', name: 'glitchAmp', default: 0.08 }
|
|
1291
|
+
],
|
|
1292
|
+
glsl: `
|
|
1293
|
+
vec2 st = _st;
|
|
1294
|
+
|
|
1295
|
+
/* --- tile split --- */
|
|
1296
|
+
vec2 grid = vec2(tiles);
|
|
1297
|
+
vec2 tile = floor(st * grid);
|
|
1298
|
+
vec2 tileUV = fract(st * grid);
|
|
1299
|
+
|
|
1300
|
+
/* --- stable random per tile --- */
|
|
1301
|
+
float rnd = fract(
|
|
1302
|
+
sin(dot(tile, vec2(127.1, 311.7))) * 43758.5453
|
|
1303
|
+
);
|
|
1304
|
+
|
|
1305
|
+
/* --- pause illusion (time quantization) --- */
|
|
1306
|
+
float t = floor(time * pauseRate) / pauseRate;
|
|
1307
|
+
|
|
1308
|
+
/* --- safe noise input --- */
|
|
1309
|
+
vec3 n = clamp(_c0.rgb, 0.0, 1.0);
|
|
1310
|
+
|
|
1311
|
+
/* --- rotation --- */
|
|
1312
|
+
float angle = (rnd - 0.5) * rotateAmp
|
|
1313
|
+
+ n.r * rotateAmp * sin(t);
|
|
1314
|
+
|
|
1315
|
+
mat2 rot = mat2(
|
|
1316
|
+
cos(angle), -sin(angle),
|
|
1317
|
+
sin(angle), cos(angle)
|
|
1318
|
+
);
|
|
1319
|
+
|
|
1320
|
+
/* --- scale collapse --- */
|
|
1321
|
+
float scale = 1.0 / max(
|
|
1322
|
+
1.0 + (n.g - 0.5) * scaleAmp,
|
|
1323
|
+
0.0001
|
|
1324
|
+
);
|
|
1325
|
+
|
|
1326
|
+
/* --- glitch offset --- */
|
|
1327
|
+
vec2 glitch = vec2(
|
|
1328
|
+
(n.r - 0.5),
|
|
1329
|
+
(n.b - 0.5)
|
|
1330
|
+
) * glitchAmp * step(0.6, rnd);
|
|
1331
|
+
|
|
1332
|
+
/* --- apply transform --- */
|
|
1333
|
+
tileUV -= 0.5;
|
|
1334
|
+
tileUV = rot * tileUV;
|
|
1335
|
+
tileUV *= scale;
|
|
1336
|
+
tileUV += 0.5 + glitch;
|
|
1337
|
+
|
|
1338
|
+
/* --- reassemble --- */
|
|
1339
|
+
st = (tile + tileUV) / grid;
|
|
1340
|
+
|
|
1341
|
+
return st;
|
|
1342
|
+
`
|
|
1343
|
+
});
|
|
1344
|
+
setFunction({
|
|
1345
|
+
name: 'totalVisualChaos',
|
|
1346
|
+
type: 'combineCoord',
|
|
1347
|
+
inputs: [
|
|
1348
|
+
{ type: 'float', name: 'tiles', default: 8 },
|
|
1349
|
+
{ type: 'float', name: 'glitchIntensity', default: 0.3 },
|
|
1350
|
+
{ type: 'float', name: 'distortAmount', default: 0.15 },
|
|
1351
|
+
{ type: 'float', name: 'chromaShift', default: 0.02 },
|
|
1352
|
+
{ type: 'float', name: 'fadeAmount', default: 0.5 },
|
|
1353
|
+
{ type: 'float', name: 'speed', default: 0.2 }
|
|
1354
|
+
],
|
|
1355
|
+
glsl: `
|
|
1356
|
+
vec2 st = _st;
|
|
1357
|
+
vec2 center = vec2(0.5);
|
|
1358
|
+
|
|
1359
|
+
vec2 tile = floor(st * tiles);
|
|
1360
|
+
float tileHash = fract(sin(dot(tile, vec2(12.9898, 78.233))) * 43758.5453);
|
|
1361
|
+
float timeHash = fract(time * speed + tileHash * 10.0);
|
|
1362
|
+
|
|
1363
|
+
float glitchTrigger = step(0.95, fract(timeHash * 3.0));
|
|
1364
|
+
vec2 glitchOffset = vec2(
|
|
1365
|
+
(fract(sin(tile.x * 127.1) * 43758.5) - 0.5) * glitchIntensity * glitchTrigger,
|
|
1366
|
+
(fract(sin(tile.y * 269.5) * 43758.5) - 0.5) * glitchIntensity * glitchTrigger
|
|
1367
|
+
);
|
|
1368
|
+
|
|
1369
|
+
float angle = sin(time * speed + tileHash * 6.28) * distortAmount;
|
|
1370
|
+
float dist = length(st - center);
|
|
1371
|
+
vec2 distortOffset = (st - center) * sin(dist * 10.0 - time * speed) * distortAmount;
|
|
1372
|
+
|
|
1373
|
+
float swapTrigger = step(0.8, tileHash + sin(time * speed * 2.0) * 0.3);
|
|
1374
|
+
vec2 swapTile = tile + vec2(
|
|
1375
|
+
floor((fract(sin(tile.y * 93.9) * 43758.5) - 0.5) * 2.0),
|
|
1376
|
+
floor((fract(sin(tile.x * 67.3) * 43758.5) - 0.5) * 2.0)
|
|
1377
|
+
) * swapTrigger;
|
|
1378
|
+
vec2 tilePos = fract(st * tiles);
|
|
1379
|
+
st = (swapTile + tilePos) / tiles;
|
|
1380
|
+
|
|
1381
|
+
st += glitchOffset + distortOffset;
|
|
1382
|
+
|
|
1383
|
+
float decay = 1.0 - fadeAmount * (1.0 - cos(time * speed)) * 0.5;
|
|
1384
|
+
st = mix(st, center, (1.0 - decay) * 0.3);
|
|
1385
|
+
|
|
1386
|
+
vec2 chromaDir = normalize(st - center);
|
|
1387
|
+
st += chromaDir * chromaShift * sin(time * speed + dist * 5.0);
|
|
1388
|
+
|
|
1389
|
+
float breakdown = step(0.98, fract(tileHash + time * speed * 0.5));
|
|
1390
|
+
st += vec2(
|
|
1391
|
+
(fract(sin(time * 91.3) * 43758.5) - 0.5) * breakdown * 0.5,
|
|
1392
|
+
(fract(sin(time * 71.7) * 43758.5) - 0.5) * breakdown * 0.5
|
|
1393
|
+
);
|
|
1394
|
+
|
|
1395
|
+
return st;
|
|
1396
|
+
`
|
|
1397
|
+
});
|
|
1398
|
+
setFunction({
|
|
1399
|
+
name: 'totalDestruction',
|
|
1400
|
+
type: 'combineCoord',
|
|
1401
|
+
inputs: [
|
|
1402
|
+
{
|
|
1403
|
+
type: 'float',
|
|
1404
|
+
name: 'glitchIntensity',
|
|
1405
|
+
default: 0.5
|
|
1406
|
+
},
|
|
1407
|
+
{
|
|
1408
|
+
type: 'float',
|
|
1409
|
+
name: 'colorShift',
|
|
1410
|
+
default: 0.3
|
|
1411
|
+
},
|
|
1412
|
+
{
|
|
1413
|
+
type: 'float',
|
|
1414
|
+
name: 'distortAmount',
|
|
1415
|
+
default: 0.2
|
|
1416
|
+
},
|
|
1417
|
+
{
|
|
1418
|
+
type: 'float',
|
|
1419
|
+
name: 'fadeLevel',
|
|
1420
|
+
default: 0.3
|
|
1421
|
+
},
|
|
1422
|
+
{
|
|
1423
|
+
type: 'float',
|
|
1424
|
+
name: 'tilesX',
|
|
1425
|
+
default: 8
|
|
1426
|
+
},
|
|
1427
|
+
{
|
|
1428
|
+
type: 'float',
|
|
1429
|
+
name: 'tilesY',
|
|
1430
|
+
default: 8
|
|
1431
|
+
},
|
|
1432
|
+
{
|
|
1433
|
+
type: 'float',
|
|
1434
|
+
name: 'speed',
|
|
1435
|
+
default: 0.5
|
|
1436
|
+
}
|
|
1437
|
+
],
|
|
1438
|
+
glsl: `
|
|
1439
|
+
vec2 st = _st;
|
|
1440
|
+
vec2 originalSt = st;
|
|
1441
|
+
|
|
1442
|
+
float t = time * speed;
|
|
1443
|
+
|
|
1444
|
+
vec2 tile = floor(st * vec2(tilesX, tilesY));
|
|
1445
|
+
float tileHash = fract(sin(dot(tile, vec2(12.9898, 78.233))) * 43758.5453);
|
|
1446
|
+
float tileHash2 = fract(sin(dot(tile, vec2(93.9898, 67.345))) * 43758.5453);
|
|
1447
|
+
|
|
1448
|
+
float glitchTrigger = step(0.95, fract(tileHash + t * 0.1));
|
|
1449
|
+
vec2 glitchOffset = vec2(
|
|
1450
|
+
fract(sin(t * 10.0 + tileHash * 100.0)) * 2.0 - 1.0,
|
|
1451
|
+
fract(cos(t * 10.0 + tileHash2 * 100.0)) * 2.0 - 1.0
|
|
1452
|
+
) * glitchIntensity * glitchTrigger;
|
|
1453
|
+
|
|
1454
|
+
st += glitchOffset;
|
|
1455
|
+
|
|
1456
|
+
float distortPhase = t + tileHash * 6.28318;
|
|
1457
|
+
vec2 center = st - vec2(0.5);
|
|
1458
|
+
float dist = length(center);
|
|
1459
|
+
float angle = atan(center.y, center.x);
|
|
1460
|
+
|
|
1461
|
+
angle += sin(distortPhase) * distortAmount * (1.0 + tileHash);
|
|
1462
|
+
dist += sin(distortPhase * 2.0 + tileHash * 10.0) * distortAmount * 0.1;
|
|
1463
|
+
|
|
1464
|
+
st = vec2(cos(angle), sin(angle)) * dist + vec2(0.5);
|
|
1465
|
+
|
|
1466
|
+
float swapTrigger = step(0.8, fract(tileHash2 * 2.0 + t * 0.05));
|
|
1467
|
+
vec2 tileSize = vec2(1.0 / tilesX, 1.0 / tilesY);
|
|
1468
|
+
vec2 tileCenter = (tile + vec2(0.5)) * tileSize;
|
|
1469
|
+
vec2 targetTile = floor(vec2(
|
|
1470
|
+
fract(tileHash * 7.0) * tilesX,
|
|
1471
|
+
fract(tileHash2 * 7.0) * tilesY
|
|
1472
|
+
));
|
|
1473
|
+
vec2 targetCenter = (targetTile + vec2(0.5)) * tileSize;
|
|
1474
|
+
|
|
1475
|
+
vec2 localPos = fract(st * vec2(tilesX, tilesY));
|
|
1476
|
+
st = mix(st, targetCenter + (localPos - vec2(0.5)) * tileSize, swapTrigger);
|
|
1477
|
+
|
|
1478
|
+
float wavePhase = t + st.x * 10.0 + st.y * 10.0;
|
|
1479
|
+
st.x += sin(wavePhase * 3.0) * colorShift * 0.05;
|
|
1480
|
+
st.y += cos(wavePhase * 3.0) * colorShift * 0.05;
|
|
1481
|
+
|
|
1482
|
+
float breakPattern = step(0.9, fract(sin(dot(floor(st * 50.0), vec2(12.9898, 78.233))) * 43758.5453 + t * 0.1));
|
|
1483
|
+
st += (vec2(
|
|
1484
|
+
fract(sin(st.x * 100.0 + t)),
|
|
1485
|
+
fract(cos(st.y * 100.0 + t))
|
|
1486
|
+
) - vec2(0.5)) * fadeLevel * breakPattern;
|
|
1487
|
+
|
|
1488
|
+
float illusionPhase = sin(t + st.x * 6.28318) * cos(t * 0.7 + st.y * 6.28318);
|
|
1489
|
+
st += vec2(sin(illusionPhase * 5.0), cos(illusionPhase * 5.0)) * 0.02 * fadeLevel;
|
|
1490
|
+
|
|
1491
|
+
return st;
|
|
1492
|
+
`
|
|
1493
|
+
});
|
|
1494
|
+
setFunction({
|
|
1495
|
+
name: 'complexGlitchFX',
|
|
1496
|
+
type: 'combineCoord',
|
|
1497
|
+
inputs: [
|
|
1498
|
+
{
|
|
1499
|
+
type: 'float',
|
|
1500
|
+
name: 'intensity',
|
|
1501
|
+
default: 1.0
|
|
1502
|
+
},
|
|
1503
|
+
{
|
|
1504
|
+
type: 'float',
|
|
1505
|
+
name: 'speed',
|
|
1506
|
+
default: 0.5
|
|
1507
|
+
},
|
|
1508
|
+
{
|
|
1509
|
+
type: 'float',
|
|
1510
|
+
name: 'tilesX',
|
|
1511
|
+
default: 8
|
|
1512
|
+
},
|
|
1513
|
+
{
|
|
1514
|
+
type: 'float',
|
|
1515
|
+
name: 'tilesY',
|
|
1516
|
+
default: 8
|
|
1517
|
+
},
|
|
1518
|
+
{
|
|
1519
|
+
type: 'float',
|
|
1520
|
+
name: 'chromaShift',
|
|
1521
|
+
default: 0.02
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
type: 'float',
|
|
1525
|
+
name: 'distortAmount',
|
|
1526
|
+
default: 0.3
|
|
1527
|
+
},
|
|
1528
|
+
{
|
|
1529
|
+
type: 'float',
|
|
1530
|
+
name: 'glitchFreq',
|
|
1531
|
+
default: 5.0
|
|
1532
|
+
},
|
|
1533
|
+
{
|
|
1534
|
+
type: 'float',
|
|
1535
|
+
name: 'rotationSpeed',
|
|
1536
|
+
default: 0.1
|
|
1537
|
+
}
|
|
1538
|
+
],
|
|
1539
|
+
glsl: `
|
|
1540
|
+
vec2 st = _st;
|
|
1541
|
+
vec2 center = vec2(0.5);
|
|
1542
|
+
|
|
1543
|
+
float t = time * speed;
|
|
1544
|
+
|
|
1545
|
+
vec2 tile = floor(st * vec2(tilesX, tilesY));
|
|
1546
|
+
vec2 tileUV = fract(st * vec2(tilesX, tilesY));
|
|
1547
|
+
|
|
1548
|
+
float hash1 = fract(sin(dot(tile, vec2(12.9898, 78.233))) * 43758.5453);
|
|
1549
|
+
float hash2 = fract(sin(dot(tile, vec2(39.3467, 11.135))) * 22578.1459);
|
|
1550
|
+
float hash3 = fract(sin(dot(tile, vec2(73.1264, 94.673))) * 31415.9265);
|
|
1551
|
+
|
|
1552
|
+
float glitchTrigger = step(0.95, fract(hash1 * 10.0 + t * glitchFreq));
|
|
1553
|
+
|
|
1554
|
+
vec2 randomOffset = vec2(
|
|
1555
|
+
hash2 * 2.0 - 1.0,
|
|
1556
|
+
hash3 * 2.0 - 1.0
|
|
1557
|
+
) * glitchTrigger * intensity * 0.5;
|
|
1558
|
+
|
|
1559
|
+
float scanlineGlitch = step(0.98, fract(st.y * 100.0 + t * 20.0)) * intensity;
|
|
1560
|
+
randomOffset.x += scanlineGlitch * (hash1 - 0.5) * 0.3;
|
|
1561
|
+
|
|
1562
|
+
vec2 toCenter = st - center;
|
|
1563
|
+
float dist = length(toCenter);
|
|
1564
|
+
float angle = atan(toCenter.y, toCenter.x);
|
|
1565
|
+
|
|
1566
|
+
float warpAngle = angle + sin(dist * 10.0 - t * 2.0) * distortAmount * intensity;
|
|
1567
|
+
float warpDist = dist + sin(angle * 3.0 + t) * 0.05 * distortAmount * intensity;
|
|
1568
|
+
|
|
1569
|
+
vec2 warped = center + vec2(
|
|
1570
|
+
cos(warpAngle) * warpDist,
|
|
1571
|
+
sin(warpAngle) * warpDist
|
|
1572
|
+
);
|
|
1573
|
+
|
|
1574
|
+
float tileRotation = hash1 * 6.28318 + t * rotationSpeed;
|
|
1575
|
+
vec2 tileCentered = tileUV - vec2(0.5);
|
|
1576
|
+
mat2 rotMat = mat2(
|
|
1577
|
+
cos(tileRotation), -sin(tileRotation),
|
|
1578
|
+
sin(tileRotation), cos(tileRotation)
|
|
1579
|
+
);
|
|
1580
|
+
tileCentered = rotMat * tileCentered;
|
|
1581
|
+
tileUV = tileCentered + vec2(0.5);
|
|
1582
|
+
|
|
1583
|
+
vec2 shuffleOffset = vec2(
|
|
1584
|
+
fract(hash2 * 7.0 + floor(t * 2.0)),
|
|
1585
|
+
fract(hash3 * 5.0 + floor(t * 2.0))
|
|
1586
|
+
);
|
|
1587
|
+
shuffleOffset = (shuffleOffset - vec2(0.5)) * step(0.7, hash1) * intensity * 0.4;
|
|
1588
|
+
|
|
1589
|
+
st = (tile + tileUV) / vec2(tilesX, tilesY);
|
|
1590
|
+
|
|
1591
|
+
float pixelBreak = step(0.9, hash1 + sin(t * 10.0) * 0.1);
|
|
1592
|
+
st += vec2(
|
|
1593
|
+
sin(st.y * 50.0 + t * 15.0) * pixelBreak,
|
|
1594
|
+
cos(st.x * 50.0 + t * 15.0) * pixelBreak
|
|
1595
|
+
) * intensity * 0.05;
|
|
1596
|
+
|
|
1597
|
+
st = mix(st, warped, 0.3 * intensity);
|
|
1598
|
+
st += randomOffset;
|
|
1599
|
+
st += shuffleOffset;
|
|
1600
|
+
|
|
1601
|
+
float chromaWave = sin(t * 3.0 + st.x * 10.0) * chromaShift * intensity;
|
|
1602
|
+
st.x += chromaWave;
|
|
1603
|
+
|
|
1604
|
+
vec2 kaleidoST = st - center;
|
|
1605
|
+
float ka = atan(kaleidoST.y, kaleidoST.x);
|
|
1606
|
+
float kr = length(kaleidoST);
|
|
1607
|
+
ka = mod(ka, 3.14159 / 3.0);
|
|
1608
|
+
kaleidoST = vec2(cos(ka), sin(ka)) * kr + center;
|
|
1609
|
+
st = mix(st, kaleidoST, 0.2 * intensity * step(0.5, fract(t * 0.3)));
|
|
1610
|
+
|
|
1611
|
+
float decay = 1.0 - (dist * 0.3 * intensity);
|
|
1612
|
+
st = mix(st, st * decay, 0.3 * intensity);
|
|
1613
|
+
|
|
1614
|
+
return st;
|
|
1615
|
+
`
|
|
1616
|
+
});
|
package/index.html
CHANGED
|
@@ -131,8 +131,8 @@
|
|
|
131
131
|
<h1 id="usage">Usage</h1>
|
|
132
132
|
</ul>
|
|
133
133
|
<h3 id="first">First, please use the following code to read on hydra.</h3>
|
|
134
|
-
<div class="ready">await loadScript("<a href="https://
|
|
135
|
-
>https://
|
|
134
|
+
<div class="ready">await loadScript("<a href="https://unpkg.com/hydra-nodegl"
|
|
135
|
+
>https://unpkg.com/hydra-nodegl</a
|
|
136
136
|
>");</div>
|
|
137
137
|
<ol>
|
|
138
138
|
<li>
|
|
@@ -743,7 +743,7 @@ src(s0)
|
|
|
743
743
|
</ol>
|
|
744
744
|
<br />
|
|
745
745
|
<p id="info">
|
|
746
|
-
Click <a href="https://
|
|
746
|
+
Click <a href="https://unpkg.com/hydra-nodegl">here</a> for
|
|
747
747
|
more information.
|
|
748
748
|
</p>
|
|
749
749
|
<p>
|
|
@@ -763,14 +763,14 @@ src(s0)
|
|
|
763
763
|
<h2>First commited as "NodeBook"</h2>
|
|
764
764
|
<p>on Jan 19th, 2023.</p>
|
|
765
765
|
<h2>Released the newest</h2>
|
|
766
|
-
<p>on
|
|
766
|
+
<p>on Feb 9th, 2026.</p>
|
|
767
767
|
<h6>
|
|
768
768
|
<a href="https://github.com/Uchida16104/NodeGL/commits/main/README.md"
|
|
769
769
|
>Show more</a
|
|
770
770
|
>
|
|
771
771
|
</h6>
|
|
772
772
|
</div>
|
|
773
|
-
<script src="./script.
|
|
774
|
-
<script src="
|
|
773
|
+
<script src="./script.cjs"></script>
|
|
774
|
+
<script src="https://unpkg.com/hydra-nodegl"></script>
|
|
775
775
|
</body>
|
|
776
776
|
</html>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hydra-nodegl",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "It'll be convenience for hydra used by Node.js.",
|
|
5
5
|
"main": "./index.cjs",
|
|
6
6
|
"bin": {
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "git+https://github.com/Uchida16104/NodeGL.git"
|
|
12
12
|
},
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"@Uchida16104:registry": "https://npm.pkg.github.com",
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
13
17
|
"bugs": {
|
|
14
18
|
"url": "https://github.com/Uchida16104/NodeGL/issues"
|
|
15
19
|
},
|
package/script.cjs
CHANGED
|
File without changes
|