3 个版本
0.1.2 | 2021 年 2 月 17 日 |
---|---|
0.1.1 | 2021 年 2 月 10 日 |
0.1.0 | 2021 年 2 月 10 日 |
659 在 编程语言 中
18KB
338 行
Vulkan 着色器编译器实用程序
此实用程序使用 shaderc 将自定义 GLSL 着色器格式(见下文)转换为 SPIR-V 格式。
为 我们的游戏引擎 制作。
构建
先决条件
然后使用 cargo build
构建。
执行
使用 ve_shader -h
获取参数概述。
例如,ve_shader ./shaders/*.glsl -o ./output
编译 /shaders
文件夹中的所有着色器,并将结果输出到 /output
文件夹。
自定义格式
我们的自定义格式将顶点、片段和几何着色器组合在一个文件中。
指令
//#
表示一行开头的自定义指令。虽然大多数指令是可选的,但有些是必需的。其中一个必需的指令是 TYPE
,该指令将指示此实用程序将以下代码编译为指定类型的着色器,直到出现下一个类型指令为止。
指令 | 必需? | 参数 | 描述 | 示例 |
---|---|---|---|---|
NAME | 否 | 字符串 | 着色器的美观格式名称 | |
AUTHOR | 否 | 字符串 | 着色器的作者 | |
DESCRIPTION | 否 | 字符串 | 描述着色器的作用 | //# DESCRIPTION 应用 phong 反射模型。 |
VERSION | 否 | 版本 | 将 #version <version> 添加到每个着色器中 |
//# VERSION 450 |
TYPE | 是 | VERTEX,FRAGMENT,GEOMETRY | 设置后续着色器的类型 | //# TYPE VERTEX |
示例
//# NAME Vertex Color
//# AUTHOR Michael Lohr
//# DESCRIPTION Renders the vertex colors
//# VERSION 450
//# TYPE VERTEX
layout (location = 0) in vec3 i_position;
layout (location = 1) in mat4 i_model_matrix;
layout (location = 5) in vec4 i_color;
layout (location = 0) out vec4 o_color;
void main() {
gl_PointSize = 1.0;
gl_Position = i_model_matrix * vec4(i_position, 1.0);
o_color = i_color;
}
//# TYPE FRAGMENT
layout (location = 0) in vec4 i_color;
layout (location = 0) out vec4 o_color;
void main(){
o_color = i_color;
}
依赖关系
~43MB
~789K SLoC