From 9148f5cb963f05973a5e3d403e6c554f775ff642 Mon Sep 17 00:00:00 2001 From: pommicket Date: Thu, 26 Jan 2023 09:53:29 -0500 Subject: ProjectX/Y/Z --- README.md | 1 + src/main.rs | 2 -- src/sdf.rs | 21 +++++++++++++++++++++ 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,Box,Box) 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, Box), + #[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 + } } } } -- cgit v1.2.3