#glsl-shader #toml #glsl #graphics

dsa-lib

使用Rust编写的从TOML到GLSL的着色器生成工具

9个版本

0.1.8 2022年7月3日
0.1.7 2022年7月3日

#47渲染引擎

每月29次下载

MIT/Apache

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

许可

该项目受以下任一许可协议的许可:

任选其一。

贡献

除非您明确声明,否则您提交给 toml-rs 供包含在内的任何贡献,根据 Apache-2.0 许可证的定义,应双许可如上所述,不附加任何额外的条款或条件。

依赖项

~1.4–2.2MB
~43K SLoC