Работа в процессе. Оптимизация. Убран параметр цвета
This commit is contained in:
@@ -1,18 +1,20 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
/* Закрашенная окружность */
|
||||
|
||||
uniform vec4 color: source_color = vec4(1, 1, 1, 1);
|
||||
const float ds = 0.01; // Относительное расстояние на котором выполняется сглаживание краёв
|
||||
const vec2 center = vec2(0.125, 0.125); // Центр должен быть в (0.5, 0.5) но по неведомой причине это не так
|
||||
const float radius = 0.125 - ds * 2.0; // Радиус должен быть 0.5, но по неведомой причине это не так
|
||||
const float rate = 10.0;
|
||||
const float ds = 0.01; /* Относительное расстояние на котором выполняется сглаживание краёв */
|
||||
const vec2 center = vec2(0.125, 0.125); /* Центр должен быть в (0.5, 0.5), но это не так */
|
||||
const float radius = 0.125 - ds * 2.0; /* Радиус должен быть 0.5, но это не так */
|
||||
|
||||
|
||||
float smooth_px(float r, float R)
|
||||
{
|
||||
return 1.0 - smoothstep(R - ds, R + ds, r);
|
||||
}
|
||||
|
||||
|
||||
void fragment()
|
||||
{
|
||||
COLOR = vec4(1.0, 1.0, 1.0, 1.);
|
||||
COLOR = color * smooth_px(length(UV - center), radius);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ 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.0001) = 0.1;
|
||||
uniform float outer_radius: hint_range(0.0, 0.125, 0.0001) = 0.125;
|
||||
uniform float inner_radius: hint_range(0.0, 0.125) = 0.1;
|
||||
uniform float outer_radius: hint_range(0.0, 0.125) = 0.125;
|
||||
|
||||
const vec2 center = vec2(0.125, 0.125); // Центр должен быть в (0.5, 0.5) но по неведомой причине это не так
|
||||
const float dsa = 0.0025; // Относительное расстояние на котором выполняется сглаживание краёв
|
||||
@@ -16,7 +16,7 @@ float smooth_px(float r, float R, float ds)
|
||||
}
|
||||
|
||||
|
||||
void sector(inout vec4 uv_color, vec2 uv_pos, float r0, float r1, float w, vec4 c)
|
||||
vec4 sector(vec4 c, vec2 uv_pos, float r0, float r1, float w)
|
||||
{
|
||||
vec2 d = uv_pos - center;
|
||||
float theta = atan(d.x, d.y);
|
||||
@@ -24,7 +24,7 @@ void sector(inout vec4 uv_color, vec2 uv_pos, float r0, float r1, float w, vec4
|
||||
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);
|
||||
uv_color *= sqrt(va * vr) * c;
|
||||
return c * sqrt(va * vr);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,5 @@ void rotate_vertex(inout vec2 vert, float a)
|
||||
|
||||
void fragment()
|
||||
{
|
||||
COLOR = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
sector(COLOR, UV, inner_radius, outer_radius, width, color);
|
||||
COLOR = sector(color, UV, inner_radius, outer_radius, width);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user