{"id":14225594,"url":"https://github.com/repi/shadertoy-browser","last_synced_at":"2025-03-14T10:07:09.199Z","repository":{"id":47788834,"uuid":"115499613","full_name":"repi/shadertoy-browser","owner":"repi","description":"Shadertoy browser \u0026 viewer for Mac built in Rust","archived":false,"fork":false,"pushed_at":"2021-04-30T22:18:50.000Z","size":1225,"stargazers_count":208,"open_issues_count":3,"forks_count":11,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-06T15:15:24.527Z","etag":null,"topics":["metal","rust","shaders","shadertoy"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/repi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-27T08:31:20.000Z","updated_at":"2025-02-18T02:56:27.000Z","dependencies_parsed_at":"2022-09-26T20:02:03.534Z","dependency_job_id":null,"html_url":"https://github.com/repi/shadertoy-browser","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/repi%2Fshadertoy-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/repi%2Fshadertoy-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/repi%2Fshadertoy-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/repi%2Fshadertoy-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/repi","download_url":"https://codeload.github.com/repi/shadertoy-browser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243558478,"owners_count":20310573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["metal","rust","shaders","shadertoy"],"created_at":"2024-08-20T01:01:24.033Z","updated_at":"2025-03-14T10:07:09.168Z","avatar_url":"https://github.com/repi.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Rusty Shadertoy Browser\n\n[![Crate](https://img.shields.io/crates/v/shadertoy-browser.svg)](https://crates.io/crates/shadertoy-browser)\n[![Build Status](https://travis-ci.org/repi/shadertoy-browser.svg?branch=master)](https://travis-ci.org/repi/shadertoy-browser)\n[![Build Status](https://ci.appveyor.com/api/projects/status/ayr854h0a0eqqrfh/branch/master?svg=true)](https://ci.appveyor.com/project/repi/shadertoy-browser)\n![MIT/Apache](https://img.shields.io/badge/license-MIT%2FApache-blue.svg)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Frepi%2Fshadertoy-browser.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Frepi%2Fshadertoy-browser?ref=badge_shield)\n\nSmall [Shadertoy](http://shadertoy.com) browser \u0026 viewer for Mac built in [Rust](https://www.rust-lang.org).\n\nThis application uses the [Shadertoy REST API](http://shadertoy.com/api) to search for Shadertoys and then downloads them locally and converts them using [`shaderc-rs`](https://crates.io/crates/shaderc) and [`spirv-cross`](https://crates.io/crates/spirv_cross) to be natively rendered on Mac using [`metal-rs`](https://crates.io/crates/metal-rs).\n\nWarning: Some of the Shadertoy shaders are extremely demanding of your GPU and cause system to be unresponsive.\n\nThe API queries are done through the [`shadertoy`](https://crates.io/crates/shadertoy) crate, which is also part of this repository in [`src/shadertoy`](src/shadertoy)\n\n![Render](https://raw.githubusercontent.com/repi/shadertoy-browser/master/screenshots/render.jpg?token=ABNEZC2kS8a8LqdI5bfJVYkojB7RNz83ks5aWQlAwA%3D%3D)\n![Output](https://raw.githubusercontent.com/repi/shadertoy-browser/master/screenshots/output.jpg?token=ABNEZDsvhrXMegCZ4Zy6IaWT4gNDsojOks5aWQkcwA%3D%3D)\n\n## Building\n\nFirst make sure you have [Rust installed](https://www.rust-lang.org/en-US/install.html) installed.\nThen building \u0026 running is easy:\n\n```sh\n$ git clone https://github.com/repi/shadertoy-browser\n$ cd shadertoy-browser\n$ cargo build --release\n\n# this will download and view all shadertoys with \"car\" in the name\n$ cargo run --release -- -s car\n```\n\n## Usage\n\nKeys:\n\n- `LEFT` and `RIGHT` - switch between shadertoys.\n- `SPACE` - toggle grid view mode\n- `ENTER` - open shadertoy.com for current shader\n\nIf the screen is red that indicates the shader wasn't able to be built.\n\nOptional command-line settings:\n\n```text\nUSAGE:\n    shadertoy-browser [FLAGS] [OPTIONS]\n\nFLAGS:\n        --help        Prints help information\n    -h, --headless    Don't render, only download shadertoys\n    -V, --version     Prints version information\n    -v, --verbose     More verbose log output, including list of all shadertoys found\n\nOPTIONS:\n    -k, --apikey \u003ckey\u003e                Set shadertoy API key to use. Create your key on https://www.shadertoy.com/myapps\n                                      [default: BtHtWD]\n    -f, --filter \u003cfilter\u003e...          Inclusion filters [values: VR, SoundOutput, SoundInput, Webcam, MultiPass,\n                                      MusicStream]\n    -y, --gridheight \u003cgrid_height\u003e    Grid height [default: 4]\n    -x, --gridwidth \u003cgrid_width\u003e      Grid width [default: 4]\n    -l, --limit \u003climit\u003e               The maximum number of shaders to download. -1 = no limit [default: -1]\n    -o, --order \u003corder\u003e               Sort order [default: Popular]  [values: Name, Love, Popular, Newest, Hot]\n    -h, --resheight \u003cres_height\u003e      Window resolution height [default: 768]\n    -w, --reswidth \u003cres_width\u003e        Window resolution width [default: 1024]\n    -s, --search \u003cstring\u003e             Search string to filter which shadertoys to get\n    -t, --threads \u003cthreads\u003e           How many threads to use for downloading \u0026 processing shaders. 0 = disables\n                                      threading, -1 = use all logical processors [default: -1]\n```\n\nTo use the Rust shadertoy API directly in another app or library, check out the [`shadertoy`](https://crates.io/crates/shadertoy) crate, [docs](http://docs.rs/shadertoy) and [README](src/shadertoy/README.MD).\n\n## Todo\n\nThis repo and app is a bit of an experimental Rust test range, and it is not intended to support everything or all shadertoys. But here are a couple of things I would like to implement going forward:\n\n- [ ] Rendering on Windows using DX12 and DXC\n- [ ] Rendering backend using SPIRV\n- [ ] Be able to click to select a shadertoy in grid view\n- [ ] Basic IMGUI for interactive searching \u0026 filtering\n- [ ] Async future based version of the Shadertoy client REST API\n- [ ] Async background download and building of shadertoys\n- [ ] Proper key-value cache store instead of files\n- [ ] Support shadertoys that use textures \u0026 buffers\n- [ ] Support shadertoys that use multiple passes\n- [ ] Support shadertoys that use keyboard input\n\n## License\n\nLicensed under either of the following, at your option:\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Frepi%2Fshadertoy-browser.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Frepi%2Fshadertoy-browser?ref=badge_large)\n\n### Contribution\n\nContributions are welcome! Please note that your contributions are assumed to be dual-licensed under Apache-2.0/MIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frepi%2Fshadertoy-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frepi%2Fshadertoy-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frepi%2Fshadertoy-browser/lists"}