aboutsummaryrefslogtreecommitdiff
path: root/src/main/resources/shaders/modules
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2026-10-14 02:06:42 +0530
committerAkshay Nair <phenax5@gmail.com>2026-10-14 02:27:24 +0530
commit686b2954a7cf0aae0493b4a974400aed64bbb96f (patch)
tree8ec556b14c4d6eb41634e25bf9a0bac40dd4d4ae /src/main/resources/shaders/modules
parent49b6b0c9d7de093fc63af376afe5d03f1690995a (diff)
downloadart-playground-openrndr-686b2954a7cf0aae0493b4a974400aed64bbb96f.tar.gz
art-playground-openrndr-686b2954a7cf0aae0493b4a974400aed64bbb96f.zip
Add moth trtrfr
Diffstat (limited to '')
-rw-r--r--src/main/resources/shaders/modules/complex.glsl46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/main/resources/shaders/modules/complex.glsl b/src/main/resources/shaders/modules/complex.glsl
new file mode 100644
index 0000000..87114ac
--- /dev/null
+++ b/src/main/resources/shaders/modules/complex.glsl
@@ -0,0 +1,46 @@
+float cosh(float val) {
+ float tmp = exp(val);
+ float cosH = (tmp + 1.0 / tmp) / 2.0;
+ return cosH;
+}
+
+float sinh(float val) {
+ float tmp = exp(val);
+ float sinH = (tmp - 1.0 / tmp) / 2.0;
+ return sinH;
+}
+
+vec2 cmul(vec2 a, vec2 b) {
+ return vec2(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);
+}
+
+vec2 cdiv(vec2 a, vec2 b) {
+ float denominator = b.x * b.x + b.y * b.y;
+ if (denominator == 0.) return a;
+ return cmul(a, vec2(b.x, -b.y)) / denominator;
+}
+
+vec2 csin(vec2 a) {
+ return vec2(sin(a.x) * cosh(a.y), cos(a.x) * sinh(a.y));
+}
+
+vec2 ccos(vec2 a) {
+ return vec2(cos(a.x) * cosh(a.y), -sin(a.x) * sinh(a.y));
+}
+
+vec2 ctan(vec2 a) {
+ return cdiv(csin(a), ccos(a));
+}
+
+vec2 cpow(vec2 z, int n) {
+ vec2 res = z;
+ for (int i = 0; i < 20; i++) {
+ if (i >= n - 1) break;
+ res = cmul(z, res);
+ }
+ return res;
+}
+
+vec2 cexp(vec2 z) {
+ return exp(z.x) * vec2(cos(z.y), sin(z.y));
+}