MCPcopy Index your code
hub / github.com/Ralith/vk-shader-macros

github.com/Ralith/vk-shader-macros @v0.2.11

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.11 ↗ · + Follow
15 symbols 22 edges 4 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

vk-shader-macros

Documentation Crates.io License: MIT License: Apache 2.0

A procedural macro for compiling GLSL into SPIR-V constants.

Unlike the standard include_bytes macro, paths are currently resolved relative to crate root. This is due to a temporary limitation in the procedural macro API.

Examples

const VERT: &[u32] = include_glsl!("shaders/example.vert");
const FRAG: &[u32] = include_glsl!("shaders/example.glsl", kind: frag);
const RGEN: &[u32] = include_glsl!("shaders/example.rgen", target: vulkan1_2); // vulkan1_2 is required to build with GL_EXT_ray_tracing

Debug info is generated by default; pass strip to the macro to omit it, or build the crate with the strip feature enabled.

Why [u32]?

SPIR-V is a stream of 32-bit words, not bytes, and this is reflected in APIs that consume it. In particular, passing a [u8] of SPIR-V that is not 4-byte-aligned to Vulkan is undefined behavior. Storing SPIR-V in its native format guarantees that this will never occur, without requiring copying or unsafe code.

Dependencies

This crate currently depends on the foreign shaderc library. By default, it will attempt to use an installed shaderc library. However if it does not exist, it will fall back to building from source, requiring git, cmake, python 3, and a supported C++ compiler to be available in the build environment. When using a pre-compiled shaderc, care must be taken to use a version that is binary-compatible with the one checked out by the shaderc crate. You can force shaderc to be built from source by enabling the build-from-source feature on vk-shader-macros.

Core symbols most depended-on inside this repo

expand
called by 2
src/build.rs
build
called by 2
src/build.rs
extension_kind
called by 2
src/build.rs
optimization_level
called by 1
src/build.rs
target
called by 1
src/build.rs
default
called by 0
src/build.rs
parse
called by 0
src/build.rs
parse
called by 0
src/lib.rs

Shape

Class 5
Function 5
Method 5

Languages

Rust100%

Modules by API surface

src/build.rs10 symbols
src/lib.rs5 symbols

For agents

$ claude mcp add vk-shader-macros \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page