29 lines
		
	
	
		
			912 B
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			29 lines
		
	
	
		
			912 B
		
	
	
	
		
			Plaintext
		
	
	
	
|   | void computeRectangleBounds( float in_offset, float in_radius, float in_maxRadius, vec2 size, out vec2 minP, out vec2 maxP, out float out_radius ) | ||
|  | { | ||
|  |   out_radius = min( in_radius, in_maxRadius ); | ||
|  |   float borderSize = out_radius + in_offset; | ||
|  |   minP = vec2( borderSize, borderSize ); | ||
|  |   maxP = size - vec2( borderSize, borderSize ); | ||
|  | } | ||
|  | 
 | ||
|  | float roundedRectangleDistance( vec2 minP, vec2 maxP, vec2 pos) | ||
|  | { | ||
|  |   vec2 leftTop     = minP - pos; | ||
|  |   vec2 bottomRight = pos - maxP; | ||
|  | 
 | ||
|  |   vec2 maximum = max( leftTop, bottomRight ); | ||
|  |   maximum = max( maximum, vec2(0,0) ); | ||
|  | 
 | ||
|  |   return length( maximum ); | ||
|  | } | ||
|  | 
 | ||
|  | float roundedRectangle( vec2 minP, vec2 maxP, vec2 point, float borderSize, float sharp ) | ||
|  | { | ||
|  |   float rectangleDistance = roundedRectangleDistance( minP, maxP, point ); | ||
|  |   rectangleDistance -= borderSize; | ||
|  |   rectangleDistance *= sharp; | ||
|  | 
 | ||
|  |   rectangleDistance = clamp( rectangleDistance, 0.0, 1.0 ); | ||
|  | 
 | ||
|  |   return 1.0 - rectangleDistance; | ||
|  | } |