layout (set = 0, binding = 0) uniform sampler s;
layout (set = 0, binding = 1) uniform texture2D sampledImage;
// ...
vec4 rgba = texture(sampler2D(sampledImage, s), vec2(0.5, 0.5));
layout (set = 1, binding = 0) uniform sampler2D combinedImageSampler;
// ...
vec4 rgba = texture(combinedImageSampler, vec2(0.5, 0.5));
layout (set = 2, binding = 0, rgba8) uniform image2D storageImage;
// ...
vec4 rgba = imageLoad(storageImage, ivec2(2, 2));
imageStore(storageImage, ivec2(2, 2), vec4(0.299, 0.587, 0.114, 1.0));
layout (set = 3, binding = 0) uniform samplerBuffer uniformTexelBuffer;
// ...
int index = 0;
vec4 formattedValue = texelFetch(uniformTexelBuffer, index);
layout (set = 4, binding = 0, rgba32f) uniform imageBuffer storageTexelBuffer;
// ...
int index = 0;
vec4 formattedValue = imageLoad(storageTexelBuffer, index);
imageStore(storageTexelBuffer, index, vec4(1.0, 2.0, 3.0, 4.0));
layout (set = 5, binding = 0) uniform UniformBuffer
{
mat4 projection;
mat4 view;
mat4 model;
} uniformBuffer;
// ...
mat4 M = uniformBuffer.projection * uniformBuffer.view * uniformBuffer.model;
struct Particle {
vec4 position;
vec4 velocity;
};
layout (set = 5, binding = 1) buffer StorageBuffer {
Particle particles[];
} storageBuffer;
// ...
int i = 0;
vec3 p = storageBuffer.particles[i].position.xyz;
layout (input_attachment_index = 0, set = 6, binding = 0) uniform subpassInput depthImage;
// ...
float depthAtCurrentFramebufferLocation = subpassLoad(depthImage).r;
#extension GL_EXT_ray_tracing : require
#extension GL_EXT_ray_query : require
layout(set = 7, binding = 0) uniform accelerationStructureEXT topLevelAS;
// ...
vec3 orig = vec3(0.0, 0.0, 0.0);
vec3 dir = vec3(0.0, 0.0, 1.0);
float tMin = 0.01;
float tMax = 1000.0;
traceRayEXT(topLevelAS, gl_RayFlagsNoneEXT, 0xFF, 0, 0, 0, origin, tMin, dir, tMax, 0);
// ...
rayQueryEXT rayQuery;
rayQueryInitializeEXT(rayQuery, topLevelAS, gl_RayFlagsNoneEXT, 0xFF, origin, tMin, dir, tMax);