отладка (наводим красоту)

This commit is contained in:
2025-02-11 19:15:36 +03:00
parent cd83c97d6a
commit b686c0f137
29 changed files with 48 additions and 48 deletions

View File

@@ -31,7 +31,7 @@ uniform bool show_icon = false; // Если false, текстура иконки
void fragment() {
// Преобразование UV-координат для центрирования начала координат и корректировки в зависимости от аспекта экрана.
float aspect_ratio = SCREEN_PIXEL_SIZE.x / SCREEN_PIXEL_SIZE.y;
float aspect_ratio = SCREEN_PIXEL_SIZE.x / SCREEN_PIXEL_SIZE.y;
vec2 uv = (UV * 2.0 - 1.0) * vec2(0.3, aspect_ratio); // Нормализация UV координат.
// Подсчет кольца (точек и опциональной тени).
@@ -42,7 +42,7 @@ void fragment() {
float total_angle = 6.283185307; // Полный круг в радианах (2π).
float gap = total_angle * gap_ratio; // Вычисление ширины пробела между точками.
float spacing = (total_angle - gap) / float(num_points); // Вычисление интервала между точками.
// Определение направления вращения кольца.
float direction = 1.0; // Вращение по часовой стрелке или против.
float rotation = TIME * rotation_speed * direction; // Вычисление текущего угла поворота.
@@ -63,7 +63,7 @@ void fragment() {
// Вычисление вклада точки на основе расстояния.
float distance = length(uv - pos); // Расстояние до текущей точки.
float contribution = smoothstep(radius + 0.01, radius, distance); // Плавный вклад на основе расстояния.
if (contribution > 0.0) { // Если вклад точки больше нуля,
ring_color = mix(ring_color, dot_color, contribution); // Смешивание с цветом кольца.
dot_accum += contribution; // Накопление вклада от точки.
@@ -90,10 +90,10 @@ void fragment() {
if (show_icon) {
// Создание радиальной маски, чтобы иконка была видимой внутри радиуса icon_size.
float icon_mask = smoothstep(icon_size, icon_size - 0.005, length(uv)); // Маска для иконки.
// Нормализация UV-координат для иконки.
vec2 icon_uv = (uv / icon_size + vec2(1.0)) / 2.0; // Превращение из диапазона (-icon_size ... +icon_size) в (0 ... 1).
// Применение вращения иконки, если оно включено.
if (enable_icon_rotation) {
float icon_angle = TIME * icon_rotation_speed; // Угол вращения на основе времени и скорости вращения.
@@ -108,11 +108,11 @@ void fragment() {
centered_uv.x * s + centered_uv.y * c); // Применение матрицы вращения.
icon_uv = centered_uv + vec2(0.5); // Смещение обратно к нормализованным координатам.
}
vec4 icon_sample = texture(icon_texture, icon_uv); // Получение цвета из текстуры иконки.
// Смешивание текстуры иконки с базовым цветом кольца с учетом маски и альфа-канала текстуры.
base_color = mix(base_color, icon_sample, icon_mask * icon_sample.a);
}
COLOR = base_color; // Установка финального цвета для текущего пикселя.
}