yum-mirror/glslang

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

Guang-035Add groundwork for GLSL_EXT_structured_descriptor_heap in glslang799ea066

main
1.2 KiB44 linesraw
1#version 460
2#extension GL_EXT_descriptor_heap : require
3#extension GL_EXT_samplerless_texture_functions : require
4#extension GL_EXT_structured_descriptor_heap : require
5#extension GL_EXT_scalar_block_layout : require
6
7layout(local_size_x = 1) in;
8
9layout(constant_id = 0) const uint materialsOffset = 1024;
10
11layout(push_constant) uniform MyPushData {
12    vec4 cameraPos;
13    uint buffersOffset;
14    uint materialIndex;
15} pushData;
16
17layout(buffer_type, scalar) buffer DataBuffer {
18    uint data0;
19    uint data1;
20};
21
22layout(heap_offset = 2048) resourceheap BufferHeap0 {
23    uint count;
24    DataBuffer dataBuffer;
25} bufferHeap0;
26
27layout(heap_offset = materialsOffset) resourceheap BufferHeap1 {
28    uint count;
29    DataBuffer dataBuffer;
30    layout(rgba32f) image2D images[2];
31    texture2D textures[2];
32} bufferHeap1;
33
34layout(heap_offset = pushData.buffersOffset) samplerheap SamplerHeap {
35    sampler linearSamplers[2];
36} samplerHeap;
37
38void main()
39{
40    bufferHeap0.dataBuffer.data0 = bufferHeap1.dataBuffer.data1;
41    vec4 texel = imageLoad(bufferHeap1.images[1], ivec2(0, 0));
42    vec4 sampled = textureLod(sampler2D(bufferHeap1.textures[1], samplerHeap.linearSamplers[1]), vec2(0.5), 0.0);
43    imageStore(bufferHeap1.images[1], ivec2(0, 0), texel + sampled);
44}