Files
fn_registry/cpp/functions/gfx/dag_uniforms.md
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

2.0 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_uniforms function cpp gfx 1.0.0 impure void dag_uniforms_apply(const std::vector<DagStep>& pipeline, unsigned int program) Sube los params del pipeline al shader activo via glUniform4fv. Construye un float[64] con los params de cada DagStep (hasta 16 pasos) y llama glUniform4fv(u_params, 16, data).
dag
shader
uniforms
opengl
gfx
pipeline
gl_loader_cpp_gfx
dag_types_cpp_gfx
false error_go_core
dag_uniforms
gl_loader
dag_types
vector
algorithm
cstring
false
cpp/functions/gfx/dag_uniforms.cpp
name desc
pipeline Vector de DagStep. params[0..3] de cada step se copian en data[i*4..i*4+3]. Steps mas alla de MAX_NODES=16 se ignoran.
name desc
program ID del programa GL activo. Debe haber sido activado con glUseProgram antes de llamar.
Efecto lateral: actualiza el uniform u_params[16] en el programa GL activo para el frame actual.

Notas

El array data[64] se inicializa a 0 antes de copiar, por lo que steps no usados quedan en cero. El caller es responsable de activar el programa antes de llamar.

Cambios 2026-04-25 (Fase 5 + Fase 7 shaders_lab)

  • Layout dinámico: el array global pasa de vec4 u_params[16] (4 floats por nodo, fijo) a vec4 u_params[64] (256 floats). Cada nodo ocupa dag_vec4_count(param_count) vec4s consecutivos. El packing usa dag_param_layout(pipeline) (declarada en dag_compile.h) para obtener el índice base por nodo, idéntico al que usa el compilador.
  • Reset de u_preview_target: al final del apply, se hace glUniform1i(u_preview_target, -1) si el uniform existe en el programa. Esto deja la rama de preview desactivada en el render principal del Canvas DAG; dag_previews_render la activa transitoriamente por nodo y la deja restaurada.
  • Nuevo dag_compile_cpp_gfx en uses_functions (consume dag_param_layout).