Files
fn_registry/cpp/functions/gfx/dag_node_editor.md
T
egutierrez 2b55a4823d feat(shaders_lab): visual node editor (imgui-node-editor) + multi-source
- cpp/vendor/imgui-node-editor: vendorized thedmd/imgui-node-editor v0.9.4
- cpp/functions/gfx/dag_node_editor: new visual pipeline editor replacing dag_panel
- DagStep: source_ids[4] + editor_pos + editor_uid (multi-input support)
- DagNodeDef: num_inputs explicit; circle reclassified as Op
- dag_compile: N inputs per node, topological ordering preserved
- main: use node editor; destroy on shutdown
- patch imgui_extra_math.inl: guard operator*(float, ImVec2) for imgui >= 18955

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 21:56:48 +02:00

1.5 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, params, output
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path params output
dag_node_editor function cpp gfx 1.0.0 impure bool dag_node_editor(std::vector<DagStep>& pipeline) Renderiza el node editor visual (imgui-node-editor) para el DAG de shaders. Modifica el pipeline in-place: añade/borra nodos, gestiona aristas (source_ids). Devuelve true si la topologia cambio.
dag
imgui
node-editor
shader
visual
pipeline
gfx
false error_go_core
imgui_node_editor.h
gfx/dag_catalog.h
gfx/dag_types.h
false
cpp/functions/gfx/dag_node_editor.cpp
name desc
pipeline vector de DagStep que representa el pipeline actual; modificado in-place
true si la topologia cambio (nodos o aristas añadidos/quitados); false en caso contrario

Notas

Sustituye a dag_panel como UI del pipeline. Usa ax::NodeEditor (thedmd/imgui-node-editor v0.9.4) con contexto singleton estático.

Codificacion de IDs:

  • Node id = editor_uid del step
  • Output pin = (uid << 8) | 0
  • Input pin = (uid << 8) | (slot + 1)
  • Link id = (from_uid << 20) | (to_uid << 8) | slot

Aplica topological sort (Kahn) tras cada cambio de topologia. Rechaza ciclos en BeginCreate.

Multi-source: cada nodo declara num_inputs (0-4). Los slots de source_ids[] se mapean a los inputs del shader GLSL (a, b, c, d).

Dependencia

Requiere imgui_node_editor static library linkeada (cpp/vendor/imgui-node-editor).