Files
fn_registry/cpp/functions/gfx/uniform_panel.md
T
egutierrez 4610bb4a99 feat(shaders_lab): uniform annotations → auto-generated ImGui controls
- cpp/functions/gfx/uniform_parser: regex-based parser of @slider/@color/@toggle/@xy annotations (+ inline tests)
- cpp/functions/gfx/uniform_panel: ImGui widgets + value store + glUniform* apply
- shader_canvas: optional uniforms callback invoked per-frame
- gl_loader: +glUniform1i/3f/4f
- seed plasma: demo uniforms u_speed + u_color
- rebuild Windows .exe

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

2.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, framework, 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 framework params output
uniform_panel component cpp gfx 1.0.0 impure void uniforms_panel(UniformStore&, const std::vector<UniformDescriptor>&) Panel ImGui auto-generado a partir de UniformDescriptor. Sincroniza un UniformStore con los descriptores, renderiza widgets (slider/color/toggle/xy) y aplica los valores al programa GL activo vía glUniform*.
opengl
shader
uniforms
imgui
controls
gfx
component
uniform_parser_cpp_gfx
gl_loader_cpp_gfx
false error_go_core
imgui
gl_loader
uniform_parser
array
unordered_map
false
cpp/functions/gfx/uniform_panel.cpp imgui
name desc
store Mapa nombre→array<float,4> con los valores actuales de cada uniform. Se modifica in-place al interactuar con los widgets.
name desc
descs Descriptores parseados por parse_uniforms(). Determinan qué widgets se renderizan y con qué rangos.
name desc
program (uniforms_apply) ID del programa GL sobre el que aplicar los valores. Debe estar activo con glUseProgram antes de llamar.
Dibuja los widgets ImGui en el panel actual. uniforms_apply llama glUniform* actualizando los uniforms del programa para el frame actual.

uniform_panel

Tres funciones que forman el ciclo completo de controles de uniforms:

parse_uniforms(src) → descs
uniforms_sync(store, descs)   // al compilar shader
uniforms_panel(store, descs)  // cada frame, dentro de ImGui::Begin/End
uniforms_apply(store, descs, program)  // cada frame, dentro de canvas_render callback

Widgets por tipo

GLSLType WidgetKind ImGui call
Float Slider SliderFloat (+ flag Logarithmic)
Int Slider SliderInt
Bool Toggle Checkbox
Vec2 XY SliderFloat2
Vec3 Color ColorEdit3
Vec4 Color ColorEdit4

Notas

  • uniforms_sync elimina entradas obsoletas y añade nuevas con sus defaults. Preserva valores actuales para uniforms que siguen presentes.
  • Si no hay descriptores, uniforms_panel muestra "Declare uniforms with @slider ... annotations.".
  • uniforms_apply usa glGetUniformLocation por nombre; si no existe (loc < 0), lo salta silenciosamente.