Claude Info
DevOps

rdc-cli

BANANASJIM/rdc-cli

Скриптуемый CLI для работы с .rdc-файлами RenderDoc: превращает захваты кадров в Unix-потоки текста, совместимые с grep, jq и AI-агентами. Подходит для отладки графики, CI-пайплайнов и автоматизации.

Установка

terminal
bash
git clone https://github.com/BANANASJIM/rdc-cli.git

README

_____ _____ _____ | __ \| __ \ / ____| | |__) | | | | | | _ /| | | | | | | \ \| |__| | |____ |_| \_\_____/ \_____| cli

PyPI Python License Commands Tests Coverage Discord

Превращает RenderDoc-захваты в Unix-потоки текста. rdc-cli не заменяет RenderDoc — он делает содержимое .rdc-файлов доступным для grep, awk, sort, diff, jq и AI-агентов.

Полная документация →

bash
rdc open scene.rdc
rdc draws | grep Shadow | sort -t$'\t' -k3 -rn | head -5   # топ-5 теневых draw-вызовов по числу треугольников
rdc shader 142 ps | grep shadowMap                           # поиск сэмплирования теней в PS
rdc cat /draws/142/shader/ps/constants                       # просмотр привязанных констант
rdc diff before.rdc after.rdc --draws | grep '~'             # что изменилось между двумя кадрами?
rdc close

Установка

PyPI — Linux (рекомендуется)

bash
uv tool install rdc-cli               # или: pipx install rdc-cli
rdc setup-renderdoc                   # сборка Python-модуля renderdoc из исходников
rdc doctor                            # проверка работоспособности

PyPI — Windows (требуется git, uv, Visual Studio Build Tools)

bash
uv tool install rdc-cli               # или: pipx install rdc-cli
rdc setup-renderdoc                   # сборка Python-модуля renderdoc из исходников
rdc doctor                            # проверка работоспособности

PyPI — macOS (только Split-клиент)

bash
uv tool install rdc-cli               # или: pipx install rdc-cli
rdc doctor

AUR (Arch Linux — renderdoc собирается автоматически, дополнительная настройка не нужна)

bash
yay -S rdc-cli-git    # рекомендуется: отслеживает последний master
# или
yay -S rdc-cli        # стабильная: отслеживает теговые релизы

Из исходников

bash
git clone https://github.com/BANANASJIM/rdc-cli.git
cd rdc-cli
pixi install && pixi run sync
pixi run install                      # редактируемая установка + автодополнение в shell
pixi run setup-renderdoc              # сборка renderdoc (pixi устанавливает тулчейн на macOS)

Матрица поддержки платформ

ПлатформаЛокальный захват/воспроизведениеSplit-клиентУдалённый захват
Linux
macOS❌ (пока не поддерживается)✅ (рекомендуется)
Windows
Android✅ захват + удалённое воспроизведение

Начальная настройка RenderDoc

После установки rdc-cli соберите Python-модуль renderdoc:

rdc setup-renderdoc

При сборке из исходников используйте обёртку pixi: pixi run setup-renderdoc

Быстрый старт

Исследование захвата как файловой системы:

bash
rdc ls /                              # верхний уровень: draws, passes, resources, shaders, ...
rdc ls /draws/142                     # что внутри этого draw-вызова?
rdc cat /draws/142/pipeline/blend      # состояние цветового блендинга
rdc tree /passes --depth 2            # структура проходов с первого взгляда

Отладка шейдеров — без GUI:

bash
rdc shader 142 ps                     # дизассемблирование пиксельного шейдера
rdc shader 142 ps --constants         # текущие значения константного буфера
rdc debug pixel 142 400 300 --trace   # пошаговая трассировка выполнения PS
rdc search "shadowMap"                # поиск по всем шейдерам кадра

Экспорт и скриптинг:

bash
rdc texture 5 -o albedo.png           # экспорт текстуры
rdc rt 142 -o render.png              # экспорт рендер-таргета
rdc buffer 88 -o verts.bin            # экспорт сырого буфера
rdc snapshot 142 -o ./snap/           # пайплайн + шейдеры + рендер-таргеты
rdc draws --json | jq '.[] | select(.triangles > 10000)'  # фильтрация через jq

Проверки в CI:

bash
rdc open frame.rdc
rdc assert-pixel 142 400 300 --expect "0.5 0.0 0.0 1.0" --tolerance 0.01
rdc assert-state 142 topology --expect TriangleList
rdc assert-image golden.png actual.png --threshold 0.001
rdc assert-clean --min-severity HIGH
rdc close

Сравнение двух кадров:

bash
rdc diff before.rdc after.rdc --shortstat        # сводка: draws ±N, resources ±N
rdc diff before.rdc after.rdc --draws             # изменения по каждому draw-вызову
rdc diff before.rdc after.rdc --framebuffer       # попиксельное сравнение изображений

Удалённое воспроизведение и Split-режим

rdc-cli поддерживает три режима развёртывания:

