struct Functions {
float sdStar5(in float2 p, in float r, in float rf)
{
const float2 k1 = float2(0.809016994375, -0.587785252292);
const float2 k2 = float2(-k1.x,k1.y);
p.x = abs(p.x);
p -= 2.0*max(dot(k1,p),0.0)*k1;
p -= 2.0*max(dot(k2,p),0.0)*k2;
p.x = abs(p.x);
p.y -= r;
float2 ba = rf*float2(-k1.y,k1.x) - float2(0.0,1.3);
float h = clamp( dot(p,ba)/dot(ba,ba), 0.0, r );
return length(p-ba*h) * sign(p.y*ba.x-p.x*ba.y);
}
};
Functions F;
uv =-(uv-1.0);
float d = F.sdStar5( uv, 0.7, 0.5);
float3 col = (d > 0.0) ? float3(0.0,0.0,0.0) : float3(1.0,1.0,1.0);
col = lerp( col, float3(1.0,1.0,1.0), 1.0 - smoothstep(0.0,0.0, abs(d)));
return col;