summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2023-08-02 14:14:58 -0400
committerpommicket <pommicket@gmail.com>2023-08-02 14:14:58 -0400
commitba75c5d98896d95f238976a35526f22af77e2a46 (patch)
tree4f92726f3b7347fe513e0dbdc41576186bcae67b
parentacf6239d7cef85d37fa71e6495c3562a58aa8d4e (diff)
sinusoidal noise initial draft
-rw-r--r--fractiform.js62
1 files changed, 61 insertions, 1 deletions
diff --git a/fractiform.js b/fractiform.js
index 74501a9..2079552 100644
--- a/fractiform.js
+++ b/fractiform.js
@@ -570,6 +570,66 @@ ${type} floorf(${type} x, ${type} stepw, ${type} steph, ${type} phase) {
}
`,
).join('\n'),
+ `
+//! .name: Sinusoidal
+//! .category: noise
+//! .description: Noise generated from sine waves
+
+float noise_sin(float x) {
+ float k = 0.5;
+ float phase = 2.45;
+
+ float v = 0.0;
+ for (int i = 0; i < 8; i++) {
+ float s = sin(x + phase);
+ v += k * s * s;
+ x *= 2.0;
+ k *= 0.5;
+ phase *= 1.7;
+ phase = mod(phase, 6.28);
+ }
+ return v;
+}
+
+float noise_sin(vec2 x) {
+ float v = 0.0;
+ float k =0.5;
+ vec2 phase = vec2(1.0, 3.6);
+ float theta = 2.7;
+ for (int i = 0; i < 8; i++) {
+ v += k * abs(sin(x.x + phase.x) * sin(x.y + phase.y));
+ phase *= 3.8;
+ phase = mod(phase, 6.28);
+ x *= 2.0;
+ x = mat2(cos(theta), sin(theta), -sin(theta), cos(theta)) * x;
+ k *= 0.5;
+ theta *= 2.4;
+ theta = mod(theta, 6.28);
+ }
+ return v;
+}
+
+float noise_sin(vec3 x) {
+ float v = 0.0;
+ float k = 0.5;
+ vec3 phase = vec3(1.0, 3.6, 2.2);
+ float theta = 2.7;
+ float phi = 4.6;
+ for (int i = 0; i < 8; i++) {
+ v += k * abs(sin(x.x + phase.x) * sin(x.y + phase.y) * sin(x.z + phase.z));
+ phase *= 4.7;
+ phase = mod(phase, 6.28);
+ x *= 2.0;
+ float ct = cos(theta), st = sin(theta);
+ float cp = cos(phi), sp = sin(phi);
+ x = mat3(st*cp, ct*cp, -sp, st*sp, ct*sp, cp, ct, -st, 0.0) * x;
+ k *= 0.5;
+ theta *= 2.4;
+ theta = mod(theta, 6.28);
+ }
+ return v;
+}
+`
];
function auto_update_enabled() {
@@ -1708,7 +1768,7 @@ function export_widgets() {
data.push('c');
data.push(control.id);
data.push(':');
- data.push(get_control_value(widget.id, control.id));
+ data.push(get_control_value(widget.id, control.id).value);
data.push(';');
}
data.pop(); // remove terminal separator