даша сегодня сняла туториал на пиксель сорт и я решил наВАЙБкодить с клодом его тоже. все что вам нужно это подключить ноду 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)); } после этого в ноде глсл сделать такие названия как в коде и значения выбрать и все будет работать !!!!!!!!!!