Rust implementation for querying Open Shading Language (OSL) compiled shader metadata.
This workspace contains two crates:
The main library for parsing and querying OSL .oso files. Provides:
- Pure Rust parser for OSO format (no C++ dependencies).
- Type-safe API where parameter types and values are unified.
- Support for all OSL types (int, float, color, point, vector, normal, matrix, arrays, closures).
- Metadata extraction.
Command-line tool for inspecting OSO files, similar to OSL's oslinfo:
# Query shader parameters
oslq shader.oso
# Query specific parameter
oslq --param Kd shader.oso
# JSON output
oslq --json shader.osoAdd to your Cargo.toml:
[dependencies]
oslquery-petite = "0.1"Basic usage:
use oslquery_petite::{OslQuery, TypedParameter};
let query = OslQuery::open("shader.oso")?;
println!("Shader: {} ({})", query.shader_name(), query.shader_type());
for param in query.params() {
match param.typed_param() {
TypedParameter::Color { default: Some([r, g, b]), .. } => {
println!(" {} : color = [{}, {}, {}]", param.name, r, g, b);
}
TypedParameter::Float { default: Some(val) } => {
println!(" {} : float = {}", param.name, val);
}
_ => {}
}
}For the command-line tool:
cargo install --path oslqFor library usage, see the Quick Start above.
BSD 3-Clause (same as OpenShadingLanguage)