Skill CLI do RenderDoc
Análise headless por linha de comando de capturas de quadros do RenderDoc (arquivos .rdc).
Recursos
- Inspeção de captura: metadados, seções, miniaturas, conversão de formato
- Árvore de ações: listar/buscar/filtrar draw calls, clears, dispatches, marcadores
- Operações com texturas: listar, inspecionar, exportar (PNG/JPG/DDS/HDR/EXR), selecionar pixel
- Estado do pipeline: estado completo de shader/RT/viewport em qualquer evento
- Análise de shader: exportar shader em formato legível (HLSL/GLSL/disasm), leitura de constant buffer
- Inspeção de recursos: enumeração de buffers/texturas, leitura de dados brutos
- Dados de malha: decodificação de entrada/saída do vertex shader
- Contadores de GPU: enumerar e buscar contadores de desempenho do hardware
Grupos de Comandos
capture
cli-anything-renderdoc -c frame.rdc capture info # Metadados + seções
cli-anything-renderdoc -c frame.rdc capture thumb -o t.png # Extrair miniatura
cli-anything-renderdoc -c frame.rdc capture convert -o out.rdc --format rdc
actions
cli-anything-renderdoc -c frame.rdc actions list # Todas as ações
cli-anything-renderdoc -c frame.rdc actions list --draws-only # Apenas draw calls
cli-anything-renderdoc -c frame.rdc actions summary # Contagens por tipo
cli-anything-renderdoc -c frame.rdc actions find "Shadow" # Buscar por nome
cli-anything-renderdoc -c frame.rdc actions get 42 # Ação única
textures
cli-anything-renderdoc -c frame.rdc textures list
cli-anything-renderdoc -c frame.rdc textures get <id>
cli-anything-renderdoc -c frame.rdc textures save <id> -o out.png --format png
cli-anything-renderdoc -c frame.rdc textures save-outputs 42 -o ./renders/
cli-anything-renderdoc -c frame.rdc textures pick <id> 100 200
pipeline
cli-anything-renderdoc -c frame.rdc pipeline state 42
# Exportar shader em formato legível
# Shaders de texto (GLSL/HLSL) → salvos diretamente
# Shaders binários (DXBC/SPIR-V) → código fonte embutido (HLSL/GLSL) ou desmontagem
cli-anything-renderdoc -c frame.rdc pipeline shader-export 42 --stage Fragment
cli-anything-renderdoc -c frame.rdc pipeline shader-export 42 --stage Vertex -o ./shaders/
cli-anything-renderdoc -c frame.rdc pipeline cbuffer 42 --stage Vertex --index 0
# Comparar estado do pipeline entre dois eventos
# Saída padrão: mesmo diretório do arquivo de captura; use -o para sobrescrever
cli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdc
cli-anything-renderdoc -c frame.rdc pipeline diff 100 200 # mesma captura
cli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdc -o result.json
cli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdc --no-compact
resources
cli-anything-renderdoc -c frame.rdc resources list
cli-anything-renderdoc -c frame.rdc resources buffers
cli-anything-renderdoc -c frame.rdc resources read-buffer <id> --format float32
mesh
cli-anything-renderdoc -c frame.rdc mesh inputs 42 --max-vertices 10
cli-anything-renderdoc -c frame.rdc mesh outputs 42
counters
cli-anything-renderdoc -c frame.rdc counters list
cli-anything-renderdoc -c frame.rdc counters fetch --ids 1,2,3
Pacotes de Pré-visualização
O suporte a pré-visualização do RenderDoc é para inspeção fiel da captura, não para pré-visualização criativa ao vivo.
# Listar receitas de pré-visualização
cli-anything-renderdoc -c frame.rdc --json preview recipes
# Capturar um pacote de pré-visualização para a captura ativa ou um evento específico
cli-anything-renderdoc -c frame.rdc --json preview capture --recipe quick --event-id 42
# Capturar um pacote de pré-visualização de diff para dois eventos ou capturas
cli-anything-renderdoc -c frame.rdc --json preview diff 100 200
cli-anything-renderdoc -c a.rdc --json preview diff 100 200 --capture-b b.rdc
# Retornar o pacote mais recente existente para a captura
cli-anything-renderdoc -c frame.rdc --json preview latest --recipe quick
Conteúdo típico de um pacote de pré-visualização:
- miniatura da captura
- imagens de destino de saída
pipeline_state.jsonaction_summary.json
Pacotes de diff incluem adicionalmente:
- Miniaturas A/B
- Imagens de destino de saída A/B
pipeline_diff.json
O RenderDoc atualmente não expõe sessões de pré-visualização ao vivo. Em vez disso, cada pacote de captura/diff anexa a um trajectory.json estável por nível de receita.
Comandos do visualizador:
cli-hub previews inspect /path/to/bundle
cli-hub previews html /path/to/bundle -o page.html
cli-hub previews open /path/to/bundle
Modo JSON
Todos os comandos suportam --json para saída legível por máquina:
cli-anything-renderdoc -c frame.rdc --json actions summary
Variáveis de Ambiente
| Variável | Descrição |
|---|---|
RENDERDOC_CAPTURE | Caminho padrão do arquivo de captura |
PYTHONPATH | Deve incluir o caminho do RenderDoc |
Notas de Uso para Agentes
- Use
pipeline shader-exportpara extrair shaders — para shaders binários (DXBC/SPIR-V) ele exporta automaticamente o código HLSL/GLSL embutido ou recorre à desmontagem; para shaders de texto (GLSL/HLSL) salva o código fonte bruto diretamente - Formatos de shader por API de captura:
- D3D11 → binário DXBC, exportado como código fonte HLSL embutido (
.hlsl) ou assembly bytecode (.dxbc.asm) - OpenGL/GLES → código fonte GLSL texto (
.glsl), já legível - Vulkan → binário SPIR-V, exportado como código fonte GLSL embutido (
.glsl) ou assembly SPIR-V (.spv.asm)
- D3D11 → binário DXBC, exportado como código fonte HLSL embutido (
- Use
pipeline diffpara comparar dois eventos — ele escreve um arquivo JSON e imprime apenas o caminho; use-bpara uma segunda captura - Sempre especifique
--jsonpara consumo programático - Use
actions summaryprimeiro para entender a complexidade da captura - Use
actions list --draws-onlypara focar na renderização real - Use
preview captureoupreview diffquando o agente precisar de um pacote de inspeção portátil e fiel, em vez de apenas chamadas de repetição brutas - Leia
_trajectory_pathdo JSON de pré-visualização se precisar de um histórico persistente de captura/diff - Use
cli-hub previews ...apenas para inspecionar/abrir pacotes já gerados - O estado do pipeline requer um ID de evento da lista de ações
- Salvamento de textura suporta: png, jpg, bmp, tga, hdr, exr, dds
- Dados de buffer podem ser decodificados como hex, float32, uint32 ou bytes brutos