31 lines
1.7 KiB
HLSL
31 lines
1.7 KiB
HLSL
|
// The MIT License
|
|||
|
// Copyright © 2015 Inigo Quilez
|
|||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
|||
|
// and associated documentation files (the "Software"), to deal in the Software without restriction,
|
|||
|
// including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|||
|
// and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
|||
|
//subject to the following conditions: The above copyright notice and this permission notice shall be
|
|||
|
// included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS",
|
|||
|
// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|||
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
|||
|
// OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|||
|
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
|||
|
// OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
//
|
|||
|
// From https://www.shadertoy.com/view/4llXD7
|
|||
|
|
|||
|
// Signed distance to a 2D rounded box with four individual corner sizes
|
|||
|
// p = position, b = box half width/height
|
|||
|
// r = corner radiuses (top right, bottom right, top left, bottom left)
|
|||
|
float sdRoundBox( in float2 p, in float2 b, in float4 r )
|
|||
|
{
|
|||
|
// We choose the radius based on the quadrant we're in
|
|||
|
// We cap the radius based on the minimum of the box half width/height
|
|||
|
r.xy = (p.x>0.0)?r.xy : r.zw;
|
|||
|
r.x = (p.y>0.0)?r.x : r.y;
|
|||
|
r.x = min(2.0f*r.x, min(b.x, b.y));
|
|||
|
|
|||
|
float2 q = abs(p)-b+r.x;
|
|||
|
return min(max(q.x,q.y),0.0) + length(max(q,0.0)) - r.x;
|
|||
|
}
|