12个版本
0.3.0 | 2024年5月13日 |
---|---|
0.2.5 | 2024年5月7日 |
0.1.5 | 2024年4月30日 |
0.1.1 | 2023年7月20日 |
0.1.0 | 2022年7月31日 |
#151 在 图形API 中
每月 21 次下载
在 rpuc 中使用
320KB
8K SLoC
RPU 是一种用于在CPU上渲染过程图形的与GLSL兼容的编程语言。
更多信息请访问 rpu-lang.org.
用法
要执行一个函数
let fib = r#"
int fib(int n) {
if (n <= 1) return n;
return fib(n - 2) + fib(n - 1);
}
export int main(int x) {
return fib(x);
}"#;
let rpu = RPU::new();
let use_64_bit = true;
if let Ok(rc) = rpu.compile_and_run(source, "main", [WasmValue::I64(10)], use_64_bit) {
assert_eq!(
rc, Ok(vec![WasmValue::I64(55)])
);
}
如果您只想编译为WAT,可以调用
let rc = compile_to_wat(source);
它返回一个包含WAT源代码的String。
要作为着色器运行WAT源代码,请使用
let mut buffer = ColorBuffer::new(800, 600);
let rc = rpu.compile_wat_and_run_as_shader(&wat, "shader", &mut buffer, use_64_bit);
颜色缓冲区将包含着色器的输出。这将在一个线程中运行着色器。要并行运行着色器,请使用
let mut buffer = Arc::new(Mutex::new(ColorBuffer::new(800, 600)));
let rc = rpu.compile_wat_and_run_as_tiled_shader(&wat, "shader", &mut buffer, (80, 80), 1, use_64_bit);
其中 (80, 80) 是瓦片大小。缓冲区被包裹在一个 Arc<Mutex<>> 中,以允许多个线程写入它。'1' 是要计算的迭代次数(如果着色器是路径追踪器)。
依赖项
~5–17MB
~240K SLoC