Add support for GLSL_EXT_ray_tracing
and SPV_KHR_ray_tracing
This commit is contained in:
parent
f368dcbb7d
commit
db32b243ff
69 changed files with 6912 additions and 4972 deletions
|
|
@ -4322,29 +4322,39 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"\n");
|
||||
}
|
||||
|
||||
// Builtins for GL_NV_ray_tracing
|
||||
// Builtins for GL_NV_ray_tracing/GL_EXT_ray_tracing
|
||||
if (profile != EEsProfile && version >= 460) {
|
||||
stageBuiltins[EShLangRayGenNV].append(
|
||||
stageBuiltins[EShLangRayGen].append(
|
||||
"void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
||||
"void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
||||
"void executeCallableNV(uint, int);"
|
||||
"void executeCallableEXT(uint, int);"
|
||||
"\n");
|
||||
stageBuiltins[EShLangIntersectNV].append(
|
||||
stageBuiltins[EShLangIntersect].append(
|
||||
"bool reportIntersectionNV(float, uint);"
|
||||
"bool reportIntersectionEXT(float, uint);"
|
||||
"\n");
|
||||
stageBuiltins[EShLangAnyHitNV].append(
|
||||
stageBuiltins[EShLangAnyHit].append(
|
||||
"void ignoreIntersectionNV();"
|
||||
"void ignoreIntersectionEXT();"
|
||||
"void terminateRayNV();"
|
||||
"void terminateRayEXT();"
|
||||
"\n");
|
||||
stageBuiltins[EShLangClosestHitNV].append(
|
||||
stageBuiltins[EShLangClosestHit].append(
|
||||
"void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
||||
"void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
||||
"void executeCallableNV(uint, int);"
|
||||
"void executeCallableEXT(uint, int);"
|
||||
"\n");
|
||||
stageBuiltins[EShLangMissNV].append(
|
||||
stageBuiltins[EShLangMiss].append(
|
||||
"void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
||||
"void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
||||
"void executeCallableNV(uint, int);"
|
||||
"void executeCallableEXT(uint, int);"
|
||||
"\n");
|
||||
stageBuiltins[EShLangCallableNV].append(
|
||||
stageBuiltins[EShLangCallable].append(
|
||||
"void executeCallableNV(uint, int);"
|
||||
"void executeCallableEXT(uint, int);"
|
||||
"\n");
|
||||
}
|
||||
|
||||
|
|
@ -5393,100 +5403,156 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
stageBuiltins[EShLangMeshNV] .append(computeSubgroupDecls);
|
||||
stageBuiltins[EShLangTaskNV] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangTaskNV] .append(computeSubgroupDecls);
|
||||
stageBuiltins[EShLangRayGenNV] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangIntersectNV] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangAnyHitNV] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangClosestHitNV] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangMissNV] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangCallableNV] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangRayGen] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangIntersect] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangAnyHit] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangClosestHit] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangMiss] .append(subgroupDecls);
|
||||
stageBuiltins[EShLangCallable] .append(subgroupDecls);
|
||||
}
|
||||
|
||||
// GL_NV_ray_tracing
|
||||
// GL_NV_ray_tracing/GL_EXT_ray_tracing
|
||||
if (profile != EEsProfile && version >= 460) {
|
||||
|
||||
const char *constRayFlags =
|
||||
"const uint gl_RayFlagsNoneNV = 0U;"
|
||||
"const uint gl_RayFlagsNoneEXT = 0U;"
|
||||
"const uint gl_RayFlagsOpaqueNV = 1U;"
|
||||
"const uint gl_RayFlagsOpaqueEXT = 1U;"
|
||||
"const uint gl_RayFlagsNoOpaqueNV = 2U;"
|
||||
"const uint gl_RayFlagsNoOpaqueEXT = 2U;"
|
||||
"const uint gl_RayFlagsTerminateOnFirstHitNV = 4U;"
|
||||
"const uint gl_RayFlagsTerminateOnFirstHitEXT = 4U;"
|
||||
"const uint gl_RayFlagsSkipClosestHitShaderNV = 8U;"
|
||||
"const uint gl_RayFlagsSkipClosestHitShaderEXT = 8U;"
|
||||
"const uint gl_RayFlagsCullBackFacingTrianglesNV = 16U;"
|
||||
"const uint gl_RayFlagsCullBackFacingTrianglesEXT = 16U;"
|
||||
"const uint gl_RayFlagsCullFrontFacingTrianglesNV = 32U;"
|
||||
"const uint gl_RayFlagsCullFrontFacingTrianglesEXT = 32U;"
|
||||
"const uint gl_RayFlagsCullOpaqueNV = 64U;"
|
||||
"const uint gl_RayFlagsCullOpaqueEXT = 64U;"
|
||||
"const uint gl_RayFlagsCullNoOpaqueNV = 128U;"
|
||||
"const uint gl_RayFlagsCullNoOpaqueEXT = 128U;"
|
||||
"const uint gl_HitKindFrontFacingTriangleEXT = 254U;"
|
||||
"const uint gl_HitKindBackFacingTriangleEXT = 255U;"
|
||||
"\n";
|
||||
const char *rayGenDecls =
|
||||
"in uvec3 gl_LaunchIDNV;"
|
||||
"in uvec3 gl_LaunchIDEXT;"
|
||||
"in uvec3 gl_LaunchSizeNV;"
|
||||
"in uvec3 gl_LaunchSizeEXT;"
|
||||
"\n";
|
||||
const char *intersectDecls =
|
||||
"in uvec3 gl_LaunchIDNV;"
|
||||
"in uvec3 gl_LaunchIDEXT;"
|
||||
"in uvec3 gl_LaunchSizeNV;"
|
||||
"in uvec3 gl_LaunchSizeEXT;"
|
||||
"in int gl_PrimitiveID;"
|
||||
"in int gl_InstanceID;"
|
||||
"in int gl_InstanceCustomIndexNV;"
|
||||
"in int gl_InstanceCustomIndexEXT;"
|
||||
"in int gl_GeometryIndexEXT;"
|
||||
"in vec3 gl_WorldRayOriginNV;"
|
||||
"in vec3 gl_WorldRayOriginEXT;"
|
||||
"in vec3 gl_WorldRayDirectionNV;"
|
||||
"in vec3 gl_WorldRayDirectionEXT;"
|
||||
"in vec3 gl_ObjectRayOriginNV;"
|
||||
"in vec3 gl_ObjectRayOriginEXT;"
|
||||
"in vec3 gl_ObjectRayDirectionNV;"
|
||||
"in vec3 gl_ObjectRayDirectionEXT;"
|
||||
"in float gl_RayTminNV;"
|
||||
"in float gl_RayTminEXT;"
|
||||
"in float gl_RayTmaxNV;"
|
||||
"in float gl_RayTmaxEXT;"
|
||||
"in mat4x3 gl_ObjectToWorldNV;"
|
||||
"in mat4x3 gl_ObjectToWorldEXT;"
|
||||
"in mat3x4 gl_ObjectToWorld3x4EXT;"
|
||||
"in mat4x3 gl_WorldToObjectNV;"
|
||||
"in mat4x3 gl_WorldToObjectEXT;"
|
||||
"in mat3x4 gl_WorldToObject3x4EXT;"
|
||||
"in uint gl_IncomingRayFlagsNV;"
|
||||
"in uint gl_IncomingRayFlagsEXT;"
|
||||
"\n";
|
||||
const char *hitDecls =
|
||||
"in uvec3 gl_LaunchIDNV;"
|
||||
"in uvec3 gl_LaunchIDEXT;"
|
||||
"in uvec3 gl_LaunchSizeNV;"
|
||||
"in uvec3 gl_LaunchSizeEXT;"
|
||||
"in int gl_PrimitiveID;"
|
||||
"in int gl_InstanceID;"
|
||||
"in int gl_InstanceCustomIndexNV;"
|
||||
"in int gl_InstanceCustomIndexEXT;"
|
||||
"in int gl_GeometryIndexEXT;"
|
||||
"in vec3 gl_WorldRayOriginNV;"
|
||||
"in vec3 gl_WorldRayOriginEXT;"
|
||||
"in vec3 gl_WorldRayDirectionNV;"
|
||||
"in vec3 gl_WorldRayDirectionEXT;"
|
||||
"in vec3 gl_ObjectRayOriginNV;"
|
||||
"in vec3 gl_ObjectRayOriginEXT;"
|
||||
"in vec3 gl_ObjectRayDirectionNV;"
|
||||
"in vec3 gl_ObjectRayDirectionEXT;"
|
||||
"in float gl_RayTminNV;"
|
||||
"in float gl_RayTminEXT;"
|
||||
"in float gl_RayTmaxNV;"
|
||||
"in float gl_RayTmaxEXT;"
|
||||
"in float gl_HitTNV;"
|
||||
"in float gl_HitTEXT;"
|
||||
"in uint gl_HitKindNV;"
|
||||
"in uint gl_HitKindEXT;"
|
||||
"in mat4x3 gl_ObjectToWorldNV;"
|
||||
"in mat4x3 gl_ObjectToWorldEXT;"
|
||||
"in mat3x4 gl_ObjectToWorld3x4EXT;"
|
||||
"in mat4x3 gl_WorldToObjectNV;"
|
||||
"in mat4x3 gl_WorldToObjectEXT;"
|
||||
"in mat3x4 gl_WorldToObject3x4EXT;"
|
||||
"in uint gl_IncomingRayFlagsNV;"
|
||||
"in uint gl_IncomingRayFlagsEXT;"
|
||||
"\n";
|
||||
const char *missDecls =
|
||||
"in uvec3 gl_LaunchIDNV;"
|
||||
"in uvec3 gl_LaunchIDEXT;"
|
||||
"in uvec3 gl_LaunchSizeNV;"
|
||||
"in uvec3 gl_LaunchSizeEXT;"
|
||||
"in vec3 gl_WorldRayOriginNV;"
|
||||
"in vec3 gl_WorldRayOriginEXT;"
|
||||
"in vec3 gl_WorldRayDirectionNV;"
|
||||
"in vec3 gl_WorldRayDirectionEXT;"
|
||||
"in vec3 gl_ObjectRayOriginNV;"
|
||||
"in vec3 gl_ObjectRayDirectionNV;"
|
||||
"in float gl_RayTminNV;"
|
||||
"in float gl_RayTminEXT;"
|
||||
"in float gl_RayTmaxNV;"
|
||||
"in float gl_RayTmaxEXT;"
|
||||
"in uint gl_IncomingRayFlagsNV;"
|
||||
"in uint gl_IncomingRayFlagsEXT;"
|
||||
"\n";
|
||||
|
||||
const char *callableDecls =
|
||||
"in uvec3 gl_LaunchIDNV;"
|
||||
"in uvec3 gl_LaunchIDEXT;"
|
||||
"in uvec3 gl_LaunchSizeNV;"
|
||||
"in uvec3 gl_LaunchSizeEXT;"
|
||||
"\n";
|
||||
|
||||
stageBuiltins[EShLangRayGenNV].append(rayGenDecls);
|
||||
stageBuiltins[EShLangRayGenNV].append(constRayFlags);
|
||||
|
||||
stageBuiltins[EShLangIntersectNV].append(intersectDecls);
|
||||
stageBuiltins[EShLangIntersectNV].append(constRayFlags);
|
||||
|
||||
stageBuiltins[EShLangAnyHitNV].append(hitDecls);
|
||||
stageBuiltins[EShLangAnyHitNV].append(constRayFlags);
|
||||
stageBuiltins[EShLangRayGen].append(rayGenDecls);
|
||||
stageBuiltins[EShLangRayGen].append(constRayFlags);
|
||||
|
||||
stageBuiltins[EShLangClosestHitNV].append(hitDecls);
|
||||
stageBuiltins[EShLangClosestHitNV].append(constRayFlags);
|
||||
stageBuiltins[EShLangIntersect].append(intersectDecls);
|
||||
stageBuiltins[EShLangIntersect].append(constRayFlags);
|
||||
|
||||
stageBuiltins[EShLangMissNV].append(missDecls);
|
||||
stageBuiltins[EShLangMissNV].append(constRayFlags);
|
||||
stageBuiltins[EShLangAnyHit].append(hitDecls);
|
||||
stageBuiltins[EShLangAnyHit].append(constRayFlags);
|
||||
|
||||
stageBuiltins[EShLangCallableNV].append(callableDecls);
|
||||
stageBuiltins[EShLangCallableNV].append(constRayFlags);
|
||||
stageBuiltins[EShLangClosestHit].append(hitDecls);
|
||||
stageBuiltins[EShLangClosestHit].append(constRayFlags);
|
||||
|
||||
stageBuiltins[EShLangMiss].append(missDecls);
|
||||
stageBuiltins[EShLangMiss].append(constRayFlags);
|
||||
|
||||
stageBuiltins[EShLangCallable].append(callableDecls);
|
||||
stageBuiltins[EShLangCallable].append(constRayFlags);
|
||||
|
||||
}
|
||||
if ((profile != EEsProfile && version >= 140)) {
|
||||
|
|
@ -5494,11 +5560,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"in highp int gl_DeviceIndex;" // GL_EXT_device_group
|
||||
"\n";
|
||||
|
||||
stageBuiltins[EShLangRayGenNV].append(deviceIndex);
|
||||
stageBuiltins[EShLangIntersectNV].append(deviceIndex);
|
||||
stageBuiltins[EShLangAnyHitNV].append(deviceIndex);
|
||||
stageBuiltins[EShLangClosestHitNV].append(deviceIndex);
|
||||
stageBuiltins[EShLangMissNV].append(deviceIndex);
|
||||
stageBuiltins[EShLangRayGen].append(deviceIndex);
|
||||
stageBuiltins[EShLangIntersect].append(deviceIndex);
|
||||
stageBuiltins[EShLangAnyHit].append(deviceIndex);
|
||||
stageBuiltins[EShLangClosestHit].append(deviceIndex);
|
||||
stageBuiltins[EShLangMiss].append(deviceIndex);
|
||||
}
|
||||
|
||||
if (version >= 300 /* both ES and non-ES */) {
|
||||
|
|
@ -5514,6 +5580,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
commonBuiltins.append("const int gl_ScopeSubgroup = 3;\n");
|
||||
commonBuiltins.append("const int gl_ScopeInvocation = 4;\n");
|
||||
commonBuiltins.append("const int gl_ScopeQueueFamily = 5;\n");
|
||||
commonBuiltins.append("const int gl_ScopeShaderCallEXT = 6;\n");
|
||||
|
||||
commonBuiltins.append("const int gl_SemanticsRelaxed = 0x0;\n");
|
||||
commonBuiltins.append("const int gl_SemanticsAcquire = 0x2;\n");
|
||||
|
|
@ -7995,49 +8062,97 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||
break;
|
||||
|
||||
#ifndef GLSLANG_WEB
|
||||
case EShLangRayGenNV:
|
||||
case EShLangIntersectNV:
|
||||
case EShLangAnyHitNV:
|
||||
case EShLangClosestHitNV:
|
||||
case EShLangMissNV:
|
||||
case EShLangCallableNV:
|
||||
case EShLangRayGen:
|
||||
case EShLangIntersect:
|
||||
case EShLangAnyHit:
|
||||
case EShLangClosestHit:
|
||||
case EShLangMiss:
|
||||
case EShLangCallable:
|
||||
if (profile != EEsProfile && version >= 460) {
|
||||
const char *rtexts[] = { E_GL_NV_ray_tracing, E_GL_EXT_ray_tracing };
|
||||
symbolTable.setVariableExtensions("gl_LaunchIDNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_LaunchIDEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_LaunchSizeNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_PrimitiveID", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_InstanceID", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_LaunchSizeEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_PrimitiveID", 2, rtexts);
|
||||
symbolTable.setVariableExtensions("gl_InstanceID", 2, rtexts);
|
||||
symbolTable.setVariableExtensions("gl_InstanceCustomIndexNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_InstanceCustomIndexEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_GeometryIndexEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_WorldRayOriginNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_WorldRayOriginEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_WorldRayDirectionNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_WorldRayDirectionEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_ObjectRayOriginNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_ObjectRayOriginEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_ObjectRayDirectionNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_ObjectRayDirectionEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_RayTminNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_RayTminEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_RayTmaxNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_RayTmaxEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_HitTNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_HitTEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_HitKindNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_HitKindEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_ObjectToWorldNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_ObjectToWorldEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_ObjectToWorld3x4EXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_WorldToObjectNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_WorldToObjectEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_WorldToObject3x4EXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_IncomingRayFlagsNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setVariableExtensions("gl_IncomingRayFlagsEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
|
||||
symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
|
||||
|
||||
BuiltInVariable("gl_LaunchIDNV", EbvLaunchIdNV, symbolTable);
|
||||
BuiltInVariable("gl_LaunchSizeNV", EbvLaunchSizeNV, symbolTable);
|
||||
BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable);
|
||||
BuiltInVariable("gl_InstanceID", EbvInstanceId, symbolTable);
|
||||
BuiltInVariable("gl_InstanceCustomIndexNV", EbvInstanceCustomIndexNV,symbolTable);
|
||||
BuiltInVariable("gl_WorldRayOriginNV", EbvWorldRayOriginNV, symbolTable);
|
||||
BuiltInVariable("gl_WorldRayDirectionNV", EbvWorldRayDirectionNV, symbolTable);
|
||||
BuiltInVariable("gl_ObjectRayOriginNV", EbvObjectRayOriginNV, symbolTable);
|
||||
BuiltInVariable("gl_ObjectRayDirectionNV", EbvObjectRayDirectionNV, symbolTable);
|
||||
BuiltInVariable("gl_RayTminNV", EbvRayTminNV, symbolTable);
|
||||
BuiltInVariable("gl_RayTmaxNV", EbvRayTmaxNV, symbolTable);
|
||||
BuiltInVariable("gl_HitTNV", EbvHitTNV, symbolTable);
|
||||
BuiltInVariable("gl_HitKindNV", EbvHitKindNV, symbolTable);
|
||||
BuiltInVariable("gl_ObjectToWorldNV", EbvObjectToWorldNV, symbolTable);
|
||||
BuiltInVariable("gl_WorldToObjectNV", EbvWorldToObjectNV, symbolTable);
|
||||
BuiltInVariable("gl_IncomingRayFlagsNV", EbvIncomingRayFlagsNV, symbolTable);
|
||||
BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
|
||||
|
||||
symbolTable.setFunctionExtensions("traceNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setFunctionExtensions("traceRayEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setFunctionExtensions("reportIntersectionNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setFunctionExtensions("reportIntersectionEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setFunctionExtensions("ignoreIntersectionNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setFunctionExtensions("ignoreIntersectionEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setFunctionExtensions("terminateRayNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setFunctionExtensions("terminateRayEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
symbolTable.setFunctionExtensions("executeCallableNV", 1, &E_GL_NV_ray_tracing);
|
||||
symbolTable.setFunctionExtensions("executeCallableEXT", 1, &E_GL_EXT_ray_tracing);
|
||||
|
||||
|
||||
BuiltInVariable("gl_LaunchIDNV", EbvLaunchId, symbolTable);
|
||||
BuiltInVariable("gl_LaunchIDEXT", EbvLaunchId, symbolTable);
|
||||
BuiltInVariable("gl_LaunchSizeNV", EbvLaunchSize, symbolTable);
|
||||
BuiltInVariable("gl_LaunchSizeEXT", EbvLaunchSize, symbolTable);
|
||||
BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable);
|
||||
BuiltInVariable("gl_InstanceID", EbvInstanceId, symbolTable);
|
||||
BuiltInVariable("gl_InstanceCustomIndexNV", EbvInstanceCustomIndex,symbolTable);
|
||||
BuiltInVariable("gl_InstanceCustomIndexEXT", EbvInstanceCustomIndex,symbolTable);
|
||||
BuiltInVariable("gl_GeometryIndexEXT", EbvGeometryIndex, symbolTable);
|
||||
BuiltInVariable("gl_WorldRayOriginNV", EbvWorldRayOrigin, symbolTable);
|
||||
BuiltInVariable("gl_WorldRayOriginEXT", EbvWorldRayOrigin, symbolTable);
|
||||
BuiltInVariable("gl_WorldRayDirectionNV", EbvWorldRayDirection, symbolTable);
|
||||
BuiltInVariable("gl_WorldRayDirectionEXT", EbvWorldRayDirection, symbolTable);
|
||||
BuiltInVariable("gl_ObjectRayOriginNV", EbvObjectRayOrigin, symbolTable);
|
||||
BuiltInVariable("gl_ObjectRayOriginEXT", EbvObjectRayOrigin, symbolTable);
|
||||
BuiltInVariable("gl_ObjectRayDirectionNV", EbvObjectRayDirection, symbolTable);
|
||||
BuiltInVariable("gl_ObjectRayDirectionEXT", EbvObjectRayDirection, symbolTable);
|
||||
BuiltInVariable("gl_RayTminNV", EbvRayTmin, symbolTable);
|
||||
BuiltInVariable("gl_RayTminEXT", EbvRayTmin, symbolTable);
|
||||
BuiltInVariable("gl_RayTmaxNV", EbvRayTmax, symbolTable);
|
||||
BuiltInVariable("gl_RayTmaxEXT", EbvRayTmax, symbolTable);
|
||||
BuiltInVariable("gl_HitTNV", EbvHitT, symbolTable);
|
||||
BuiltInVariable("gl_HitTEXT", EbvHitT, symbolTable);
|
||||
BuiltInVariable("gl_HitKindNV", EbvHitKind, symbolTable);
|
||||
BuiltInVariable("gl_HitKindEXT", EbvHitKind, symbolTable);
|
||||
BuiltInVariable("gl_ObjectToWorldNV", EbvObjectToWorld, symbolTable);
|
||||
BuiltInVariable("gl_ObjectToWorldEXT", EbvObjectToWorld, symbolTable);
|
||||
BuiltInVariable("gl_ObjectToWorld3x4EXT", EbvObjectToWorld3x4, symbolTable);
|
||||
BuiltInVariable("gl_WorldToObjectNV", EbvWorldToObject, symbolTable);
|
||||
BuiltInVariable("gl_WorldToObjectEXT", EbvWorldToObject, symbolTable);
|
||||
BuiltInVariable("gl_WorldToObject3x4EXT", EbvWorldToObject3x4, symbolTable);
|
||||
BuiltInVariable("gl_IncomingRayFlagsNV", EbvIncomingRayFlags, symbolTable);
|
||||
BuiltInVariable("gl_IncomingRayFlagsEXT", EbvIncomingRayFlags, symbolTable);
|
||||
BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
|
||||
|
||||
// GL_ARB_shader_ballot
|
||||
symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot);
|
||||
|
|
@ -8776,27 +8891,33 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||
symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAdd);
|
||||
break;
|
||||
|
||||
case EShLangRayGenNV:
|
||||
case EShLangClosestHitNV:
|
||||
case EShLangMissNV:
|
||||
case EShLangRayGen:
|
||||
case EShLangClosestHit:
|
||||
case EShLangMiss:
|
||||
if (profile != EEsProfile && version >= 460) {
|
||||
symbolTable.relateToOperator("traceNV", EOpTraceNV);
|
||||
symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
|
||||
symbolTable.relateToOperator("traceNV", EOpTrace);
|
||||
symbolTable.relateToOperator("traceRayEXT", EOpTrace);
|
||||
symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallable);
|
||||
symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallable);
|
||||
}
|
||||
break;
|
||||
case EShLangIntersectNV:
|
||||
case EShLangIntersect:
|
||||
if (profile != EEsProfile && version >= 460)
|
||||
symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersectionNV);
|
||||
symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersection);
|
||||
symbolTable.relateToOperator("reportIntersectionEXT", EOpReportIntersection);
|
||||
break;
|
||||
case EShLangAnyHitNV:
|
||||
case EShLangAnyHit:
|
||||
if (profile != EEsProfile && version >= 460) {
|
||||
symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersectionNV);
|
||||
symbolTable.relateToOperator("terminateRayNV", EOpTerminateRayNV);
|
||||
symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersection);
|
||||
symbolTable.relateToOperator("ignoreIntersectionEXT", EOpIgnoreIntersection);
|
||||
symbolTable.relateToOperator("terminateRayNV", EOpTerminateRay);
|
||||
symbolTable.relateToOperator("terminateRayEXT", EOpTerminateRay);
|
||||
}
|
||||
break;
|
||||
case EShLangCallableNV:
|
||||
case EShLangCallable:
|
||||
if (profile != EEsProfile && version >= 460) {
|
||||
symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
|
||||
symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallable);
|
||||
symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallable);
|
||||
}
|
||||
break;
|
||||
case EShLangMeshNV:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue