| 
									
										
										
										
											2025-05-18 17:11:31 +00:00
										 |  |  | // #include "res://addons/rokojori_action_library/Runtime/Shading/Library/SDF.gdshaderinc" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-12 16:48:15 +00:00
										 |  |  | 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; | 
					
						
							|  |  |  | } |