diff --git a/wgpu/Makefile b/wgpu/Makefile new file mode 100644 index 0000000000..73d1d3b15c --- /dev/null +++ b/wgpu/Makefile @@ -0,0 +1,20 @@ +# This Makefile generates SPIR-V shaders from GLSL shaders in the examples. + +shader_compiler = glslangValidator + +# All input shaders. +glsls = $(wildcard examples/*/*.vert examples/*/*.frag examples/*/*.comp) + +# All SPIR-V targets. +spirvs = $(addsuffix .spv,$(glsls)) + +.PHONY: default +default: $(spirvs) + +# Rule for making a SPIR-V target. +$(spirvs): %.spv: % + $(shader_compiler) -V $< -o $@ + +.PHONY: clean +clean: + rm -f $(spirvs) diff --git a/wgpu/README.md b/wgpu/README.md index b04b40ebf4..62c0066706 100644 --- a/wgpu/README.md +++ b/wgpu/README.md @@ -68,6 +68,13 @@ Create an `index.html` file into `target/generated` directory and add the follow Now run a web server locally inside the `target/generated` directory to see the `hello-triangle` in the browser. e.g. `python -m http.server` +### How to compile the shaders in the examples + +Currently, shaders in the examples are written in GLSL 4.50 and compiled to SPIR-V manually. +In the future [WGSL](https://gpuweb.github.io/gpuweb/wgsl.html) will be the shader language for WebGPU, but support is not implemented yet. + +For now, the shaders can be compiled to SPIR-V by running `make`, which requires you to have `glslang`s `glslangValidator` binary. + ## Friends Shout out to the following projects that work best with wgpu-rs: