examples: add render-pass-ext exmaple

This commit is contained in:
YaoBing Xiao 2026-03-23 21:09:13 +08:00
parent fce738d78d
commit 77e2b0ad07
20 changed files with 1082 additions and 0 deletions

View file

@ -0,0 +1,24 @@
vulkan_custom_shaders_src = [
'triangle.vert',
'triangle.frag',
]
vulkan_shader_sources = []
foreach shader : vulkan_custom_shaders_src
if shader == 'triangle.vert'
name = 'custom_triangle_vert_data'
else
name = 'custom_triangle_frag_data'
endif
args = [glslang, '-V', '@INPUT@', '-o', '@OUTPUT@', '--vn', name]
if glslang_version.version_compare('>=11.0.0')
args += '--quiet'
endif
header = custom_target(
'custom-render-pass-vulkan-' + shader + '_spv',
output: shader + '.h',
input: shader,
command: args,
)
vulkan_shader_sources += [header]
endforeach

View file

@ -0,0 +1,8 @@
#version 450
layout(location = 0) in vec3 v_color;
layout(location = 0) out vec4 out_color;
void main() {
out_color = vec4(v_color, 1.0);
}

View file

@ -0,0 +1,15 @@
#version 450
// Keep push constants layout compatible with wlroots Vulkan helpers.
layout(push_constant, row_major) uniform UBO {
mat4 proj;
vec4 pos[3];
vec4 color[3];
} data;
layout(location = 0) out vec3 v_color;
void main() {
gl_Position = data.proj * vec4(data.pos[gl_VertexIndex].xy, 0.0, 1.0);
v_color = data.color[gl_VertexIndex].rgb;
}