c7821c4c99
- 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>
2.4 KiB
2.4 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 | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| shader_canvas | component | cpp | gfx | 1.1.0 | impure | void canvas_render(ShaderCanvas& c, float time_seconds, const std::function<void(unsigned int)>& uniforms_fn = {}) | Componente ImGui que renderiza un fragment shader GLSL a un FBO y lo muestra en el panel actual. Compone gl_framebuffer, fullscreen_quad y gl_shader. Gestiona resize automático y coordenadas de mouse. Acepta callback opcional uniforms_fn invocado tras glUseProgram para uniforms custom. |
|
|
false | error_go_core |
|
false | cpp/functions/gfx/shader_canvas.cpp | imgui |
|
Dibuja ImGui::Image con la textura del FBO renderizado. El panel ImGui debe estar abierto (entre Begin/End). Ocupa GetContentRegionAvail(). |
shader_canvas
Componente que encapsula el ciclo render-to-FBO + ImGui::Image. Llama a canvas_render() dentro de un ImGui::Begin/End activo.
Ciclo de vida
fn::gfx::ShaderCanvas canvas{};
// En el render loop:
if (!canvas.initialized) fn::gfx::canvas_init(canvas);
// Cargar un shader compilado:
auto r = fn::gfx::compile_fragment(src);
if (r.ok) fn::gfx::canvas_set_program(canvas, r.program);
// Dentro de ImGui::Begin/End:
fn::gfx::canvas_render(canvas, (float)ImGui::GetTime());
// Al destruir:
fn::gfx::canvas_destroy(canvas);
Notas
canvas_set_programborra el programa anterior automáticamente.canvas_set_program(c, 0)deja la pantalla en negro (glClear sin draw call).- El flip de coordenadas UV (
ImVec2(0,1)/ImVec2(1,0)) corrige el origen OpenGL bottom-left vs ImGui top-left. - Guarda y restaura
GL_FRAMEBUFFER_BINDINGyGL_VIEWPORTpara compatibilidad con el render loop de ImGui.