Crates.io | shadertoy-browser |
lib.rs | shadertoy-browser |
version | 0.6.1 |
source | src |
created_at | 2018-01-04 02:13:39.61685 |
updated_at | 2018-06-02 23:45:17.53146 |
description | Small Shadertoy browser & viewer for Mac built in Rust |
homepage | |
repository | https://github.com/repi/shadertoy-browser |
max_upload_size | |
id | 45432 |
size | 75,615 |
Small Shadertoy browser & viewer for Mac built in Rust.
This application uses the Shadertoy REST API to search for Shadertoys and then downloads them locally and converts them using shaderc-rs
and spirv-cross
to be natively rendered on Mac using metal-rs
.
Warning: Some of the Shadertoy shaders are extremely demanding of your GPU and cause system to be unresponsive.
The API queries are done through the shadertoy
crate, which is also part of this repository in src/shadertoy
First make sure you have Rust installed installed. Then building & running is easy:
$ git clone https://github.com/repi/shadertoy-browser
$ cd shadertoy-browser
$ cargo build --release
# this will download and view all shadertoys with "car" in the name
$ cargo run --release -- -s car
Keys:
LEFT
and RIGHT
- switch between shadertoys.SPACE
- toggle grid view modeENTER
- open shadertoy.com for current shaderIf the screen is red that indicates the shader wasn't able to be built.
Optional command-line settings:
USAGE:
shadertoy-browser [FLAGS] [OPTIONS]
FLAGS:
--help Prints help information
-h, --headless Don't render, only download shadertoys
-V, --version Prints version information
-v, --verbose More verbose log output, including list of all shadertoys found
OPTIONS:
-k, --apikey <key> Set shadertoy API key to use. Create your key on https://www.shadertoy.com/myapps
[default: BtHtWD]
-f, --filter <filter>... Inclusion filters [values: VR, SoundOutput, SoundInput, Webcam, MultiPass,
MusicStream]
-y, --gridheight <grid_height> Grid height [default: 4]
-x, --gridwidth <grid_width> Grid width [default: 4]
-l, --limit <limit> The maximum number of shaders to download. -1 = no limit [default: -1]
-o, --order <order> Sort order [default: Popular] [values: Name, Love, Popular, Newest, Hot]
-h, --resheight <res_height> Window resolution height [default: 768]
-w, --reswidth <res_width> Window resolution width [default: 1024]
-s, --search <string> Search string to filter which shadertoys to get
-t, --threads <threads> How many threads to use for downloading & processing shaders. 0 = disables
threading, -1 = use all logical processors [default: -1]
To use the Rust shadertoy API directly in another app or library, check out the shadertoy
crate, docs and README.
This 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:
Licensed under either of the following, at your option:
Contributions are welcome! Please note that your contributions are assumed to be dual-licensed under Apache-2.0/MIT.