Files
fn_registry/cpp/functions/gfx/dag_compile.h
T
egutierrez 53402d84d5 docs(issues): marcar 0025 y 0026 como completados + WIP master
Wave 1 de parallel-fix-issues integrada a master:
- 0025: text_editor_cpp_core + file_watcher_cpp_core
- 0026: gl_texture_load_cpp_gfx (vendor: stb_image v2.30)

Ademas se commitea WIP previo de master que estaba sin commitear (cambios
en shaders_lab, dag_*, framework, tokens, kpi_card, gl_loader.md, etc.)
para dejar HEAD buildable.

Notas:
- Algunos deps del gallery (button.cpp, toolbar.cpp, modal_dialog.cpp...)
  siguen UNTRACKED — gating con FN_BUILD_GALLERY=ON (default OFF) para
  que master build (sin flag) no los necesite.
- Build OK con y sin flag. fn index registra 904 functions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:14:15 +02:00

28 lines
1.3 KiB
C++

#pragma once
#include <string>
#include <vector>
#include "gfx/dag_types.h"
namespace fn::gfx {
// Compila un pipeline DAG a GLSL 330 core completo (listo para gl_shader::compile_fragment).
// El preamble de gl_shader ya declara #version, fragColor, u_time, u_resolution, u_mouse.
// Este compilador emite uniform vec4 u_params[64], las funciones node_<i> y void main().
// Si el pipeline esta vacio, emite un fragment que pinta gris oscuro.
std::string compile_dag_to_glsl(const std::vector<DagStep>& pipeline);
// Devuelve el indice base (vec4) en u_params[] que ocupa cada nodo del pipeline.
// Cada nodo ocupa ceil(param_count / 4) vec4s consecutivos. Nodos con 0 params ocupan 0.
// El compilador y dag_uniforms_apply usan el mismo layout.
std::vector<int> dag_param_layout(const std::vector<DagStep>& pipeline);
// Variante de compile_dag_to_glsl que sustituye `uniform vec4 u_params[64]`
// por un `const vec4 u_params[N] = vec4[N](...)` con los valores actuales del
// pipeline empaquetados, y `uniform int u_preview_target` por
// `const int u_preview_target = -1`. El resultado es un fragment shader
// autocontenido: no depende de ningun uniform externo y se puede pegar tal cual
// en el editor Code para reproducir el DAG actual.
std::string compile_dag_to_glsl_baked(const std::vector<DagStep>& pipeline);
} // namespace fn::gfx