#shadertoy #mac #metal #shaders #render

app shadertoy-browser

为Mac打造的Rust语言编写的Shadertoy浏览器和查看器

5个不稳定版本

使用旧的Rust 2015

0.6.1 2018年6月2日
0.6.0 2018年5月13日
0.5.1 2018年1月16日
0.5.0 2018年1月6日
0.4.1 2018年1月4日

#119 in 渲染

MIT/Apache

70KB
1.5K SLoC

Rusty Shadertoy 浏览器

Crate Build Status Build Status MIT/Apache

为Mac打造的Shadertoy 浏览器和查看器,使用Rust 编写。

此应用程序使用Shadertoy REST API 搜索Shadertoy,然后在本地上传它们并使用shaderc-rsspirv-cross 转换,以便在Mac上使用 metal-rs 本地渲染。

警告:某些Shadertoy着色器对GPU要求极高,可能导致系统无响应。

API查询通过shadertoy 包进行,该包也是此存储库的一部分,位于src/shadertoy

Render Output

构建

首先确保已安装Rust。然后构建和运行就很简单了

$ 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 

使用方法

键盘

  • LEFTRIGHT - 在Shadertoy之间切换。
  • SPACE - 切换网格视图模式
  • ENTER - 打开shadertoy.com查看当前着色器

如果屏幕变红,则表示着色器无法构建。

可选的命令行设置

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]

要在其他应用程序或库中直接使用Rust shadertoy API,请参阅shadertoy 包,文档README

待办事项

此存储库和应用程序是Rust的一个实验性测试范围,并不旨在支持所有或所有Shadertoy。但以下是我打算在未来实现的一些功能

  • 使用DX12和DXC在Windows上渲染
  • 使用SPIRV的渲染后端
  • 在网格视图中通过点击选择Shadertoy
  • 基本的IMGUI用于交互式搜索和筛选
  • 基于异步未来的Shadertoy客户端REST API版本
  • 异步后台下载和构建Shadertoy
  • 使用键值缓存存储而不是文件
  • 支持使用纹理和缓冲区的Shadertoy
  • 支持使用多个通路的Shadertoy
  • 支持使用键盘输入的shadertoys

许可证

以下任一许可证下均可使用,由您选择

贡献

欢迎贡献!请注意,您的贡献被视为Apache-2.0/MIT双重授权。

依赖关系

~29–42MB
~779K SLoC