#pragma once #include #include namespace fn::gfx { enum class GLSLType { Float, Int, Bool, Vec2, Vec3, Vec4 }; enum class WidgetKind { Slider, Color, Toggle, XY }; struct UniformDescriptor { std::string name; GLSLType glsl_type = GLSLType::Float; WidgetKind widget = WidgetKind::Slider; float min[4] = {0, 0, 0, 0}; float max[4] = {1, 1, 1, 1}; float defaults[4] = {0, 0, 0, 0}; float step = 0.0f; bool log_scale = false; bool default_bool = false; }; // Parsea líneas `uniform ; // @ key=value ...` // Ignora u_resolution, u_time, u_mouse (reservados). // Ignora sampler2D silenciosamente. // Sin anotación: defaults por tipo. std::vector parse_uniforms(const std::string& glsl_source); } // namespace fn::gfx