#version 460 #extension GL_EXT_descriptor_heap : require #extension GL_EXT_structured_descriptor_heap : require #extension GL_EXT_buffer_reference : require #extension GL_EXT_buffer_reference2 : require layout(local_size_x = 1) in; layout(buffer_reference) buffer ForwardRefType; layout(buffer_reference, std430, buffer_reference_align = 16) buffer VertexBuffer { vec4 positions[]; }; layout(heap_offset = 256) resourceheap RefHeap { VertexBuffer vertexBuffer; layout(buffer_reference, std430) buffer { uint data; } inlineRef; ForwardRefType forwardRef; layout(buffer_reference, std430, buffer_reference_align = 4) buffer { uint data; } inlineRef2; } refHeap; layout(buffer_reference, std430) buffer ForwardRefType { float value; uint count; }; layout(binding = 0, std430) buffer Output { vec4 position; uint count; uint inlineData; uint inlineData2; } outputBuffer; void main() { outputBuffer.position = refHeap.vertexBuffer.positions[0]; outputBuffer.count = refHeap.forwardRef.count + uint(refHeap.forwardRef.value); outputBuffer.inlineData = refHeap.inlineRef.data; outputBuffer.inlineData2 = refHeap.inlineRef2.data; }