РежимДемон запускается наДоступ к GPUНужен renderdoc на клиенте?
Localклиентлокальный GPUда
Proxy (--proxy)клиентудалённый сервер renderdoccmdда
Split (--listen/--connect)серверGPU на стороне серверанет
bash
# Proxy: локальный демон, удалённый GPU (требуется renderdoccmd на удалённой машине)
rdc open frame.rdc --proxy gpu-server:39920

# Split-сервер: привязка к конкретному интерфейсу LAN
rdc open frame.rdc --listen 192.168.1.10:54321

# Split-клиент: подключение с любой машины (renderdoc не нужен)
rdc open --connect replay-host:54321 --token TOKEN
rdc draws                          # все команды работают прозрачно
rdc close

Split-режим рекомендуется для кросс-платформенного использования. Все команды работают прозрачно независимо от режима.

Захват на Android и удалённое воспроизведение

bash
rdc setup-renderdoc --android            # загрузка APK RenderDoc для Android
rdc android setup                        # установка и запуск сервера захвата на устройстве
rdc android capture com.example.app      # захват кадра из приложения
rdc android pull ./frames/               # загрузка .rdc-файлов на хост
rdc open frames/frame_001.rdc            # воспроизведение локально или через Split

Интеграция с Claude

rdc-cli разработан как инструмент для AI-агентов. Claude может управлять им напрямую через MCP или системный shell.

Быстрый старт с Claude Desktop

Добавьте в конфигурацию Claude Desktop:

json
{
  "mcpServers": {
    "rdc": {
      "command": "rdc",
      "args": ["mcp"]
    }
  }
}

Затем в Claude Desktop:

Открой scene.rdc и найди пять самых дорогих draw-вызовов по числу треугольников.

Claude выполнит:

bash
rdc open scene.rdc
rdc draws --json
# ... анализ и ответ
rdc close

Использование через shell-инструмент

Если Claude имеет доступ к bash/shell, rdc-cli работает напрямую:

Пользователь: Проанализируй frame.rdc и найди все draw-вызовы с более чем 50 000 треугольников. Claude: Выполняю анализ... [запускает: rdc open frame.rdc && rdc draws --json | jq '[.[] | select(.triangles > 50000)]']

Возможности для AI-агентов

  • Машиночитаемый вывод: все команды поддерживают --json
  • Детерминированные проверки: rdc assert-* возвращает коды выхода для принятия решений агентом
  • Сессионная модель: rdc open / rdc close управляет состоянием между вызовами инструментов
  • Обход GUI: полный доступ к данным кадра без графического интерфейса
  • Поддержка CI: работает в headless-окружениях

Примеры запросов для Claude

"Сравни before.rdc и after.rdc — что изменилось в теневых проходах?" "Найди все пиксельные шейдеры, использующие более 3 сэмплеров текстур." "Экспортируй рендер-таргет из draw-вызова 142 и опиши, что на нём изображено." "Запусти регрессионные проверки для frame.rdc по golden-образцам."

Справочник команд

Управление сессией

КомандаОписание
rdc open <file>Открыть .rdc-файл (запускает фоновый демон)
rdc closeЗакрыть текущую сессию
rdc statusПоказать информацию о текущей сессии
rdc doctorПроверить установку и зависимости

Навигация по файловой системе

КомандаОписание
rdc ls [path]Список узлов по пути
rdc cat <path>Вывод содержимого узла
rdc tree [path]Рекурсивный просмотр дерева

Анализ кадра

КомандаОписание
rdc drawsСписок всех draw-вызовов
rdc passesСписок рендер-проходов
rdc resourcesСписок ресурсов кадра
rdc shader <draw> <stage>Дизассемблирование шейдера
rdc search <pattern>Поиск по всем шейдерам

Отладка

КомандаОписание
rdc debug pixel <draw> <x> <y>Трассировка выполнения пиксельного шейдера
rdc debug vertex <draw> <idx>Трассировка выполнения вершинного шейдера

Экспорт

КомандаОписание
rdc texture <id> -o <file>Экспорт текстуры
rdc rt <draw> -o <file>Экспорт рендер-таргета
rdc buffer <id> -o <file>Экспорт буфера
rdc snapshot <draw> -o <dir>Полный снимок состояния пайплайна

Проверки

КомандаОписание
rdc assert-pixel <draw> <x> <y>Проверка значения пикселя
rdc assert-state <draw> <key>Проверка состояния пайплайна
rdc assert-image <golden> <actual>Сравнение изображений
rdc assert-cleanПроверка на отсутствие ошибок API

Сравнение

КомандаОписание
rdc diff <a.rdc> <b.rdc>Сравнение двух захватов

Удалённое управление

КомандаОписание
rdc open <file> --proxy <host:port>Подключение через удалённый renderdoccmd
rdc open <file> --listen <addr:port>Запуск Split-сервера
rdc open --connect <host:port>Подключение к Split-серверу

Разработка

bash
git clone https://github.com/BANANASJIM/rdc-cli.git
cd rdc-cli
pixi install
pixi run sync          # установка зависимостей
pixi run test          # запуск тестов
pixi run lint          # проверка кода
pixi run docs          # сборка документации

Лицензия

MIT — подробности в файле LICENSE.

Похожие скиллы