You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
611 B
28 lines
611 B
#ifndef UNITY_SDF2D_INCLUDED |
|
#define UNITY_SDF2D_INCLUDED |
|
|
|
// Ref: https://www.iquilezles.org/www/articles/distfunctions2d/distfunctions2d.htm |
|
|
|
float CircleSDF(float2 position, float radius) |
|
{ |
|
return length(position) - radius; |
|
} |
|
|
|
float RectangleSDF(float2 position, float2 bound) |
|
{ |
|
float2 d = abs(position) - bound; |
|
return length(max(d, float2(0, 0))) + min(max(d.x, d.y), 0.0); |
|
} |
|
|
|
float EllipseSDF(float2 position, float2 r) |
|
{ |
|
float2 p = position; |
|
float2 r2 = r*r; |
|
|
|
float k0 = length(p/r); |
|
float k1 = length(p/r2); |
|
|
|
return k0*(k0 - 1.0)/k1; |
|
} |
|
|
|
#endif // UNITY_SDF2D_INCLUDED
|
|
|