| | --- |
| | license: other |
| | tags: |
| | - text-generation |
| | - shader |
| | - glsl |
| | - shadertoy |
| | library_name: pytorch |
| | pipeline_tag: text-generation |
| | model_name: Frag Loop |
| | --- |
| | |
| | # Frag Loop |
| |
|
| | Frag Loop is a decoder-only Transformer trained to generate **Shadertoy-compatible GLSL fragment shader bodies**. The model outputs the body only (functions + `mainImage`), and is intended to be wrapped by a fixed WebGL2/Shadertoy template at runtime. |
| |
|
| | ## Intended Use |
| | - **Primary**: generate novel GLSL fragment shader bodies compatible with Shadertoy-style templates. |
| | - **Not intended for**: general chat, safety-critical systems, or production code generation without review. |
| |
|
| | ## Training Data (Summary) |
| | - **Pretraining**: GLSL-heavy subset of **The Stack (bigcode/the-stack-dedup)**. |
| | - **Fine-tuning (SFT)**: **Vipitis/Shadereval-inputs** (Shadertoy-oriented subset). |
| |
|
| | These datasets contain code under multiple licenses. If you redistribute outputs or data, ensure provenance and license compliance. |
| |
|
| | ## Tokenizer |
| | The tokenizer implementation is **heavily influenced by nanochat**: |
| | - https://github.com/karpathy/nanochat |
| |
|
| | ## Training Procedure (High-level) |
| | - Decoder-only Transformer (GPT-style) trained from scratch. |
| | - Pretrain on GLSL-heavy corpus, then SFT on Shadertoy-style examples. |
| | - Optional copy-detection and automatic rejection are supported in the runtime. |
| |
|
| | ## Evaluation |
| | - Primary evaluation is **compile + render** for WebGL2 (moderngl), with metrics for: |
| | - compile success |
| | - render time |
| | - black / static detection |
| | - NaN / Inf detection |
| |
|
| | ## How to Use (Recommended Runtime) |
| | The reference runtime + WebUI are provided in the GitHub repo: |
| | - https://github.com/hanasaan/FragLoop |
| |
|
| | From the `publish/` bundle, you can run: |
| |
|
| | ```bash |
| | # download from HF and start inference server |
| | python infer/inference_server.py --hf-repo hanasaan/frag-loop |
| | |
| | # start UI server |
| | node ui_optional/server_node/server.js |
| | ``` |
| |
|
| | Open `http://localhost:5173` in a browser. |
| |
|
| | ## Limitations |
| | - Outputs may occasionally fail to compile or render. |
| | - The model can still produce outputs similar to training data. Use copy-detection when displaying or distributing outputs. |
| | - Shader aesthetics and performance vary; manual curation is recommended for showcases. |
| |
|
| | ## Acknowledgements |
| | - Tokenizer influenced by **nanochat** (https://github.com/karpathy/nanochat). |
| | - All implementation work in this repository was done by **GPT-5.2-Codex (xhigh)**. |
| |
|
| | ## License |
| | This model is trained on datasets with mixed licenses. Please review and comply with dataset licensing terms when using or redistributing the model or outputs. |
| |
|