jes notes Index Gallery . Shaft passers Snap issues
2025-03-08
Last modified: 2025-03-08 22:27:52
< 2025-03-07 2025-03-09 >
Isoform
Some ideas:
- some way to deform the domain of an object with 1-dimensional function along an axis, or 2-dimensional function along a plane, or 3-dimensional function across all space
- in the "pattern" tools we can let the user supply a function to deform the pattern domain without deforming the object domain
- some way to make a surface defined by a function, like the terrain in https://www.youtube.com/watch?v=BFld4EBO2RE (is this just a plane deformed by noise or is it different? and does it have a broken SDF?)
- we can give an "EQ"-like UI for controlling noise functions
- ellipsoids
- "renormalise" option on features that aren't "exact"
- track interior/exterior SDF correctness separately, and propagate correctness up the tree
- shadertoy export
- custom SDF DSL? need to be able to compile to GLSL, and evaluate in marching cubes
I'm going to add a "scale" node first. I want it to have a "uniform" scale mode,
which scales along all axes, and a "scale along axis" mode, which maybe rotates
so that the axis is vertical, scales along Z, and then rotates back? Would that work?
- when we delete an element from the tree, if it was the selected one, we need to close the property editor
Making ScaleNode
is proving really tricky. It is easy to scale the domain along
a particular axis, but then how do I unscale the resulting distance? I think I need
to know the ratio of the resulting direction gradient to the (1,1,1) direction gradient
and then multiply the distance by that much? Either I'm doing it wrong or that actually
doesn't work.
- cross section view with visualisation of the SDF in that plane
Meh, maybe the idea fundamentally doesn't work. I'll just make it change its exactness
to "lowerbound" if scaled non-uniformly.
Another idea would be to see if I can make the texturing tools respect "lowerbound"
rather than simply isosurface. Not clear.
- when we try to compile a broken shader, don't break forever (I thought the try/catch was meant to fix this)
- reduce duplicated shader code in
shaderImplementation()
functions
- some way to draw objects semi-transparent (so, on the first hit you register some colour, and then you move through the interior with inverted distances, then on the second hit you alpha blend it with the existing colour and starting moving through the exterior with positive distances, etc. until either divergence or too many hits)
< 2025-03-07 2025-03-09 >