Так, еще одна статья про базовую диагностику Метала в Хкоде
https://gostrobrod.medium.com/mtl-s02e02-basic-diagnostics-of-metal-in-xcode-a1b9d92875b6
https://gostrobrod.medium.com/mtl-s02e02-basic-diagnostics-of-metal-in-xcode-a1b9d92875b6
Medium
(MTL S02E02) Basic Diagnostics of Metal in Xcode
When you develop complex software, you inevitably run into bugs and performance issues. Though Xcode and Instruments can provide deep…
🔥5❤3
Зачем-то решил в ходе прокрастинации смоделировать звук инструмента по его геометрии. Так как есть куча параметров кроме геометрии, а физический мир на практике чуть сложнее трех формул из теории для разных видов вибраторов, пришлось эту кучу параметров подбирать торчом. Результат синтеза все равно - говно. Завтра (уже 2 часа как сегодня) буду искать пакеты для физического моделирования акустических систем.
😁3
Прогаем с кенгурой
Зачем-то решил в ходе прокрастинации смоделировать звук инструмента по его геометрии. Так как есть куча параметров кроме геометрии, а физический мир на практике чуть сложнее трех формул из теории для разных видов вибраторов, пришлось эту кучу параметров подбирать…
Desmos
String model
Explore math with our beautiful, free online graphing calculator. Graph functions, plot points, visualize algebraic equations, add sliders, animate graphs, and more.
❤2
Так, и видос держите: https://youtu.be/J6t79BEIa9o
гештальт закрыт - можно возвращаться к видеоэффектам
гештальт закрыт - можно возвращаться к видеоэффектам
YouTube
Как работает струнный инструмент: физика и математика звука (эксперимент)
Сделал простейший струнный инструмент из хлама и решил разобраться, как он работает с точки зрения акустики и физики звука. Построил математическую [модель - струна → мембрана → воздушный объём] - и реализовал её на Desmos и Python, чтобы посмотреть влияние…
🤯4🔥1
но если вам нечего делать, можете посмотреть как мы егэ по информатике смотрели https://youtu.be/Vtgy6b2S1rQ?si=8QCPSkQ-lE4K1onx
YouTube
Разработчики с 10+ годами опыта проходят ЕГЭ по информатике 2025
В этом видео трое опытных разработчиков с 10+ годами опыта пытаются пройти демо-версию ЕГЭ по информатике 2025.
Решаем все задания, страдаем и обсуждаем, насколько ЕГЭ похоже на реальную работу программиста.
0:00:00 - Ищем вариант ЕГЭ
0:06:15 - Задание…
Решаем все задания, страдаем и обсуждаем, насколько ЕГЭ похоже на реальную работу программиста.
0:00:00 - Ищем вариант ЕГЭ
0:06:15 - Задание…
😁9
Media is too big
VIEW IN TELEGRAM
Псевдо-жидкость
float2 uv = -1. + 2. * In.v_texcoord;
for(int i = 0; i < 10; ++i) {
uv.y += sin(uv.x * i * 4 + 6 * sin(0.3 * U.time)) * 0.01 * i;
uv.x += sin(uv.y * i * 3 + 8 * cos(0.1 * U.time)) * 0.01 * i;
}
uv = uv * 0.5 + 0.5;
float4 a = mix(float4(1,0,0,1), float4(1,1,0,1), uv.x);
float4 b = mix(float4(0,0,1,1), float4(0,1,0,1), uv.x);
float4 c = mix(a, b, uv.y);
return pow(c,0.75);
🔥6👍1
Прогаем с кенгурой
Самое красивое и интересное тут (ИМХО) это передающие телевизионные трубки: 1 - иконоскоп 2 - супериконоскоп 3 - ортикон 4 - суперортикон 5 - видикон 6 - много их разных еще есть Вообще там еще катушки должны быть фокусирующие и отклоняющие, но на картинке…
Мне полегчало и я накидал эффектов по трубкам
👍2❤1
Media is too big
VIEW IN TELEGRAM
Мягкость картинки
На аналоговой камере картинка получается достаточно мягкой - без резких границ (хотя это зависит от трубки)
Принцип
Из-за того, что у нас нет как таковых зерен/пикселей, а только уровень сигнала в момент времени + сканирующий луч имеет толщину и размытие, у нас будут подблюрены строки
Алгоритм
1. Правильный: блюрим строки по горизонтали (луч идет по строкам, соответственно и блюрится будет внутри строки в основном)
2. Простой: просто слегка подблюриваем гауссом весь кадр - эффект будет не такой классный, но мы потом попячим дополнимтельно
На аналоговой камере картинка получается достаточно мягкой - без резких границ (хотя это зависит от трубки)
Принцип
Из-за того, что у нас нет как таковых зерен/пикселей, а только уровень сигнала в момент времени + сканирующий луч имеет толщину и размытие, у нас будут подблюрены строки
Алгоритм
1. Правильный: блюрим строки по горизонтали (луч идет по строкам, соответственно и блюрится будет внутри строки в основном)
2. Простой: просто слегка подблюриваем гауссом весь кадр - эффект будет не такой классный, но мы потом попячим дополнимтельно
❤2👀2
Media is too big
VIEW IN TELEGRAM
Шум в тени
Во всех сенсорах, основанных на электрических процессах, присутствует шум на малоосвещенных участках картинки.
Принцип
Даже при отсутсвии засвета в системе протекают слабые токи, к которым добавлются тепловые флуктуации.
Алгоритм
Добавляем шум с коэффициентом (1-яркость), чтобы зашумить именно темные участки (светлые на самом деле тоже зашумляются, но не так заметно)
Во всех сенсорах, основанных на электрических процессах, присутствует шум на малоосвещенных участках картинки.
Принцип
Даже при отсутсвии засвета в системе протекают слабые токи, к которым добавлются тепловые флуктуации.
Алгоритм
Добавляем шум с коэффициентом (1-яркость), чтобы зашумить именно темные участки (светлые на самом деле тоже зашумляются, но не так заметно)
👍3
Media is too big
VIEW IN TELEGRAM
Bloom
Светлые области "засвечивают", растекаются на близлежащие темные.
Принцип
Из-за того, что луч имеет размер, он задевает яркие участки и засвечивает темные.
Алгоритм
Смешиваем картинку с блюренной по яркости блюренной (чем ярче, тем больше намешиваем. Есть два пути:
1. Правильный - по строкам
2. Простой - просто блюрим и мешаем
Светлые области "засвечивают", растекаются на близлежащие темные.
Принцип
Из-за того, что луч имеет размер, он задевает яркие участки и засвечивает темные.
Алгоритм
Смешиваем картинку с блюренной по яркости блюренной (чем ярче, тем больше намешиваем. Есть два пути:
1. Правильный - по строкам
2. Простой - просто блюрим и мешаем
👍1
Media is too big
VIEW IN TELEGRAM
Шлейф
Светлые области оставляют шлейф/след на следующих кадрах
Принцип
Мишень не успевает восстановиться (разрядиться) и остаточный заряд переходит на следующий кадр, добавляя яркости
Алгоритм
Храним предыдущий кадр после смешения и по его яркости мешаем с ним текущий
Светлые области оставляют шлейф/след на следующих кадрах
Принцип
Мишень не успевает восстановиться (разрядиться) и остаточный заряд переходит на следующий кадр, добавляя яркости
Алгоритм
Храним предыдущий кадр после смешения и по его яркости мешаем с ним текущий
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Затемнение на краях
На краях экрана (слева и справа яркость падает) (это не виньетка!)
Принцип
Из-за большего отклонения на краях строки луч обладает меньшей энергией из-за более длинной траектории и расфокусировки. Как результат, ток падает и визуально края кажутся темнее.
Алгоритм
По гладкой кривой занижаем яркость по
На краях экрана (слева и справа яркость падает) (это не виньетка!)
Принцип
Из-за большего отклонения на краях строки луч обладает меньшей энергией из-за более длинной траектории и расфокусировки. Как результат, ток падает и визуально края кажутся темнее.
Алгоритм
По гладкой кривой занижаем яркость по
x, например:
float k = 1.0 - 5 * U.amount * pow(in.uv.x - 0.5, 4);
src.rgb *= k;
👍3
Media is too big
VIEW IN TELEGRAM
Нестабильность горизонтальной развёртки
Дрожание строк (смещение/гребенка и тд)
Принцип
Тут уже вопрос не только к самой трубке, но и к системе развертки/синхронизации. Из-за сбоя/реальности мира/плохой настройки строки не синхронизированы с лучом и строки съезжают
Алгоритм
Смещаем x по y и чему еще хотите перед чтением с текстуры. Я вот такого например наворотил:
Дрожание строк (смещение/гребенка и тд)
Принцип
Тут уже вопрос не только к самой трубке, но и к системе развертки/синхронизации. Из-за сбоя/реальности мира/плохой настройки строки не синхронизированы с лучом и строки съезжают
Алгоритм
Смещаем x по y и чему еще хотите перед чтением с текстуры. Я вот такого например наворотил:
uv.x += 0.01 * U.amplitude * (sin(U.frequency * uv.y * U.height + U.time) + rand(float2(uv.y, fract(U.time))) * 2 - 1);
⚡3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Цвета
Контраст (и насыщенность на цветном) немного понижены
Принцип
Видикон по своей физике — инерционный, нелинейный, малоконтрастный фотопроводник, а не мгновенный фотоэмиттер, в итоге получаем переходы смягчаются, но при этом срезаются крайние значения.
Алгоритм
Ну тут очевидно - слегка понижаем контраст и насыщенность. Если кто забыл как это делать:
Контраст (и насыщенность на цветном) немного понижены
Принцип
Видикон по своей физике — инерционный, нелинейный, малоконтрастный фотопроводник, а не мгновенный фотоэмиттер, в итоге получаем переходы смягчаются, но при этом срезаются крайние значения.
Алгоритм
Ну тут очевидно - слегка понижаем контраст и насыщенность. Если кто забыл как это делать:
// Saturation
float l = rgb2yuv(src.rgb).x;
src.rgb += (src.rgb - l) * U.saturation;
// Contrast
src.rgb = exp(U.contrast) * (src.rgb - 0.5) + 0.5;
👍3
Как видите, тут два ключевых момента для корректной имитации:
1 - построение картинки идет по строкам
2 - система инертна, а значит и значения пикселей будут "инертны"
1 - построение картинки идет по строкам
2 - система инертна, а значит и значения пикселей будут "инертны"
Пока писал, сам понял физику видикона🤠 зачем мне это - хз, но в универе зачем-то учили это все на телевидении и обработке видеосигналов
👍1