Skip to content

k2d222/wgsl-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WGSL Tools

A work in progress!

This project implements the necessary tools to build complex shaders, like what naga_oil does for bevy, but in a framework-agnostic way. At wgsl-tooling-wg, we aim at standardizing a few language extensions to facilitate the work of engine developers and shader wizards.

Current and planned extensions: imports, conditional compilation, generics, modules.

Usage

This project can be used as a rust library or as a standalone CLI.

Using the CLI

  • Install cargo install --git https://github.com/k2d222/wgsl-tools
  • Compile a WESL shader wgsl-tools compile <entrypoint.wgsl> (TODO: use the wesl extension)
  • Run eval() wgsl-tools eval <entrypoint.wgsl> <expression to eval>

Using the Crate

documentation coming soon

Status

update: 2024-10

The crate wgsl-parse contains a WGSL-compliant syntax tree and parser, with optional syntax extensions from the WESL specification.

The crate wesl contains an implementation of the WESL specification, i.e. a compiler that takes WESL files and generates valid WGSL.

This crate contains a CLI to run the compiler and the parser.

See also:

Goals

  • Correct, mirror concepts present in the wgsl spec.
  • Flexible, allow extending the wgsl syntax with well-defined extensions (see wgsl-tooling-wg).
  • User-friendly, by sticking to the spec as much as possible, by providing clear and well-documented interfaces.

Non-goals

  • Performant, we care about correctness, less so about time and memory constraints. The interface must be as user-friendly as possible. These tools target offline compilation first.

About

Various tools to parse, validate, and manipulate wgsl shader files.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published