9个版本
0.1.8 | 2022年7月3日 |
---|---|
0.1.7 | 2022年7月3日 |
#47 在 渲染引擎
每月29次下载
10KB
147 行
动态着色器汇编器
使用Rust编写的从TOML到GLSL的着色器生成工具
示例
配置
version = 330
profile = "core"
[layout]
a_pos = "vec3"
a_uv = "vec2"
[uniform]
transform = "mat4"
texture_0 = "sampler2D"
[fragment]
output = { result = "vec4" }
source = '''
result = texture(texture_0, uv);
'''
[vertex]
output = { uv = "vec2" }
source = '''
gl_Position = transform * vec4(a_pos, 1.0);
uv = a_uv;
'''
编译器
let toml = fs::read_to_string("example/textured.toml").unwrap();
let (vertex,fragment, config) = compile_toml(toml.as_str()).unwrap();
println!("Vertex {}",vertex);
println!("Fragment {}",fragment);
输出
顶点
#version 330 core
layout (location = 0) in vec3 a_pos;
layout (location = 1) in vec2 a_uv;
uniform mat4 transform;
uniform sampler2D texture_0;
out vec2 uv;
void main() {
gl_Position = transform * vec4(a_pos, 1.0);
uv = a_uv;
}
片段
#version 330 core
uniform mat4 transform;
uniform sampler2D texture_0;
in vec2 uv;
out vec4 result;
void main() {
result = texture(texture_0, uv);
}
您可以为每个着色器指定 函数
、常量
和 输出
。但每个程序 Uniforms
、版本
、配置文件
和 布局
。
顶点 输出
也与片段 输入
同步。
有关所有示例,请参阅 examples/textured.toml
许可
该项目受以下任一许可协议的许可:
- Apache License,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您提交给 toml-rs 供包含在内的任何贡献,根据 Apache-2.0 许可证的定义,应双许可如上所述,不附加任何额外的条款或条件。
依赖项
~1.4–2.2MB
~43K SLoC