summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2023-01-26 09:53:29 -0500
committerpommicket <pommicket@gmail.com>2023-01-26 09:53:29 -0500
commit9148f5cb963f05973a5e3d403e6c554f775ff642 (patch)
tree63593ed02bc41afed113d7b74a87d7654c313e3d
parent8d7f51d70319b84627ed27cd8eb7b8f48fc2cb43 (diff)
ProjectX/Y/Z
-rw-r--r--README.md1
-rw-r--r--src/main.rs2
-rw-r--r--src/sdf.rs21
3 files changed, 22 insertions, 2 deletions
diff --git a/README.md b/README.md
index fb766f4..7d0d0c6 100644
--- a/README.md
+++ b/README.md
@@ -44,4 +44,5 @@ a263736466a169536d6f6f74684d696e82a1634d696e82a167436f6d706f736583a167436f6d706f
a263736466a1634d696e82a1634d697883a1634d697883a16c564c696e655365676d656e74a16454696d6582fa3c8b2f18fa3f3678a6a168547269507269736d82a16454696d6582fabdb2b99afa3f656318a16454696d6582fabd37e33afa3f1b42c6a16454696d6582fabd3dfe1afa3e32b6b0a167436f6d706f736583a16f496e66696e6974654d6972726f7273a16454696d6582fa3d9f9eb1fa3ddac4e0a168547269507269736d82a16454696d6582fa3c1192e8fa3eca5188a16454696d6582fa3d2c25dafa3e9d72f4684964656e74697479a16454696d6582fa3d837b71fa3e73be30a167436f6d706f73658366576962626c79a167436f6d706f73658366576962626c79a16843796c696e64657282a16454696d6582fabd96901dfa3ed15cfca16454696d6582fa3d7cd81afa3dadb7d0684964656e74697479684964656e746974796e636f6c6f725f66756e6374696f6ea1634d697883a1634d697883a167436f6d706f736582a166526f7461746583a16454696d6582fa3db2bf97fa3ef7ee74a16454696d6582fa3c29fab0fa3e31fb78a16454696d6582fabc315b80fa3f0f75baa16353696ea16454696d6582fabc3cdc68fa3f2c1a1aa16353696ea16454696d6582fa3d947937fa3efcb818a16454696d6582fa3d8cd239fa3d6083e066576962626c79a16454696d6582fabd734040fa3f4e39e8
a263736466a16653696e436f7382a16c564c696e655365676d656e74a16454696d6582fabd6f12dafa3f601600a167436f6d706f736583a167436f6d706f736582a1695472616e736c61746583a16454696d6582fabd1eb54dfa3e66a640a16454696d6582fabd8a51a4fa3f25632aa16454696d6582fabbadc0a0fa3f0f7794a1695472616e736c61746583a16454696d6582fa3da911fdfa3ea7fdd4a16454696d6582fa3d04bdf2fa3f6cae42a16454696d6582fa3ce2d374fa3f3716f6a1634d696e82a168547269507269736d82a16454696d6582fa3dab2981fa3f3b4b96a16454696d6582fabd7c9badfa3f7558faa165546f727573a266726164697573a16454696d6582fabdaad43efa3e84f9e469746869636b6e657373a16454696d6582fabc61bdcdfa3c4d3880684964656e746974796e636f6c6f725f66756e6374696f6ea1634d697883a166526f7461746583a16454696d6582fabdc72393fa3e34f9d8a16454696d6582fabc813218fa3f675278a16454696d6582fa3ca4e728fa3f59b236a167436f6d706f736582a16353696ea16454696d6582fabdbce95dfa3f374964a16f496e66696e6974654d6972726f7273a16454696d6582fa3c50ad30fa3e06c2e8a16454696d6582fabd549d60fa3f2584a8
a263736466a16653696e436f7382a167436f6d706f736583a165537153696ea16454696d6582fa3be21a30fa3ef85110a169536d6f6f74684d696e82a16443756265a16454696d6582fabcbd91a8fa3ec68354a166537068657265a16454696d6582fabd8d45cafa3f45f8c8684964656e74697479a1634d696e82a169536d6f6f74684d696e82a166537068657265a16454696d6582fa3b6a4c00fa3f476626a168426f784672616d65a26473697a65a16454696d6582fa3e458346fa4007694a69746869636b6e657373a16454696d6582fa3c0dac9bfa3daf70a7a1634d697883a168426f784672616d65a26473697a65a16454696d6582fabd26ef4efa4017a0e269746869636b6e657373a16454696d6582fabc003f71fa3e4706d0a16443756265a16454696d6582fa3d8330c3fa3f43448aa16454696d6582fabd565d0dfa3f3b8da66e636f6c6f725f66756e6374696f6ea167436f6d706f736582a16641726374616ea16454696d6582fa3d17bdc2fa3f09ec7ca167436f6d706f736582a166526f7461746583a16454696d6582fabce58528fa3e8bdbf0a16454696d6582fa3d06c2a6fa3f05c282a16454696d6582fa3d13eaaefa3e411148a166526f7461746583a16454696d6582fa3cc0bdd8fa3efc278ca16454696d6582fa3cf95bc4fa3f7868faa16454696d6582fa3d3f2342fa3f585f32
+a263736466a16653696e436f7382a1634d697883a167436f6d706f736583a16353696ea16454696d6582fabd9ebb46fa3f18eb88a165546f727573a266726164697573a16454696d6582fa3e6d0eb4fa402fbf0669746869636b6e657373a16454696d6582fa3c752fc2fa3e4cc7e7684964656e74697479a167436f6d706f736583a1695472616e736c61746583a16454696d6582fa3db691c1fa3ef9dc24a16454696d6582fa3d903c57fa3f6b36caa16454696d6582fa3d21edbafa3f3406246850726f6a6563745a684964656e74697479a16454696d6582fabb5f1200fa3f0cd1f4a167436f6d706f736583a165537153696ea16454696d6582fabd2f45a7fa3f0a677aa167436f6d706f736583675369676d6f6964a16c564c696e655365676d656e74a16454696d6582fabc772098fa3ed113c8684964656e74697479684964656e746974796e636f6c6f725f66756e6374696f6ea167436f6d706f736582a1634d697883a1695472616e736c61746583a16454696d6582fabd066e06fa3f05798aa16454696d6582fa3dba9733fa3f0c084aa16454696d6582fabdc95d37fa3e81ed3866576962626c79a16454696d6582fabc5ec830fa3f202cb2a166526f7461746583a16454696d6582fabd0966f4fa3e27ba20a16454696d6582fabd94f970fa3e2f19b8a16454696d6582fabd588d27fa3e633d18
```
diff --git a/src/main.rs b/src/main.rs
index 4403252..5f94c12 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,9 +1,7 @@
/*
@TODO:
-- let user go back&forth through past sdfs using scenes.txt file
- RnToRn functions (& add back in RToR)
- also add PerComponent(Box<RToR>,Box<RToR>,Box<RToR>) in R3ToR3
-- ProjectX, ProjectY, ProjectZ in R3ToR?
- documentation
- GenRandom integers (just use 0..u32::MAX and add a modulus)
- blender-style rendering the picture in multiple frames
diff --git a/src/sdf.rs b/src/sdf.rs
index 929c324..8a68c06 100644
--- a/src/sdf.rs
+++ b/src/sdf.rs
@@ -261,6 +261,12 @@ pub enum R3ToR {
#[prob(2)]
#[only_if(params.max_depth >= 0)]
Min(Box<R3ToR>, Box<R3ToR>),
+ #[prob(0.1)]
+ ProjectX,
+ #[prob(0.1)]
+ ProjectY,
+ #[prob(0.1)]
+ ProjectZ,
}
impl R3ToR3 {
@@ -685,6 +691,21 @@ impl Function for R3ToR {
let f_output = f.to_glsl(pre_output, code, var);
post.to_glsl(f_output, code, var)
}
+ ProjectX => {
+ let output = var.next();
+ write_str!(code, "float {output} = {input}.x;\n");
+ output
+ }
+ ProjectY => {
+ let output = var.next();
+ write_str!(code, "float {output} = {input}.y;\n");
+ output
+ }
+ ProjectZ => {
+ let output = var.next();
+ write_str!(code, "float {output} = {input}.z;\n");
+ output
+ }
}
}
}