Files
egutierrez 5b73466bd4 chore(registry): notes en huerfanas usadas por framework/apps
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>
2026-04-28 23:40:51 +02:00

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.
opengl
shader
uniforms
parser
imgui
gfx
false
regex
string
vector
sstream
unordered_map
unordered_set
true
sin anotacion float -> Slider 0..1
@slider min=0 max=5 default=1 sobre float
@color default=0.1,0.2,0.5 sobre vec3
@xy min=-1 max=1 default=0,0 sobre vec2
uniform vec2 u_resolution ignorado
@toggle default=true sobre bool
cpp/functions/gfx/uniform_parser.cpp cpp/functions/gfx/uniform_parser.cpp
name desc
glsl_source Código fuente GLSL completo del fragment shader. Se escanea línea a línea buscando declaraciones uniform con anotaciones opcionales.
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

  • @slider sobre vec2 equivale a @xy.
  • Props desconocidas o de otro widget se ignoran silenciosamente.
  • No lanza excepciones; errores de parse usan defaults.
  • u_resolution, u_time, u_mouse y sampler2D se 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