Работа в процессе. Добавление ширины диапазона
This commit is contained in:
@@ -2,12 +2,14 @@ shader_type canvas_item;
|
||||
|
||||
/* Закрашенный сектор окружности ограниченный угловым сектором и радиусами */
|
||||
|
||||
uniform vec4 color: source_color = vec4(1, 1, 1, 1);
|
||||
uniform float width: hint_range(0.0, 360.0, 0.1) = 45.0;
|
||||
uniform float inner_radius: hint_range(0.0, 0.125) = 0.1;
|
||||
uniform float outer_radius: hint_range(0.0, 0.125) = 0.125;
|
||||
uniform vec4 color: source_color = vec4(1, 1, 1, 1);
|
||||
uniform float width: hint_range(0.0, 360.0, 0.1) = 45.0;
|
||||
uniform float band: hint_range(0.0, 0.125) = 0.04;
|
||||
uniform float radius: hint_range(0.0, 0.125) = 0.06;
|
||||
uniform float inner_clip: hint_range(0.0, 0.125) = 0.045;
|
||||
|
||||
const vec2 center = vec2(0.125, 0.125); /* Центр должен быть в (0.5, 0.5) но по неведомой причине это не так */
|
||||
|
||||
const vec2 center = vec2(0.125, 0.125); /* Центр должен быть в (0.5, 0.5), но это не так */
|
||||
const float dsa = 0.0025; /* Относительное расстояние на котором выполняется сглаживание краёв по радиальным линиям */
|
||||
const float dsr = 0.00025; /* Относительное расстояние на котором выполняется сглаживание краёв по круговым линиям */
|
||||
|
||||
@@ -20,12 +22,27 @@ float smooth_px(float r, float R, float ds)
|
||||
|
||||
vec4 sector(vec4 c, vec2 uv_pos, float r0, float r1, float w)
|
||||
{
|
||||
vec2 d = uv_pos - center;
|
||||
bool rc = false;
|
||||
if (r1 > center.x)
|
||||
{
|
||||
rc = true;
|
||||
r1 = center.x;
|
||||
}
|
||||
if (r0 < inner_clip)
|
||||
{
|
||||
rc = true;
|
||||
r0 = inner_clip;
|
||||
}
|
||||
vec2 d = uv_pos - center;
|
||||
float theta = atan(d.x, d.y);
|
||||
w = radians(w / 2.0);
|
||||
float l = distance(center, uv_pos);
|
||||
float vr = smooth_px(r0, l, dsr) - smooth_px(r1, l, dsr);
|
||||
float va = smooth_px(-w, theta, dsa) - smooth_px(w, theta, dsa);
|
||||
if (rc)
|
||||
{
|
||||
c *= vec4(1.0, 0.5, 0.5, 1.0);
|
||||
}
|
||||
return c * sqrt(va * vr);
|
||||
}
|
||||
|
||||
@@ -40,5 +57,6 @@ void rotate_vec2(inout vec2 vert, float a)
|
||||
|
||||
void fragment()
|
||||
{
|
||||
COLOR = sector(color, UV, inner_radius, outer_radius, width);
|
||||
float dr = band / 2.0;
|
||||
COLOR = sector(color, UV, radius - dr, radius + dr, width);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user