# WASL _The WebAssembly Shader Language_ [![Crates.io](https://img.shields.io/crates/v/wasl.svg)](https://crates.io/crates/wasl) [![Docs.rs](https://docs.rs/wasl/badge.svg)](https://docs.rs/wasl) [![Build Status](https://github.com/katharostech/bevy_retrograde/actions/workflows/rust.yaml/badge.svg)](https://github.com/katharostech/bevy_retrograde/actions/workflows/rust.yaml) [![lines of code](https://tokei.rs/b1/github/katharostech/wasl?category=code)](https://github.com/katharostech/wasl) [![Katharos License](https://img.shields.io/badge/License-Katharos-blue)](https://github.com/katharostech/katharos-license) WASL is a library and standard for a way to translate WebAssembly modules to shaders that can be executed on the GPU. WASL works by having a standardized WASM interface for interacting with the GPU as a shader, and by parsing WASM modules into the [Naga][__link0] intermediate representation ( [`naga::Module`][__link1] ) so that it can be translated to shader code for the target platform: SPIR-V, GLSL, HLSL, Metal, etc. WASL also comes with tools to make it easier to compile WASL modules using the Rust language, allowing you to write Rust code that targets the GPU. [__link0]: https://github.com/gfx-rs/naga [__link1]: https://docs.rs/naga/0.5.0/naga/?search=naga::Module