a9045d45a0
Dos primitivas del pipeline de shaders_lab que ya estaban en uso pero sin indexar al registry: - code_to_generator_cpp_gfx (function, pure) Traduce un fragment shader GLSL escrito a mano (modo Code, con void main() + fragColor = ...) en un body de DAG Gen + DagControl[]. Cada uniform anotado se convierte en un control; el body usa el parametro uv y reemplaza fragColor= por return. Empaqueta uniforms en vec4 (4 x n_uniforms). - shaderlab_db_cpp_gfx (function, impure) CRUD persistente para generators custom de shaders_lab via sqlite3. Guarda el GLSL original, el body traducido para el DAG, los DagControl y los param_defaults en una BD local (shaders_lab.db). Soporta open(:memory:) para tests. Ambas se indexan ahora en registry.db y son reusables fuera de shaders_lab si en el futuro hay otra app que componga DAGs de shaders.
2.8 KiB
2.8 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
| 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 | |||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| shaderlab_db | function | cpp | gfx | 1.0.0 | impure | bool shaderlab_db_save_generator(GeneratorRecord& gen, std::string* err); std::vector<GeneratorRecord> shaderlab_db_list_generators(); bool shaderlab_db_get_generator(const std::string& id, GeneratorRecord& out); bool shaderlab_db_delete_generator(const std::string& id); | CRUD persistente para generators custom de shaders_lab via sqlite3. Guarda el GLSL original, el body traducido para el DAG, los DagControl y los param_defaults en una BD local (shaders_lab.db). Soporta open(:memory:) para tests. |
|
|
false | error_go_core |
|
true |
|
cpp/functions/gfx/shaderlab_db.cpp | cpp/functions/gfx/shaderlab_db.cpp |
|
Persistencia en la tabla generators de shaders_lab.db. Las listas vienen ordenadas por label. |
Schema
CREATE TABLE generators (
id TEXT PRIMARY KEY,
label TEXT NOT NULL,
description TEXT NOT NULL DEFAULT '',
source_glsl TEXT NOT NULL,
body_glsl TEXT NOT NULL,
param_count INTEGER NOT NULL,
param_defaults TEXT NOT NULL, -- CSV de floats
param_names TEXT NOT NULL, -- LF-separated strings
controls TEXT NOT NULL, -- LF-separated, fields '|': kind|label|p0|p1|p2|min|max|step
tags TEXT NOT NULL DEFAULT '',
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
Notas
- Formato de serializacion custom (no JSON): CSV para floats, LF para strings,
|para fields de control. Sin escape de separadores; los labels no deben contener\nni|. shaderlab_db_openes idempotente: re-abrir con el mismo path es no-op.:memory:como path crea una BD temporal en memoria (usado en tests).save_generatorhace upsert (ON CONFLICT DO UPDATE). Seteacreated_atsolo si esta vacio.- Tests inline activables con
-DSHADERLAB_DB_TESTy linkando sqlite3 (amalgamation o-lsqlite3).