tddsash
3.79K subscribers
257 photos
193 videos
49 files
99 links
Download Telegram
наше видео набрало пол миллиона просмотров 🔥
2601815
432521
522118
This media is not supported in your browser
VIEW IN TELEGRAM
медиапайп это баловство.
лайк😊
673626
This media is not supported in your browser
VIEW IN TELEGRAM
421513
мне удалось приложить руку к этому чуду черт возьми

смотрите.
12564
🧍‍♀
Please open Telegram to view this post
VIEW IN TELEGRAM
1565
This media is not supported in your browser
VIEW IN TELEGRAM
44205
привет ребята как дела у вас?
как там ваши дипломы огэ егэ и тд? расскажите в комментариях😊
298
я помню как увидев его видео я ахерел и мне стало интересно как делать также. узнал о программе тачдизайнер и хотел стать таким же крутым как он…а тут такое😍
17019
привет я приехал в питер тут классно
играюсь с клаудом и глсл делаю какие-то элементарные вещи потому что нихера не понимаю в код… вы умеете писать глсл шейдеры ???
3212
даша сегодня сняла туториал на пиксель сорт и я решил наВАЙБкодить с клодом его тоже.
все что вам нужно это подключить ноду 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));
}


после этого в ноде глсл сделать такие названия как в коде и значения выбрать и все будет работать !!!!!!!!!!
249
This media is not supported in your browser
VIEW IN TELEGRAM
4336
3022