TGViewer
Прогаем с кенгурой Прогаем с кенгурой @coding_with_kangaroo · 236 subscribers
Post #288 126
Алгоритм

Тут все максимально просто:
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);
}
  • 👍 2
More from @coding_with_kangaroo
  1. Oct 5, 2026— В смысле ты не хочешь обучать муху? — А вот у Васи уже две. — Часики-то тикают. — Потом…
  2. Oct 5, 2026Смотрите, что на работе делается (пока я с виар очками долбаюсь и мигрень зарабатываю): ht…
  3. Oct 3, 2026И его брат, но не про амплитуду, а про фазу компоненты цвета https://artifacts.gostrobrod.…
  4. Oct 1, 2026Еще один эффект, возникающий при поломке сигнала https://artifacts.gostrobrod.dev/effects/…
  5. Oct 1, 2026Штука очень прикольная - нужно внезапно задумываться о производительности и памяти, чтобы…
  6. Sep 29, 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 →