Constants
Constants are declared with const. They transpile directly to WGSL const declarations.
Module-Level
#![allow(unused)]
fn main() {
#[wgsl]
pub mod config {
use wgsl_rs::std::*;
pub const MAX_LIGHTS: u32 = 64;
pub const TILE_SIZE: u32 = 16;
pub const AMBIENT: Vec3f = vec3f(0.1, 0.1, 0.12);
}
}
const MAX_LIGHTS: u32 = 64;
const TILE_SIZE: u32 = 16;
const AMBIENT: vec3<f32> = vec3(0.1, 0.1, 0.12);
Function-Level
const declared inside a function becomes a function-scoped WGSL const:
#![allow(unused)]
fn main() {
pub fn circle_area(r: f32) -> f32 {
const PI: f32 = 3.14159265;
PI * r * r
}
}
Uses
Constants are commonly used for:
- Array sizes (
const N: u32 = 256; ... var<workgroup> buf: array<f32, N>;) - Configuration knobs (light counts, tile sizes)
- Fixed colors or directions
Note: WGSL const values are compile-time constants. For values that may vary per dispatch, use a uniform binding (see Binding Macros).