tess-factor.bsky.social
Your local butch trans lesbian with a Ph.D. I’m the co-creator of the Slang language (https://shader-slang.org/). I’ve worked on programming languages, compilers, GPU/graphics code, and (most recently) building AI agent harnesses/systems.
👤 Joined on 26 September 2025
Followers
Following
Total Posts
@tess-factor.bsky.socialAnd, as a convention of ours, any loose resources in a Slang "entry point" module become those strongly-typed params at dispatch site, while param blocks declared in utility modules are supplied by a FrameGraph-like stack. This way you can "push" bulky read-only resources once and they auto-bind.
Show PostSo that's all fun for scene object draws that need to be as efficient as possible, but in many other cases, you want convenience. The Slang reflection API then enables us to codegen Rust glue for shader entry points so they don't need to rely on stringly matching for one-off dispatches/draws.
Show PostShaders don't need to worry about descriptor sets or bindings then, and the Rust side can cluster those any way it wants. For most of our scene rendering, we use the classic frequency-based grouping, but this way we can easily move bindings around by just changing the clustering on the Rust side.
Show PostInstead, in the new backend, our Slang modules use a bunch of parameter blocks which get automatic descriptor set assignment. That creates potentially dozens of descriptor sets tho, so on the Rust side, we cluster those virtual/logical parameter blocks into <= 4 larger ones, and patch the SPIR-V.
Show PostLast I checked, Molten could not consume MSL, so we take the Slang -> SPIR-V -> MolvenVK (spirv-cross -> MSL) path. It was mostly about the binding model - Slang's explicit `ParameterBlock` construct is pretty handy for that without having to pre-declare explicit numerical bindings ahead of time.
Show Post