12345678910111213141516171819202122232425262728 |
- #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
|