ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك 👈

Прогаем с кенгурой

Прогаем с кенгурой

الذهاب إلى القناة على Telegram

Сидим с кенгурой под горой, запекаем текстуры... { программирование, процедурная генерация, графика, аудио, образование и немного про специфичные игры } https://gostrobrod.dev https://boosty.to/gostrobrod

إظهار المزيد
236
المشتركون
لا توجد بيانات24 ساعات
لا توجد بيانات7 أيام
+130 أيام
أرشيف المشاركات
Вот как-то так должно быть: не забывайте сатурировать/клампать значения, чтобы они были в одном диапазоне. Хотя! Некоторые коррекции этого не требуют и клампать лучше уже по завершению группы. На этом про химию все - дальше будет про механику и камеру

Пятна (химические) вот эти вот мелькающие штуки гладкие Принцип Тут речь про мягкие черные или белые гладкие пятна. Есть еще от мусора и царапин - их позже на уровне камеры разберем - плюс они как правило жесткие. Возникают эти пятна от - повреждения эмульсии, - пузырей в ней или на ней в ходе проявки или закрепления, - некачественной промывки, в результате чего какие-то реагенты остаются на пленке и продолжают реакцию - опять таки умножаем на два для переноса - то есть могут быть одновременно и белые, и черные пятны (на примере только черные) Алгоритм 1. Генерим в точке 3Д Перлин нойз (xy + t время) 2. делаем коррекцию значения, чтобы получить нужное пятнышко, например:

    float v = perlinNoise(uvt, 1, 3, 0.5, 2.0, 0);
    v = v * 0.5 + 0.5;
    v *= v;
    v = 1.0 - smoothstep(0.01, 0.02, v);
3. После всех коррекций яркости добавляем к ней это значение Кстати нашел у себя баг в шейдере, кто найдет по картинке - тому + в карму.

Ореол вокруг пересвеченных участков Принцип Этот эффект может возникать по нескольким причинам: - отражение от подложки (поэтому туда суют еще противоореольный слой) - рассеяние от кристаллов серебра (чем больше их восстановилось от засвета, тем сильнее рассеяние) - неоднородность/повреждение эмульсии - распространение реакции восстановления при проявке - пропуск света зерном негатива на позитив при переносе Алгоритм Тут делается в два этапа 1. Блюрим копию кадра (например через MPS) 2. Накладываем яркости max-ом перед всеми остальными цветокоррекциями В идеале, нужно ореол подкрашивать в цвет подложки, если мы имитируем именно эту причину, но заморачиваться не будем

Сразу добавлю короткий топик, касающийся непосредственно химии пленки - зерно Принцип я думаю понятен: изображение на пленке таки дискретное и состоит из зерен - я про это рассказывал парой постов выше. Таким образом, если пленка крупнозернистая (по разным причинам) это зерно может быть заметно. Алгоритм Тут все еще проще: считаем шум и с коэффициентом добавляем к нашей яркости. Если шум сделать цветным, а не чисто яркостным, то результат будет выглядеть не как пленочное зерно, а как шум на цифровой матрице (но об этом в другой ветке).

float rand(float2 uv){
    return fract(sin(dot(uv, float2(12.9898, 78.233))) * 43758.5453);
}
//...
l += 0.1 * rand(In.v_texcoord * (1 + fract(U.time)));
//...
В примере я использую стандартный шейдерный шум от позиции точки, анимирую его по времени, но использую fract, чтобы при больших значениях рандом не стал выглядеть как полосы

Примечание про цветные пленки: Так как в цветных пленках у нас красители в три слоя, то искажения возникают как правило по нескольким причинам: 1 - недо/пересвет одного из слоев (или всех) 2 - неправильный краситель/реактив, причем на любом слое и этапе (негатив/позитив) Так как тут черт ногу сломит, что может происходить с цветом, то решается это через 3D-LUT - то есть просто таблицей; весь диапазон не надо, 64х64х64 хватает с головой Хотя иногда можно решить и через YUV-манипуляции

Алгоритм Тут все максимально просто: 1. Переводим RGB -> YUV (используем только Y - яркость) 2. Применяем яркость, контраст, потом гамму - сначала линейные, потом нелинейные, чтобы первые не ломались 3. Используем яркость как коэффициент для градиента между цветами пигмента и подложки Не забываем, что все операции с цветами должны проходить в линейном RGB, иначе будет некорректно

float brightness(float x, float v) {
    return saturate(x + v);
}


float contrast(float x, float v) {
    return exp(v) * (x - 0.5) + 0.5;
}


