[![License:0BSD](https://img.shields.io/badge/License-0BSD-brightgreen.svg)](https://opensource.org/licenses/FPL-1.0.0) [![travis.ci](https://travis-ci.org/Lokathor/proc-spirv.svg?branch=master)](https://travis-ci.org/Lokathor/proc-spirv) [![AppVeyor](https://ci.appveyor.com/api/projects/status/5n65rtd5hlo9nwt0?svg=true)](https://ci.appveyor.com/project/Lokathor/proc-spirv) [![crates.io](https://img.shields.io/crates/v/proc-spirv.svg)](https://crates.io/crates/proc-spirv) [![docs.rs](https://docs.rs/proc-spirv/badge.svg)](https://docs.rs/proc-spirv/) # proc-spirv A proc-macro crate to get your shaders compiled into SPIR-V at compile time. Currently, we use the [shaderc](https://docs.rs/shaderc) crate, but that's not considered a "stable" part of the API. Anything that turns GLSL into SPIR-V would work in the long term. If someone comes up with a solid pure-rust GLSL to SPIR-V compiler, we could easily switch to that. Probably no one will do that because people are lazy. ## When To Use This If you want to have some SPIR-V shader code in your program but you _do not_ need to have your program be compiling new shaders at runtime, you can use this crate's proc-macro instead to do all the processing at compile time only. This makes your final binary smaller, because it's not carrying around a SPIR-V compiler. It also makes your graphics stuff startup faster, because all the shaders don't need to be compiled at runtime.