#version 460
#extension GL_EXT_ray_tracing : enable
hitAttributeEXT vec4 payload;                                // ERROR, hitattributeEXT unsupported in this stage 
rayPayloadInEXT vec4 payloadIn;                              // ERROR, rayPayloadIn unsupported in this stage
layout(shaderRecordEXT) uniform ublock                       // ERROR, shaderRecordEXT unsupported on uniform blocks
{
    float a;
};
layout(binding = 0, shaderRecordEXT) buffer bblock {         // ERROR, binding unsupported on shaderRecordEXT blocks
    float b;
};
layout(set = 0, shaderRecordEXT) buffer bblock2 {            // ERROR, set unsupported on shaderRecordEXT blocks
    float c;
};
layout(shaderRecordEXT) buffer bblock3 {
    float d;
};
layout(shaderRecordEXT) buffer bblock4 {                     // ERROR, cannot have more than one shaderRecordEXTX block
    float e;
};
void main()
{
    accelerationStructureEXT a = 0;
    int e0 = gl_PrimitiveID;                                // ERROR, unsupported builtin in stage
    int e1 = gl_InstanceID;                                 // ERROR, unsupported builtin in stage
    int e3 = gl_InstanceCustomIndexEXT;                      // ERROR, unsupported builtin in stage
    vec3 e4 = gl_WorldRayOriginEXT;                          // ERROR, unsupported builtin in stage
    vec3 e5 = gl_WorldRayDirectionEXT;                       // ERROR, unsupported builtin in stage
    vec3 e6 = gl_ObjectRayOriginEXT;                         // ERROR, unsupported builtin in stage
    vec3 e7 = gl_ObjectRayDirectionEXT;                      // ERROR, unsupported builtin in stage
    float e8 = gl_RayTminEXT;                                // ERROR, unsupported builtin in stage
    float e9 = gl_RayTmaxEXT;                                // ERROR, unsupported builtin in stage
    mat4x3 e10 = gl_ObjectToWorldEXT;                        // ERROR, unsupported builtin in stage
    mat4x3 e11 = gl_WorldToObjectEXT;                        // ERROR, unsupported builtin in stage
    float e12 = gl_HitTEXT;                                  // ERROR, unsupported builtin in stage
    float e13 = gl_HitKindEXT;                               // ERROR, unsupported builtin in stage
    int e14 = gl_RayFlagsSkipAABBEXT;                        // ERROR, unsupported builtin in stage
    reportIntersectionEXT(1.0, 1U);                          // ERROR, unsupported builtin in stage
    ignoreIntersectionEXT();                                 // ERROR, unsupported builtin in stage
    terminateRayEXT();                                       // ERROR, unsupported builtin in stage
    d = 1.0f;                                               // ERROR, can't modify shaderRecordEXT block
}
