yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
8b68880b
main
1#version 460 2#extension GL_EXT_descriptor_heap : require 3#extension GL_EXT_structured_descriptor_heap : require 4#extension GL_EXT_scalar_block_layout : require 5#extension GL_EXT_buffer_reference : require 6 7layout(local_size_x = 1) in; 8 9layout(buffer_type, scalar) buffer DataBuffer { 10 uvec2 vector; 11 uint values[2]; 12}; 13 14layout(buffer_reference, scalar, buffer_reference_align = 4) buffer BufferReference { 15 uint value; 16}; 17 18struct Material { 19 uint count; 20 DataBuffer dataBuffer; 21}; 22 23layout(heap_offset = 0) resourceheap BufferHeap0 { 24 uint count; 25 DataBuffer dataBuffer; 26 BufferReference reference; 27 Material materials[2]; 28} bufferHeap0; 29 30layout(heap_offset = 0) samplerheap SamplerHeap0 { 31 uint count; 32} samplerHeap0; 33 34void writeValue(out uint value) { 35 value = 1; 36} 37 38void updateValue(inout uint value) { 39 value += 1; 40} 41 42void main() { 43 uint index = (bufferHeap0.count + samplerHeap0.count) & 1u; 44 bufferHeap0.dataBuffer.values[0] = bufferHeap0.count; 45 bufferHeap0.materials[index].dataBuffer.vector.xy = uvec2(samplerHeap0.count); 46 writeValue(bufferHeap0.dataBuffer.values[index]); 47 updateValue(bufferHeap0.materials[index].dataBuffer.values[0]); 48 bufferHeap0.reference.value = bufferHeap0.materials[index].count; 49}