2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2018年4月21日 |
---|---|
0.1.0 | 2018年4月7日 |
在#glsl中的第79位
180KB
4K SLoC
rasen-dsl
rasen_dsl
包提供了一组工具函数,可以将着色器编写为完全有效的Rust代码
extern crate rasen;
extern crate rasen_dsl;
use rasen_dsl::prelude::*;
fn main() {
let shader = Module::new();
let normal: Value<Vec3> = normalize(shader.input(0, "a_normal"));
let light = vec3(0.3, -0.5, 0.2);
let color = vec4(0.25, 0.625, 1.0, 1.0);
let res = clamp(dot(normal, light), 0.1f32, 1.0f32) * color;
shader.output(0, "o_color", res);
let bytecode = shader.build(ShaderType::Fragment).unwrap();
// bytecode is now a Vec<u8> you can pass to Vulkan to create the shader module
}
此包比Rasen编译器本身还要实验性,但它已经提供了编译器暴露的所有功能。
最终,DSL包的目标(除了作为图构建器的静态检查等价物外)是提供一个API来测试CPU上着色器的执行,以及该环境提供的所有调试工具。该库目前提供了所有转换原语,将您的标量/向量/矩阵转换为Value< _ >类型以测试您的程序,然而大多数GLSL操作尚未实现。
依赖项
~10MB
~218K SLoC