libgarbage: add square helix
This commit is contained in:
parent
9bf8c0962b
commit
9befad0a59
2 changed files with 29 additions and 10 deletions
|
@ -86,11 +86,28 @@ float sdHelix(float3 p, float r1, float r2, float incline) {
|
|||
float angle = atan2(p.z, p.x); // angle around y axis
|
||||
float y = angle * incline - p.y;
|
||||
y = fmod(y, UNITY_PI * incline * 2) + UNITY_PI * incline;
|
||||
// 2d circle
|
||||
float dist = length(float2(x2, y)) - r2;
|
||||
return dist * 0.8;
|
||||
}
|
||||
_MAT_VARIANT3(mHelix, sdHelix, float, float, float)
|
||||
|
||||
// box = (width, height, rotation)
|
||||
float sdHelixSquare(float3 p, float r1, float3 box, float incline) {
|
||||
float x2 = length(p.xz) - r1; // vertical plane
|
||||
float angle = atan2(p.z, p.x); // angle around y axis
|
||||
float y = angle * incline - p.y;
|
||||
y = fmod(y, UNITY_PI * incline * 2) + UNITY_PI * incline;
|
||||
// rotated 2d box
|
||||
float2 p2 = float2(x2, y);
|
||||
p2 = mul(float2x2(cos(box.z), -sin(box.z), sin(box.z), cos(box.z)), p2);
|
||||
float2 d = abs(p2) - box.xy;
|
||||
float dist = length(max(d, 0)) + min(max(d.x, d.y), 0);
|
||||
return dist * 0.8;
|
||||
}
|
||||
_MAT_VARIANT3(mHelixSquare, sdHelixSquare, float, float3, float)
|
||||
|
||||
|
||||
float sdLine(float3 p, float3 a, float3 b, float r) {
|
||||
float3 pa = p - a;
|
||||
float3 ba = b - a;
|
||||
|
@ -106,6 +123,7 @@ float sdGyroid(float3 p, float scale, float bias, float thickness) {
|
|||
}
|
||||
_MAT_VARIANT3(mGyroid, sdGyroid, float, float, float)
|
||||
|
||||
|
||||
SurfacePoint mFromDist(float d, Material mat = DEFAULT_MAT) {
|
||||
SurfacePoint o;
|
||||
o.dist = d;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue