TGViewer
Григорий Дядиченко Григорий Дядиченко @dev_game · 2.66K subscribers
Post #1877 1.2K
Ответ - Математика для шейдеров

float circle = step(length(uv - 0.5), 0.3);

length(uv - 0.5) — расстояние от текущего пикселя до центра. s
tep(a, b) возвращает 1 если b >= a, и 0 если b < a.
Значит step(length(...), 0.3) вернёт 1 когда 0.3 >= distance — то есть внутри круга. Именно то что нужно.

Альтернативная запись которая читается интуитивнее:

float circle = 1.0 - step(0.3, length(uv - 0.5));

Здесь step(0.3, length(...)) = 1 снаружи, инвертируем — получаем 1 внутри. Оба варианта правильные, первый короче.

Порядок аргументов step — самая частая ошибка в шейдерах. Буквально каждый раз приходится останавливаться и думать 🙂 Решение не единственное, но это довольно компактное.

#разминка #шейдеры #математика
  • 🔥 10
More from @dev_game
  1. Sep 25, 2026Meta VR Glasses Посмотрел кратко о чём речь. Вспомнил скупой слезой свой концепт. Будем по…
  2. Sep 23, 2026Чисто магия, что я теперь самостоятельно могу сделать такой пак + ролик к нему :) И мне нр…
  3. Sep 22, 2026🚀 Как запустить игровой стартап и применить бизнес-опыт в геймдеве? 🚀 Высшая школа бизне…
  4. Sep 21, 2026Эмоциональный окрас голоса Задумался над юмористическими форматами контента помимо познава…
  5. Sep 20, 2026Новый формат роликов https://youtube.com/shorts/sBWPJmyMqKg?si=GqUfUyLol_ahrRsK Возможно п…
  6. Sep 20, 2026Про мои текущие эксперименты То что я буду писать в этом посте думаю не так интересно прос…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →