tm2027 · борд вуалей · 2026-09-05

Четыре вуали в духе CRT veil

CRT veil сегодня — одна тёмная линия каждые три пикселя поверх стекла. Ниже четыре других слоя той же природы: каждый рисуется только квадами gpui (прямоугольник с альфой, линейный градиент, скруглённый бордер), ни шейдеров, ни пост-эффектов, поэтому любой из них ложится в деку одним PR и одной строкой на вкладке GLASS. Всё на канвасе внизу — те же квады, в тех же альфах, на одном и том же экране Claude Code. Первые два кадра — эталоны: без вуали и нынешний CRT.

Только квады Что нельзя нарисовать fill()/quad() — не предлагается. Размытия, искривления кинескопа и хроматических сдвигов через шейдер здесь нет.
Стекло, не хром Как и CRT veil, слой лежит только на тайлах панов. Рельс, шапка и подвал остаются плоскими.
Пиксельная сетка После #496 клетка стоит на целых device-пикселях; линии вуалей — тоже, иначе они мылятся. Переключатель DPR внизу показывает 1× и 2×.
Стакается с CRT Тумблер «+ CRT» кладёт нынешние сканлайны поверх каждого варианта: в настройках это могут быть два независимых переключателя.
DPR
0 Эталоны то, что есть сейчас

Без вуали

Голое стекло после #496: клетка на целых пикселях, рамки Claude Code квадами.

CRT

CRT veil (сейчас)

Одна линия rgba(0,0,0,.22) каждые 3 device-px. ~430 квадов на тайл.

I Четыре вуали клик — выбор, можно несколько
1

Тринитрон

Апертурная решётка вместо строчной развёртки: вертикальные полосы фосфора через три пикселя, чуть подкрашенные R·G·B, и две «демпферные проволоки» на трети и двух третях высоты — подпись любого Sony-кинескопа. Читается как текстура, не режет строки текста, поэтому мягче CRT.

Квады: ~600 вертикальных линий на тайл в трёх оттенках + 2 горизонтальные. Столько же, сколько сегодня у CRT. Ручка: GLASS → «Veil: Trinitron». Цветные полосы можно выключить и оставить серые.
1

Решётка

Полосы серые с оттенком, альфа .16; проволоки .32.

1′

Решётка, цветная

Те же полосы, но R·G·B по очереди, альфа .07 — фосфор виден в упор, издалека белый.

2

Кинескоп

Виньетка: края стекла темнеют к рамке, углы скруглены как у трубки, в левом верхнем углу едва заметный блик. Никаких линий — центр остаётся чистым, вуаль живёт по периметру, где текста обычно нет. Самый спокойный из четырёх; хорошо стакается с CRT.

Квады: 4 градиентных полосы по краям, 1 quad-рамка со скруглёнными углами (border = радиус, цвет хрома), 1 градиент блика. Семь квадов на тайл. Ручка: GLASS → «Veil: Tube». Радиус можно брать из radius_md(), чтобы гас вместе с «Hard pixel».
2

Виньетка и углы

Края .55 → 0 на 14% ширины, подъём центра .035, радиус 18px, блик .05.

2′

Только виньетка

Виньетка и подъём центра, без скругления и блика — для «Hard pixel» и тесных тайлов.

3

Фосфор

Монохромная трубка: всё стекло уходит в один люминофор — зелёный P1 или янтарный P3 — и текст получает лёгкое свечение. Свечение честное: строка красится второй раз тем же шейпом, на пиксель ниже-правее, в цвете фосфора на 30% — то, что делает line.paint и так, только дважды. Цвета программы (diff, синтаксис) остаются различимы, но окрашены.

Квады: один тонирующий quad на тайл + повторный paint строк. Удваивает стоимость текста на стекле, но не квадов. Ручка: GLASS → «Veil: Phosphor · green / amber». Свечение отдельным тумблером или гасится вместе с «reduce motion».
3

P1 зелёный

Тон #33ff66 альфа .10, свечение .30.

3′

P3 янтарный

Тон #ffb000 альфа .10, свечение .30.

4

Обратный ход

Полоса обратного хода луча: светлая лента в 15% высоты медленно едет сверху вниз за шесть секунд, а между кадрами — интерлейс, каждая вторая строка чуть темнее. Единственная вуаль с движением; при «reduce motion» лента замирает на трети экрана и остаётся интерлейс. Даёт стеклу «включённость», которую CRT veil обещает, но не показывает.

Квады: ~680 линий интерлейса + 1 градиентная лента. Движение — один paid frame на 60 мс, только на видимых тайлах и только при активном окне (как курсор). Ручка: GLASS → «Veil: Retrace». Скорость и высоту ленты — константы, не настройки.
4

Лента + интерлейс

Лента белая .09 в пике, интерлейс .10 через строку.

4′

Только лента

Без интерлейса — чистое стекло, по которому раз в шесть секунд проходит свет.

II Как это ляжет в настройки одна строка на GLASS

GLASS · Veil

Сейчас на вкладке две ручки: «CRT veil» ON/OFF и «Hard pixel». Предложение: «CRT veil» становится первой в списке вуалей, ручка «Veil» листает OFF · CRT · TRINITRON · TUBE · PHOSPHOR · RETRACE, а рядом второй тумблер «+ CRT» для стака. Хранится словом в settings.json (glass_veil_kind), как уже хранится glass_text. Выбранные здесь варианты попадут в ротацию; невыбранные не пишутся вовсе.

ничего не выбрано