summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/hlsl.meta.slang18
-rw-r--r--source/slang/slang-emit-glsl.cpp1
2 files changed, 18 insertions, 1 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 774c6a247..d8f9845b8 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -15592,7 +15592,23 @@ struct RayDesc
__builtin
__magic_type(RaytracingAccelerationStructureType)
__intrinsic_type($(kIROp_RaytracingAccelerationStructureType))
-struct RaytracingAccelerationStructure {};
+struct RaytracingAccelerationStructure
+{
+ [require(glsl_spirv, raytracing)]
+ [__readNone]
+ __init(uint64_t address)
+ {
+ __target_switch
+ {
+ case spirv:
+ return spirv_asm {
+ result: $$RaytracingAccelerationStructure = OpConvertUToAccelerationStructureKHR $address;
+ };
+ case glsl:
+ __intrinsic_asm "accelerationStructureEXT($0)";
+ }
+ }
+};
// 10.1.4 - Subobject Definitions
diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp
index a19c9c01f..a863e7eb1 100644
--- a/source/slang/slang-emit-glsl.cpp
+++ b/source/slang/slang-emit-glsl.cpp
@@ -3139,6 +3139,7 @@ void GLSLSourceEmitter::emitSimpleTypeImpl(IRType* type)
}
case kIROp_RayQueryType:
{
+ _requireRayQuery();
m_writer->emit("rayQueryEXT");
return;
}