53402d84d5
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>
3.6 KiB
3.6 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_compile | function | cpp | gfx | 1.0.0 | pure | std::string compile_dag_to_glsl(const std::vector<DagStep>& pipeline) | Compila un pipeline DAG a GLSL 330 core listo para pasarle a gl_shader::compile_fragment. Emite uniform vec4 u_params[16], una funcion node_<i> por paso y void main() que encadena los outputs. Blends usan source_id para fan-in estable ante reorders. |
|
|
|
false |
|
false | cpp/functions/gfx/dag_compile.cpp |
|
String GLSL que se pega tras el preamble de gl_shader (que ya declara #version 330 core, fragColor, u_time, u_resolution, u_mouse). Incluye uniform vec4 u_params[16], funciones node_<i> y void main(). |
Estructura del GLSL emitido
uniform vec4 u_params[16];
vec4 node_0(vec4 c, vec2 uv) { ... }
vec4 node_1(vec4 a, vec4 b, vec2 uv) { ... } // blend
void main() {
vec2 uv = gl_FragCoord.xy / u_resolution;
vec4 c = vec4(0.04, 0.04, 0.06, 1.0);
vec4 out_0 = node_0(vec4(0.0, 0.0, 0.0, 1.0), uv);
vec4 out_1 = node_1(out_0, out_0, uv);
fragColor = out_1;
}
Notas
- El preamble de gl_shader::compile_fragment ya declara los 3 uniforms basicos. compile_dag_to_glsl NO los redeclara.
- Si el pipeline esta vacio, emite void main() que pinta gris oscuro (0.04, 0.04, 0.06).
- MAX_NODES = 16. Pipelines mas largos se truncan silenciosamente.
- source_id fallback: si el id no se encuentra o apunta a un indice >= idx, usa max(0, idx-2).
Cambios 2026-04-25 (Fase 5 + Fase 7 shaders_lab)
- Layout de params dinámico: el array global pasa de
vec4 u_params[16](1 vec4 por nodo) avec4 u_params[64](MAX_PARAM_VEC4S). Cada nodo ocupadag_vec4_count(param_count)vec4s consecutivos. Helper públicodag_param_layout(pipeline) -> vector<int>devuelve el índice base por nodo y se comparte condag_uniforms_apply. - Strict output: el fallback
last_valid_outque filtraba el output del último nodo cuandoOutputno tenía source o no existía está eliminado. Ahora la regla es: solo se emite lo conectado alOutput; en cualquier otro casoseed()(gris oscuro). Elresolve()interno también devuelvevec4(0,0,0,1)para slots de input vacíos (antes caía alast_valid_out). - Test 4b nuevo: nodo sin Output → seed final aparece después de las branches de preview (
fragColor = vec4(0.04después del últimoif (u_preview_target ==). - Variante baked:
compile_dag_to_glsl_baked(pipeline)(nuevo en.h+.cpp):- Sustituye
uniform vec4 u_params[64];porconst vec4 u_params[N] = vec4[N](vec4(...), ...);con los valores actuales del pipeline empaquetados (mismo layout quedag_uniforms_apply). - Sustituye
uniform int u_preview_target;porconst int u_preview_target = -1;. Las branches de preview quedan muertas. - Sustitución vía
std::regex_replace.total = max(base[i] + dag_vec4_count(pc))o 1 (GLSL prohíbe arrays de tamaño 0). - Caso de uso: panel
Generated GLSLde shaders_lab muestra el baked, paste-able en el editorCodepara reproducir el render del DAG sin uniforms externos. Test 7 verifica ausencia deuniform vec4 u_paramsy presencia deconst vec4 u_params[.
- Sustituye
Cobertura tests: 7/7 (strict + 4b) → 8/8 (incluye baked).