float gamma(float x, float v) {
    return pow(x, exp(-v));
}


float3 tint(float x, float3 from, float3 to) {
    return mix(from, to, x);
}

Начнем с простого - с базовой цветокоррекции. Принцип Так как пленка у нас чб, то цвета может быть максимум два (ну и градиент между ними): 1 - цвет подложки - да, пленка не всегда идеально прозрачная + есть защитные слои + может выгорать это все) 2 - пигмента - если мы используем серебро, то будет черный, нарушение фиксации может давать желтоватый оттенок, а старение сребера - коричнево-зеоеноватый; кроме того пленка может быть тонирована замещением серебра на - сульфид серебра (сепия) - железосодержащие соли (синий/фиолетовый) - медь/золото/селен (красный, пурпуный) Кроме того, кадр может быть - пере/недосвечен как в процессе съемки, так и в процессе печати (переносе с негативной на позитивную пленку). - иметь измененный контраст и гамму в зависимости от свойств пленки и химии

Играюсь тут с байтбитом - получилась телефонная тема https://dollchan.net/bytebeat/#4AABELEbT0Cixs7PQVANRJpqaCmoKGiU2NsaaAA

Вот некорректную работу этих бесхитростных механизмов мы и будем имитировать далее

Итак. При попадании фотонов достаточной интенсивности, они выбивают из соли электрон, который, однако, остается в кристалле и восстанавливает ион серебра до металлического - и таких несколько на кристалл. При проявке эти атомы металлического серебра служат катализатором для восстановления всего кристалла до металлического серебра. Если же там нет металлического серебра, то он и не восстанавливается. Далее закрепитель вымывает все невосстановившиеся соли, оставляя только зерна, ставшие серебром. Таким образом картинка на пленке на самом деле черно-белая, но за счет «дизеринга» кажется, что есть градации серого. Но у нас получился негатив. Позитив получается путем переноса изображения на другую пленку (позитивную). Процесс повторяется, но изображение инвертируется. Также есть обратимые пленки, которые после проявки отбеливают и засвечивают остатки соли. С цветной пленкой чуть сложнее: во-первых у нас там как минимум 3 слоя под каждый основной цвет. Во-вторых у нас добавляется процесс с окрашиванием. При этом негативная пленка окрашивается в дополнительные цвета (красный - циан, зеленый - пурпур, синий - желтый).

Переходим к искажениям на пленке. Тут много чего есть, но все оно крутится вокруг физики (химии) экспонирования пленки, ее пр
Переходим к искажениям на пленке. Тут много чего есть, но все оно крутится вокруг физики (химии) экспонирования пленки, ее проявки и механики камеры. Самое интересное тут - физика (и химия), поэтому начнем с анатомии пленки. В простейшем случае это прозрачная полимерная пленка на которую нанесена эмульсия (желатин с кристаллами соли - галогенида серебра). В сложнейшем - несколько слоев эмульсии (на цветовые каналы), цветовые фильтры и защитные слои. С механикой камеры все просто: пленка протягивается с определенной скоростью так, чтобы на время открытия затвора картинка спроецировалась на соответствующий участок пленки.

пожалуй, хватит на сегодня

Решил на досуге сунуться в тему реймаршинга. Жалею, что не сунулся раньше. В принципе все так-то довольно просто и при этом в
Решил на досуге сунуться в тему реймаршинга. Жалею, что не сунулся раньше. В принципе все так-то довольно просто и при этом весьма красиво + можно артефактов наделать странных

Внезапно обнаружил, что youtube не только субтитры сам генерит и переводит, но он еще и озвучку делает.

Вообще я в афиге конечно со своего лимона. Он цвести собрался, хотя все дерево в плодах. И дома все ими завалено. Может кто з
Вообще я в афиге конечно со своего лимона. Он цвести собрался, хотя все дерево в плодах. И дома все ими завалено. Может кто знает, что можно делать из лимонов? Мне их девать некуда

Лимон-мутант
Лимон-мутант

Собрал оптические эффекты в видео (там вышло меньше, чем было тут, но фокус больше на принципы) https://www.youtube.com/watch?v=yMekRTKFlb8

По оптике осталась еще одна виньетка, которая возникает из-за того, что оптика у нас круглая, а сенсор прямоугольный. То есть если у нас проекция оптики вписана в кадр, то появится еще одна виньетка. Отдельно расписывать я это не буду - посмотрите предыдущую и, если надо, наложите еще раз. На этом часть про оптику объявляю закрытой. Дальше будем смотреть на пленку (она выиграла в опросе)