Skip to content

Commit 206973b

Browse files
committed
Remove HLSL support for HitObject.GetObjectRayOrigin/Direction in raygen stage
HLSL does not support ObjectRayOrigin/ObjectRayDirection intrinsics in raygen stage. These are only available in anyhit/closesthit/intersection shaders and not supported by NVAPI.
1 parent 7df5702 commit 206973b

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

source/slang/hlsl.meta.slang

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21297,11 +21297,10 @@ struct HitObject
2129721297
}
2129821298

2129921299
[ForceInline]
21300-
[require(cuda_glsl_hlsl_spirv, ser_raygen_closesthit_miss)]
21300+
[require(cuda_glsl_spirv, ser_raygen_closesthit_miss)]
2130121301
float3 GetObjectRayOrigin() {
2130221302
__target_switch
2130321303
{
21304-
case hlsl: __intrinsic_asm "ObjectRayOrigin";
2130521304
case glsl:
2130621305
__intrinsic_asm "hitObjectGetObjectRayOriginNV($0)";
2130721306
case cuda: __intrinsic_asm "optixGetObjectRayOrigin()";
@@ -21316,11 +21315,10 @@ struct HitObject
2131621315
}
2131721316

2131821317
[ForceInline]
21319-
[require(cuda_glsl_hlsl_spirv, ser_raygen_closesthit_miss)]
21318+
[require(cuda_glsl_spirv, ser_raygen_closesthit_miss)]
2132021319
float3 GetObjectRayDirection() {
2132121320
__target_switch
2132221321
{
21323-
case hlsl: __intrinsic_asm "ObjectRayDirection";
2132421322
case glsl:
2132521323
__intrinsic_asm "hitObjectGetObjectRayDirectionNV($0)";
2132621324
case cuda: __intrinsic_asm "optixGetObjectRayDirection()";

tests/hlsl-intrinsic/shader-execution-reordering/hit-object-get-object-ray.slang

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
//TEST:SIMPLE(filecheck=HLSL): -target hlsl -entry rayGenShader -stage raygeneration
21
//TEST:SIMPLE(filecheck=SPIRV): -target spirv -entry rayGenShader -stage raygeneration
32
//TEST:SIMPLE(filecheck=CUDA): -target cuda -entry rayGenShader -stage raygeneration
43

@@ -36,14 +35,13 @@ void rayGenShader()
3635
HitObject hitobj = HitObject::TraceRay(sceneBVH, RAY_FLAG_NONE, ~0, 0, 0, 0, ray, payload);
3736

3837
// Test HitObject.GetObjectRayOrigin() and GetObjectRayDirection() in raygen stage
39-
// These should compile successfully for HLSL, SPIRV, and CUDA targets
38+
// These should compile successfully for SPIRV and CUDA targets
39+
// Note: HLSL does not have these methods on HitObject (no NVAPI support)
4040

41-
// HLSL: ObjectRayOrigin
4241
// SPIRV: OpHitObjectGetObjectRayOriginNV
4342
// CUDA: optixGetObjectRayOrigin
4443
resultBuffer[0].rayOrigin = hitobj.GetObjectRayOrigin();
4544

46-
// HLSL: ObjectRayDirection
4745
// SPIRV: OpHitObjectGetObjectRayDirectionNV
4846
// CUDA: optixGetObjectRayDirection
4947
resultBuffer[0].rayDirection = hitobj.GetObjectRayDirection();

0 commit comments

Comments
 (0)