#片段着色器 #wgsl #playground #文件 #渲染 #实时重新加载 #窗口

app wgsl-playground

实时重新加载的WGSL片段着色器实验平台

9个版本

0.1.8 2023年10月4日
0.1.7 2023年10月3日
0.1.6 2023年2月11日
0.1.5 2022年11月7日
0.1.1 2021年5月25日

#118 in 图形API

38 个月下载量

MIT 许可证

215KB
407

wgsl-playground

crates.io

这是一个简单的实验平台,用于使用WGSL片段着色器进行实验。通过传递一个 wgsl 文件来调用它。程序然后在提供的 wgsl 文件中查找名为 fs_main 的片段着色器,并在窗口中渲染它。这与shadertoy 的功能类似,只是使用 WGSL 而不是 GLSL,并且是在桌面上而不是在浏览器中。

wgsl-playground 还会监视文件的编辑。每次你保存文件时,它都会使用更新的着色器重新构建管道,并将其交换到重绘过程中。

在底层,它使用 wgpu 进行渲染,并使用 naga 进行验证。

请注意,WGSL 仍然是一个不断发展的规范。 此工具是为那些想要学习一些当前形式的 WSGL 的人准备的。

A screenshot showing a grid of circles.

examples 目录中包含了一些示例着色器。上面的截图显示了 uniforms.wgsl 着色器。

用法

使用 cargo 安装

cargo install wgsl-playground

要运行现有的 .wgsl 文件,在命令行中传递它

wgsl-playground myfragshader.wgsl

要创建一个新的着色器文件,传递 -c 标志和要创建的文件名。这很有用,因为它提供了访问统一变量和顶点数据的样板代码。

环境

着色器接收以下顶点输入

  • 此片段的裁剪空间 (x, y) 坐标作为 vec2<f32>,位置为 location=0
  • 该片段的设备坐标窗口相对坐标是一个 vec4<f32>,在 builtin(position) (即等于 gl_Position)。

以下也是可用的统一变量

  • 鼠标光标位置的裁剪空间(x, y)坐标是一个 vec2<f32>。只有当鼠标光标在窗口范围内时才会更新。起始值为 (0.5, 0.5)
  • 程序开始以来的秒数(分数)作为一个 f32。当着色器重新加载时,它不会重置。

依赖项

~13–45MB
~728K SLoC