#shader #glsl-shader #graphics #gamedev

nightly app ve_shader

此实用程序使用 shader-c 将自定义 GLSL 着色器格式编译为 SPIR-V 格式

3 个版本

0.1.2 2021 年 2 月 17 日
0.1.1 2021 年 2 月 10 日
0.1.0 2021 年 2 月 10 日

659编程语言

MIT 许可证

18KB
338

Vulkan 着色器编译器实用程序

MIT License Continuous integration Crates.io

此实用程序使用 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