I'm not sure I fully understand the problem. Maybe come and ask over on our Discord: https://discord.gg/fS69VdFXpk
(if we do find a solution remind me to update the post here for the benefit of other people)
I think this was meant to be a reply to this comment: https://itch.io/post/3032210
> The ability to set a mirror based on two selected objects.
I'm still struggling to understand exactly what you mean. Are you saying "once you've moved the mirror it's difficult to get it back in the same place again"?
i.e. would another solution be a way to save and recall mirrors?
I like the "precision move" idea.
Regarding the "mirror based on two selected objects" suggestion - what advantages does this have over the current mirror?
(PS - I've added "precision move" to our Github suggestions: https://github.com/icosa-gallery/open-brush/discussions/100
Any thoughts on how snapping should work? Would it only apply to selecting and moving existing strokes or would it be like the cube stencil where your actual brush strokes snap to a grid?
(Feel free to hop on over to our Discord if you want to chat in depth)
> You'd just need to tag all your objects as repeating, same goes for mirroring.
I think "tagging a bunch of objects as mirrored" is different to "mirror a group of objects. The choice of axis for the reflection would surely be based on the group in the latter case.
And for booleans this distinction is even more useful as you might want to express something like (A ⋂ B) - C).
Again - having some awareness of the hierarchy would allow more control as you're essentially creating a tree structure (like Raymarching Toolkit does)
Also take a look at https://github.com/zalo/libfive-unity - this works in a similar way.
But wouldn't that only handle repetition on the current shape? How would I go about handling "repeat the entire SDF" or "repeat the SDF group I'm part of".
Similar requirements would apply to booleans and in fact - mirroring would benefit as well.
I think Kevin Watter's Raymarching Toolkit allows this kind of structure if my memory serves me correctly.
How do you imagine domain repetition working? Would it be a custom shape type that affected child shapes? Does the compute shader know about the Unity hierarchy? I guess I need to dig into the code myself really!
For me - the magic of raymarching SDFs is all the stuff that would be hard or impossible to do with meshes - the domain repetition stuff is usually the first thing I play with when I get my hands on a new SDF toy.
Obviously there are other features that also loosely fall into this category - distortion, complex booleans, chamfered/stepped blending etc.
Is it possible to support any of these in your system?
Devs - maybe make clear on the bug report tickets for 2018 that problems are probably specific to particular user's setups? Anyone reading this forum will presume that it's broken on recent Unity and development has halted. I nearly did coming back after a long hiatus.
1. Work out which part of the Shadertoy is the actual distance function.
2. Convert that from GLSL to HLSL
3. Figure out what other rendering tricks are used (ambient occlusion, fog, whatever) and decide if they are worth trying to port.
(3) is probably the hardest. If all you want is the "geometry" (so to speak) then it's doable once you understand the structure of the Shadertoy. Step (2) is usually fairly easy and gets easier when you get more used to the syntax differences.
I'd suggest also mirroring the source repo to Github. Myself (and I presume others) often find interesting projects via Github's social and search functionality. Gitlab and Bitbucket don't currently have the critical mass for them to be worth checking in this way. Even if you prefer a different Git hosting service it might be worth also having a Github presence just to make it easier for people to find you. You can probably set the mirror to auto-update so it shouldn't need extra work once you've set it up.
It's even worse than I thought. It's "click > wait > read > go back and figure out where in the page you'd scrolled to"!
Please - tabbed browsing is the greatest innovation in UI design in living memory. You had that bit right. Please don't get worse.
Why was the decision made to remove the ability to open things in a new tab in the itch app? I'm going to have to go back to using the website now for any sensible usage. I usually open stuff I'm interested in in multiple new tabs and then go through them one by one. Now it's the painfully slow "click > wait > read > go back" workflow...
More please! It would also be remarkably awesome if you included the source code for some/all of these. I know that makes licencing tricky but you're relying on good will for the pricing so I think most people would do the right thing.
"Update August 2018: The project is now freely available under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 license"
This is awesome and very generous. I'm really chuffed you've decided to do this and I'm hoping it will encourage more people to get involved.
However... CC licences aren't really meant for code: https://creativecommons.org/faq/#can-i-apply-a-creative-commons-license-to-softw...
The ShareAlike bit probably maps closest to a GPL licence which might be what you're really after.
The Non-commercial bit is trickier. It might be that GPL is all you need. It's pretty hard for people to abuse your code commercially if they have to release the source code. However - if you really need to restrict it further then this Quora question might be helpful: https://www.quora.com/Is-there-a-license-like-the-CC-BY-NC-SA-for-software - but bear in mind "non-commercial is a very tricky thing to define and can cause problems for projects that you probably would intuitively expect to regard themselves as non-commercial.
The real benefit to releasing this under an open licence is hopefully that other people can contribute to the project. With that in mind, will you be releasing the full source code?
> I'd love to see any code or snippets or general feedback on doing it in a way that's not too hacky!
I think it's more of a UI problem than it is a code problem. Where is 'cell' useful and how can you elegantly allow it to be used to modify other values.
One of the reasons I started messing around with Klak is that this feels like it should be a node-based graph thing rather than the hierarchy based UI you've currently got.
However - logically speaking you can create graphs with the inspector UI - they are just harder to visualise.
I think compiling a set of potential use-cases for 'cell' might help clarify both the code structure and the UI
1. Applying materials to a subset of cells based on a rule
2. Applying modifiers to a subset of cells based on a rule
3. Choosing primitives (or whole subtrees) based on the cell value and a rule
Hi. I hacked together a simple integration with Keijiro Takahashi's Klak ( https://github.com/keijiro/klak ) to allow procedural animation of raymarch inputs.
Grab it from here: https://github.com/IxxyXR/Klak-Raymarch
I also plan to implement a custom timeline clip type for animating the raymarcher - maybe similar to https://github.com/keijiro/ProceduralMotionTrack
Hi. I've been hacking the generated shaders to get effects such as shown below. I'd like to start modifying the built-in shader templates and snippets to make this reusable (and even animatable).
The changes are fairly simple.
1. Add an out parameter to the modifier snippet so that I can also return the value of cell
2. Declare cell in map() and add the extra parameter
3. Modify the radius in the function call to sphere() based on the value of cell.
4. Modify the material ID that map() returns based on the value of cell.
Obviously though - if I change the templates and snippets I've essentially forked your code and the burden for future updates will be on my shoulders.
So I wondered if you'd be interested in incorporating this feature in the official codebase? There's some further work needed to make this less hacky - probably the ability to add multiple materials to primitives and other ways to make use of the cell value.