summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-12-30 23:39:41 -0800
committerGitHub <noreply@github.com>2024-12-30 23:39:41 -0800
commit3f43d6c14320c71a170b697bf13a4f130a71d297 (patch)
treef2e97eff84b666095ed73e95333b674d99036934 /source
parentcc1b96d91d8875bf727079d58fbf78af1135f505 (diff)
Add `RaytracingAccelerationStructure::__init(uint64_t)`. (#5967)
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;
}