summaryrefslogtreecommitdiffstats
path: root/prelude
diff options
context:
space:
mode:
authorMukund Keshava <mkeshava@nvidia.com>2025-05-27 17:46:04 +0530
committerGitHub <noreply@github.com>2025-05-27 20:16:04 +0800
commitf570e109c4039e15526af38e17f350c115327489 (patch)
tree9698566e3b2dcbce33a21c80bcc17b4824b2f168 /prelude
parent914f8c4b283bd81f2ea3ef00b184ff63245c9278 (diff)
Add LSS intrinsics (#7200)
* WiP: LSS intrinsics: initial commit * format code * Fix CI failures * Address review comment --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Diffstat (limited to 'prelude')
-rw-r--r--prelude/slang-cuda-prelude.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/prelude/slang-cuda-prelude.h b/prelude/slang-cuda-prelude.h
index d2c9fce9d..d1160cdd3 100644
--- a/prelude/slang-cuda-prelude.h
+++ b/prelude/slang-cuda-prelude.h
@@ -31,6 +31,7 @@
#ifdef SLANG_CUDA_ENABLE_OPTIX
#include <optix.h>
+#include <optix_device.h>
#endif
// Define slang offsetof implementation
@@ -3221,6 +3222,54 @@ __forceinline__ __device__ void* optixTrace(
r1);
}
+__forceinline__ __device__ float4 optixGetSpherePositionAndRadius()
+{
+ float4 data[1];
+ optixGetSphereData(data);
+ return data;
+}
+
+__forceinline__ __device__ float4 optixHitObjectGetSpherePositionAndRadius()
+{
+ float4 data[1];
+ optixHitObjectGetSphereData(data);
+ return data;
+}
+
+__forceinline__ __device__ Matrix<float, 2, 4> optixGetSpherePositionAndRadius()
+{
+ float4 data[2];
+ optixGetLinearCurveVertexData(data);
+ return Matrix<float, 2, 4>(data[0], data[1]);
+}
+
+__forceinline__ __device__ float2x4 optixHitObjectGetSpherePositionAndRadius()
+{
+ float4 data[2];
+ optixHitObjectGetLinearCurveVertexData(data);
+ return Matrix<float, 2, 4>(data[0], data[1]);
+}
+
+__forceinline__ __device__ bool optixIsSphereHit()
+{
+ return optixGetPrimitiveType() == OPTIX_PRIMITIVE_TYPE_SPHERE;
+}
+
+__forceinline__ __device__ bool optixHitObjectIsSphereHit()
+{
+ return optixGetPrimitiveType(optixHitObjectGetHitKind()) == OPTIX_PRIMITIVE_TYPE_SPHERE;
+}
+
+__forceinline__ __device__ bool optixIsLSSHit()
+{
+ return optixGetPrimitiveType() == OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR;
+}
+
+__forceinline__ __device__ bool optixHitObjectIsLSSHit()
+{
+ return optixGetPrimitiveType(optixHitObjectGetHitKind()) == OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR;
+}
+
template<typename T>
__forceinline__ __device__ void* optixTraverse(
OptixTraversableHandle AccelerationStructure,