2个版本
0.1.1 | 2024年4月7日 |
---|---|
0.1.0 | 2024年4月1日 |
60 在 数据格式
每月56次 下载
16KB
244 行
Tran(shader
)
使用过程宏将着色器从一种语言转换为另一种语言。
功能
功能被分成不同的模块,允许您从/到任何支持的语言进行转换。默认功能已包含所有这些。
支持的前端语言
from-glsl
- 转换OpenGL着色器语言(GLSL)着色器。from-spv
- 转换Vulkan的通用可移植中间表示(SPIR-V)着色器。from-wgsl
- 转换Web GPU着色器语言(WGSL)着色器。
支持的端后语言
to-glsl
- 将着色器转换为OpenGL着色器语言(GLSL)着色器。to-msl
- 将着色器转换为Metal着色器语言(MSL)着色器。to-spv
- 将着色器转换为Vulkan的通用可移植中间表示(SPIR-V)着色器。to-wgsl
- 将着色器转换为Web GPU着色器语言(WGSL)着色器。to-hlsl
- 将着色器转换为高级着色器语言(HLSL)着色器。
为什么?
一些多后端图形API(如bgfx)需要每个后端都有着色器(OpenGL的GLSL;D3D的HLSL;Metal的MSL;Vulkan的SPIR-V;WebGPU的WGSL)。您可以选择在运行时尝试使用naga
转换着色器(这将影响性能),或者使用build.rs
脚本为每个着色器进行转换。
这个工具在编译时简单地转换着色器,无需任何麻烦。
如何?
Transhader使用naga和Rust的过程宏系统来生成最优的着色器代码。使用Rusty-Object-Notation配置着色器转换器选项。
缺点
- 着色器语言支持有限。
- 编译时间更长,因为着色器是使用过程宏转换的。
- 减少转译器选项的自定义(尽管我在努力改进)。
许可协议
Transhader采用MIT和Apache 2.0双重许可协议。
依赖项
~6–14MB
~175K SLoC