привет ребята как дела у вас?
как там ваши дипломы огэ егэ и тд? расскажите в комментариях😊
как там ваши дипломы огэ егэ и тд? расскажите в комментариях😊
привет я приехал в питер тут классно
играюсь с клаудом и глсл делаю какие-то элементарные вещи потому что нихера не понимаю в код… вы умеете писать глсл шейдеры ???
играюсь с клаудом и глсл делаю какие-то элементарные вещи потому что нихера не понимаю в код… вы умеете писать глсл шейдеры ???
даша сегодня сняла туториал на пиксель сорт и я решил наВАЙБкодить с клодом его тоже.
все что вам нужно это подключить ноду glsl к видео. вставить в ноду снизу етот код:
после этого в ноде глсл сделать такие названия как в коде и значения выбрать и все будет работать !!!!!!!!!!
все что вам нужно это подключить ноду glsl к видео. вставить в ноду снизу етот код:
uniform float uThreshLow; // 0.25 — нижняя граница яркостной маски
uniform float uThreshHigh; // 0.80 — верхняя граница
uniform float uMaxSpan; // 48.0 — макс. длина сортируемого отрезка (пиксели)
uniform float uVertical; // 0.0 — 0: по горизонтали, 1: по вертикали
uniform float uReverse; // 0.0 — 0: тёмные→светлые, 1: светлые→тёмные
out vec4 fragColor;
const int MAX_SPAN = 128; // жёсткий потолок цикла (компиляторный)
float luma(vec3 c) {
return dot(c, vec3(0.299, 0.587, 0.114));
}
bool inBand(float l) {
return l >= uThreshLow && l <= uThreshHigh;
}
void main() {
vec2 res = uTDOutputInfo.res.zw;
bool vert = uVertical > 0.5;
vec2 dir = vert ? vec2(0.0, 1.0 / res.y) : vec2(1.0 / res.x, 0.0);
int limit = int(min(uMaxSpan, float(MAX_SPAN)));
vec2 uv = vUV.st;
vec3 selfColor = texture(sTD2DInputs[0], uv).rgb;
float selfL = luma(selfColor);
// Пиксель вне порога — не трогаем
if (!inBand(selfL)) {
fragColor = TDOutputSwizzle(vec4(selfColor, 1.0));
return;
}
// Граница отрезка назад
int back = 0;
for (int i = 1; i < MAX_SPAN; i++) {
if (i >= limit) break;
float l = luma(texture(sTD2DInputs[0], uv - dir * float(i)).rgb);
if (!inBand(l)) break;
back = i;
}
// Граница отрезка вперёд
int fwd = 0;
for (int i = 1; i < MAX_SPAN; i++) {
if (i >= limit) break;
float l = luma(texture(sTD2DInputs[0], uv + dir * float(i)).rgb);
if (!inBand(l)) break;
fwd = i;
}
int spanLen = back + fwd + 1;
int myRank = (uReverse > 0.5) ? (spanLen - 1 - back) : back;
// Ищем кандидата, чей ранг по яркости равен моей позиции
vec3 result = selfColor;
for (int c = 0; c < MAX_SPAN; c++) {
if (c >= spanLen) break;
vec2 cuv = uv + dir * float(c - back);
float cl = luma(texture(sTD2DInputs[0], cuv).rgb);
int rank = 0;
for (int k = 0; k < MAX_SPAN; k++) {
if (k >= spanLen) break;
if (k == c) continue;
float kl = luma(texture(sTD2DInputs[0], uv + dir * float(k - back)).rgb);
// строго темнее, ничьи разбиваем по индексу — биекция ранг↔пиксель
if (kl < cl || (kl == cl && k < c)) rank++;
}
if (rank == myRank) {
result = texture(sTD2DInputs[0], cuv).rgb;
break;
}
}
fragColor = TDOutputSwizzle(vec4(result, 1.0));
}
после этого в ноде глсл сделать такие названия как в коде и значения выбрать и все будет работать !!!!!!!!!!
This media is not supported in your browser
VIEW IN TELEGRAM
ребят СРОЧНО…
я сделал для евы мирель экран для клипа который вы уже можете посмотреть
обязательно оцените и напишите комментарии как вам как по мне просто ахеренно
я сделал для евы мирель экран для клипа который вы уже можете посмотреть
обязательно оцените и напишите комментарии как вам как по мне просто ахеренно
вы видели последние видео в тиктоке моём??
если что оставляю ссылку.
хочу сделать тутор на это что думаете? если есть какие-то идеи присылайте в комментарии посмотрим.
если что оставляю ссылку.
хочу сделать тутор на это что думаете? если есть какие-то идеи присылайте в комментарии посмотрим.
я записал большое видео про ноду блоб трек. как менять форму квадратов, как менять линии, как разобраться с таблицами данных, что такое uv в рамках этой ноды и тд и тп.