5b73466bd4
Auditoria del issue 0044: anota en notes: el contexto de consumo de
huerfanos que no pueden registrarse en uses_functions porque sus
consumidores no son funciones del registry:
- consumido por cpp/framework/app_base.cpp (framework no indexado)
- consumido por cpp/apps/{shaders_lab,chart_demo,text_editor_smoke}/main.cpp
- scaffolding/demo en primitives_gallery
31 huerfanas anotadas. Las que quedan en uses_functions=[] tras esto
son hojas legitimas (no llaman a nada) o realmente sin uso (lista
DEAD reportada en el issue 0044).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.1 KiB
3.1 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, notes
| 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 | notes | |||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| uniform_parser | function | cpp | gfx | 1.0.0 | pure | std::vector<UniformDescriptor> parse_uniforms(const std::string& glsl_source) | Parsea un fragment shader GLSL y extrae descriptores de uniforms anotados con @slider/@color/@toggle/@xy. Ignora los uniforms reservados (u_resolution, u_time, u_mouse) y sampler2D. Sin anotación aplica defaults por tipo. |
|
false |
|
true |
|
cpp/functions/gfx/uniform_parser.cpp | cpp/functions/gfx/uniform_parser.cpp |
|
Vector de UniformDescriptor ordenado según aparición en el shader. Cada descriptor tiene nombre, tipo GLSL, widget ImGui, rangos min/max, valor por defecto y flags (log_scale, step, default_bool). | consumido por cpp/apps/shaders_lab/main.cpp |
uniform_parser
Parsea declaraciones uniform <type> <name>; // @<widget> key=value ... en GLSL.
Sintaxis de anotación
uniform float u_speed; // @slider min=0.1 max=5 default=1
uniform vec3 u_color; // @color default=0.5,0.2,0.8
uniform bool u_debug; // @toggle default=true
uniform vec2 u_offset; // @xy min=-1 max=1 default=0,0
Widgets disponibles
| Widget | Tipos soportados | Props relevantes |
|---|---|---|
slider |
float, int, vec2 | min, max, default, step, log=true |
color |
vec3, vec4 | default (lista comma-separated) |
toggle |
bool | default=true/false |
xy |
vec2 | min, max, default (dos componentes) |
Defaults por tipo sin anotación
| Tipo | Widget | min | max | default |
|---|---|---|---|---|
| float | Slider | 0 | 1 | 0 |
| int | Slider | 0 | 10 | 0, step=1 |
| bool | Toggle | — | — | false |
| vec2 | XY | 0,0 | 1,1 | 0.5,0.5 |
| vec3 | Color | — | — | 1,1,1 |
| vec4 | Color | — | — | 1,1,1,1 |
Notas
@slidersobrevec2equivale a@xy.- Props desconocidas o de otro widget se ignoran silenciosamente.
- No lanza excepciones; errores de parse usan defaults.
u_resolution,u_time,u_mouseysampler2Dse ignoran.
Tests
Build y ejecución del test inline:
g++ -std=c++17 -DUNIFORM_PARSER_TEST -I cpp/functions \
cpp/functions/gfx/uniform_parser.cpp \
-o /tmp/uniform_parser_test \
&& /tmp/uniform_parser_test