yum-mirror/glslang

git clone https://git.yummers.dev/yum-mirror/glslang

jvronFix relaxed Vulkan access chain traversal for buffer referencese61c8f2e

main
1.1 KiB49 linesraw
1#version 460
2
3#extension GL_EXT_buffer_reference2 : require
4#extension GL_EXT_nonuniform_qualifier : require
5#extension GL_EXT_samplerless_texture_functions : require
6#extension GL_EXT_scalar_block_layout : require
7#extension GL_EXT_shader_explicit_arithmetic_types_int64 : require
8
9struct Material
10{
11    uint textures[4];
12};
13
14layout(buffer_reference, std430, buffer_reference_align = 16)
15buffer MaterialBuffer
16{
17    Material materials[];
18};
19
20struct GlobalUniformBufferData
21{
22    uint64_t materials;
23};
24
25layout(std430, set = 1, binding = 0) uniform GlobalUniformBufferDesc
26{
27    GlobalUniformBufferData global_uniform;
28};
29
30layout(set = 0, binding = 0) uniform texture2D global_textures_2d[];
31layout(set = 0, binding = 2) uniform sampler global_samplers[];
32
33layout(location = 0) out vec4 out_color;
34
35vec4 SampleMaterial(uint material_index, uint texture_index, vec2 uv)
36{
37    return texture(
38        sampler2D(
39            global_textures_2d[MaterialBuffer(global_uniform.materials).materials[material_index].textures[texture_index]],
40            global_samplers[0]
41        ),
42        uv
43    );
44}
45
46void main()
47{
48    out_color = SampleMaterial(0, 0, vec2(0.5));
49}