All Projects → repi → Shadertoy Browser

repi / Shadertoy Browser

Licence: other
Shadertoy browser & viewer for Mac built in Rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Shadertoy Browser

YALCT
Yet Another Live Coding Tool - Powered by Veldrid and elbow grease
Stars: ✭ 25 (-85.8%)
Mutual labels:  metal, shaders, shadertoy
Shader Doodle
A friendly web-component for writing and rendering shaders.
Stars: ✭ 356 (+102.27%)
Mutual labels:  shadertoy, shaders
Shader Toy
Shadertoy-like live preview for GLSL shaders in Visual Studio Code
Stars: ✭ 349 (+98.3%)
Mutual labels:  shadertoy, shaders
Shadertoy Rs
A desktop client for Shadertoy written in Rust
Stars: ✭ 41 (-76.7%)
Mutual labels:  shadertoy, shaders
30-days-of-shade
30 days of shaders in GLSL using GLSLCanvas
Stars: ✭ 134 (-23.86%)
Mutual labels:  shaders, shadertoy
ThickRedLine
Thick Red Line - drawing thick lines for SceneKit with metal shaders
Stars: ✭ 40 (-77.27%)
Mutual labels:  metal, shaders
Shaderman
Convert ShaderToy to Unity HLSL/CG
Stars: ✭ 734 (+317.05%)
Mutual labels:  shadertoy, shaders
ShaderToy-Chrome-Plugin
Web extension for shadertoy.com
Stars: ✭ 159 (-9.66%)
Mutual labels:  shaders, shadertoy
Riftray
Step into the worlds of Shadertoy with an Oculus Rift.
Stars: ✭ 68 (-61.36%)
Mutual labels:  shadertoy, shaders
Shadertoy React
6kB "Shadertoy" like react component letting you easily render your fragment shaders in your React web projects, without having to worry about implementing the WebGL part.
Stars: ✭ 74 (-57.95%)
Mutual labels:  shadertoy, shaders
Noodlesplate
Offline Shader Editor with many cool features
Stars: ✭ 79 (-55.11%)
Mutual labels:  shadertoy, shaders
Flocking
An example showing how to use SwiftUI, Satin, Forge and Youi to simulate birds flocking via a compute particle system (n-body).
Stars: ✭ 63 (-64.2%)
Mutual labels:  metal, shaders
MetalPlayer
A video player using Metal.
Stars: ✭ 68 (-61.36%)
Mutual labels:  metal, shaders
metal camera
iOS metal camera with GPU shaders.
Stars: ✭ 68 (-61.36%)
Mutual labels:  metal, shaders
Vertexshaderart
The repo for vertexshaderart.com
Stars: ✭ 107 (-39.2%)
Mutual labels:  shadertoy, shaders
Raymarching Workshop
An Introduction to Raymarching
Stars: ✭ 657 (+273.3%)
Mutual labels:  shadertoy, shaders
HelloMetal
A Suite of Metal Examples written in Swift 4.2. Highlights: Model I/O - SceneKit - OpenEXR.
Stars: ✭ 36 (-79.55%)
Mutual labels:  metal, shaders
RavEngine
A fast, easy to use C++20 3D game library for modern computers
Stars: ✭ 122 (-30.68%)
Mutual labels:  metal, shaders
Raw Vulkan
🔥 Experiments building Vulkan applications, libraries, and abstractions.
Stars: ✭ 42 (-76.14%)
Mutual labels:  shadertoy, shaders
Videngine
3D graphics for iOS using Metal and Swift
Stars: ✭ 86 (-51.14%)
Mutual labels:  shaders, metal

Rusty Shadertoy Browser

Crate Build Status Build Status MIT/Apache FOSSA Status

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

Render Output

Building

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

Usage

Keys:

  • LEFT and RIGHT - switch between shadertoys.
  • SPACE - toggle grid view mode
  • ENTER - open shadertoy.com for current shader

If 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.

Todo

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:

  • [ ] Rendering on Windows using DX12 and DXC
  • [ ] Rendering backend using SPIRV
  • [ ] Be able to click to select a shadertoy in grid view
  • [ ] Basic IMGUI for interactive searching & filtering
  • [ ] Async future based version of the Shadertoy client REST API
  • [ ] Async background download and building of shadertoys
  • [ ] Proper key-value cache store instead of files
  • [ ] Support shadertoys that use textures & buffers
  • [ ] Support shadertoys that use multiple passes
  • [ ] Support shadertoys that use keyboard input

License

Licensed under either of the following, at your option:

FOSSA Status

Contribution

Contributions are welcome! Please note that your contributions are assumed to be dual-licensed under Apache-2.0/MIT.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].