Без вуали
Голое стекло после #496: клетка на целых пикселях, рамки Claude Code квадами.
CRT veil сегодня — одна тёмная линия каждые три пикселя поверх стекла. Ниже четыре других слоя той же природы: каждый рисуется только квадами gpui (прямоугольник с альфой, линейный градиент, скруглённый бордер), ни шейдеров, ни пост-эффектов, поэтому любой из них ложится в деку одним PR и одной строкой на вкладке GLASS. Всё на канвасе внизу — те же квады, в тех же альфах, на одном и том же экране Claude Code. Первые два кадра — эталоны: без вуали и нынешний CRT.
fill()/quad() — не предлагается. Размытия,
искривления кинескопа и хроматических сдвигов через шейдер здесь нет.Голое стекло после #496: клетка на целых пикселях, рамки Claude Code квадами.
Одна линия rgba(0,0,0,.22) каждые 3 device-px. ~430 квадов на тайл.
Апертурная решётка вместо строчной развёртки: вертикальные полосы фосфора через три пикселя, чуть подкрашенные R·G·B, и две «демпферные проволоки» на трети и двух третях высоты — подпись любого Sony-кинескопа. Читается как текстура, не режет строки текста, поэтому мягче CRT.
Квады: ~600 вертикальных линий на тайл в трёх оттенках + 2 горизонтальные. Столько же, сколько сегодня у CRT. Ручка: GLASS → «Veil: Trinitron». Цветные полосы можно выключить и оставить серые.Полосы серые с оттенком, альфа .16; проволоки .32.
Те же полосы, но R·G·B по очереди, альфа .07 — фосфор виден в упор, издалека белый.
Виньетка: края стекла темнеют к рамке, углы скруглены как у трубки, в левом верхнем углу едва заметный блик. Никаких линий — центр остаётся чистым, вуаль живёт по периметру, где текста обычно нет. Самый спокойный из четырёх; хорошо стакается с CRT.
Квады: 4 градиентных полосы по краям, 1 quad-рамка со скруглёнными углами (border = радиус, цвет хрома), 1 градиент блика. Семь квадов на тайл. Ручка: GLASS → «Veil: Tube». Радиус можно брать изradius_md(), чтобы гас вместе с «Hard pixel».
Края .55 → 0 на 14% ширины, подъём центра .035, радиус 18px, блик .05.
Виньетка и подъём центра, без скругления и блика — для «Hard pixel» и тесных тайлов.
Монохромная трубка: всё стекло уходит в один люминофор — зелёный P1 или янтарный P3 — и текст
получает лёгкое свечение. Свечение честное: строка красится второй раз тем же шейпом, на пиксель
ниже-правее, в цвете фосфора на 30% — то, что делает line.paint и так, только дважды.
Цвета программы (diff, синтаксис) остаются различимы, но окрашены.
Тон #33ff66 альфа .10, свечение .30.
Тон #ffb000 альфа .10, свечение .30.
Полоса обратного хода луча: светлая лента в 15% высоты медленно едет сверху вниз за шесть секунд, а между кадрами — интерлейс, каждая вторая строка чуть темнее. Единственная вуаль с движением; при «reduce motion» лента замирает на трети экрана и остаётся интерлейс. Даёт стеклу «включённость», которую CRT veil обещает, но не показывает.
Квады: ~680 линий интерлейса + 1 градиентная лента. Движение — один paid frame на 60 мс, только на видимых тайлах и только при активном окне (как курсор). Ручка: GLASS → «Veil: Retrace». Скорость и высоту ленты — константы, не настройки.Лента белая .09 в пике, интерлейс .10 через строку.
Без интерлейса — чистое стекло, по которому раз в шесть секунд проходит свет.
Сейчас на вкладке две ручки: «CRT veil» ON/OFF и «Hard pixel». Предложение: «CRT veil» становится
первой в списке вуалей, ручка «Veil» листает OFF · CRT · TRINITRON · TUBE · PHOSPHOR · RETRACE,
а рядом второй тумблер «+ CRT» для стака. Хранится словом в settings.json
(glass_veil_kind), как уже хранится glass_text. Выбранные здесь варианты
попадут в ротацию; невыбранные не пишутся вовсе.