9 个版本 (4 个重大更新)
0.4.0 | 2024年8月2日 |
---|---|
0.3.3 | 2024年7月29日 |
0.3.2 | 2024年2月9日 |
0.2.1 | 2024年2月8日 |
0.0.1 | 2015年5月9日 |
#352 in 编程语言
每月下载量 3,417
在 13 个 crate 中使用 (通过 glslang)
7.5MB
146K SLoC
glslang-rs
glslang 的安全 Rust 绑定
用法
[dependencies]
glslang = "0.3"
示例
编译着色器
use rspirv::binary::Disassemble;
use glslang::*;
#[test]
pub fn test_compile() {
// Acquire the compiler instance
let compiler = Compiler::acquire().unwrap();
let source = ShaderSource::try_from(String::from(
r#"
#version 450
layout(location = 0) out vec4 color;
layout(binding = 1) uniform sampler2D tex;
void main() {
color = texture(tex, vec2(0.0));
}
"#,
))
.expect("source");
let limits = ResourceLimits::default();
let input = ShaderInput::new(
&source,
&limits,
ShaderStage::Fragment,
&CompilerOptions::default(),
None,
);
let shader = Shader::new(&compiler, input).expect("shader init");
let mut program = Program::new(&compiler);
program.add_shader(shader);
program.link().expect("link error");
let code = program.compile(ShaderStage::Fragment).expect("shader");
// Use rspirv to disassemble
let mut loader = rspirv::dr::Loader::new();
rspirv::binary::parse_words(&code, &mut loader).unwrap();
let module = loader.module();
println!("{}", module.disassemble())
}