feat(shaders_lab): DAG pipeline mode with node catalog
- cpp/functions/gfx/dag_types: DagStep, DagNodeDef, DagControl (header-only) - cpp/functions/gfx/dag_catalog: 10 hardcoded nodes (4 gen, 3 op, 3 blend) ported from shader-dag-blends.jsx - cpp/functions/gfx/dag_compile: pipeline → GLSL 330 core with fan-in via source_id - cpp/functions/gfx/dag_uniforms: upload u_params[16] via glUniform4fv - cpp/functions/gfx/dag_panel: ImGui pipeline editor (add/remove/reorder/controls) - main.cpp: Code/DAG mode toggle, per-mode compile path and uniforms - gl_loader: +glUniform4fv - rebuild Windows .exe Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
---
|
||||
name: dag_uniforms
|
||||
kind: function
|
||||
lang: cpp
|
||||
domain: gfx
|
||||
version: "1.0.0"
|
||||
purity: impure
|
||||
signature: "void dag_uniforms_apply(const std::vector<DagStep>& pipeline, unsigned int program)"
|
||||
description: "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)."
|
||||
tags: [dag, shader, uniforms, opengl, gfx, pipeline]
|
||||
uses_functions:
|
||||
- gl_loader_cpp_gfx
|
||||
uses_types:
|
||||
- dag_types_cpp_gfx
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [dag_uniforms, gl_loader, dag_types, vector, algorithm, cstring]
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
file_path: "cpp/functions/gfx/dag_uniforms.cpp"
|
||||
params:
|
||||
- name: pipeline
|
||||
desc: "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: program
|
||||
desc: "ID del programa GL activo. Debe haber sido activado con glUseProgram antes de llamar."
|
||||
output: "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.
|
||||
Reference in New Issue
Block a user