diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/cuda/lss-test.slang | 34 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/ray-tracing/rt-lss-intrinsics-chit.slang | 45 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang | 17 |
3 files changed, 96 insertions, 0 deletions
diff --git a/tests/cuda/lss-test.slang b/tests/cuda/lss-test.slang new file mode 100644 index 000000000..4b0512cb1 --- /dev/null +++ b/tests/cuda/lss-test.slang @@ -0,0 +1,34 @@ +//TEST:SIMPLE(filecheck=CHECK): -target cuda +//CHECK_: __global__ void __closesthit__closestHitShaderLss +//CHECK: optixGetSpherePositionAndRadius +//CHECK: optixObjectPositionsAndRadii +//CHECK: optixIsSphereHit +//CHECK: optixIsLSSHit + +struct RayPayload +{ + float4 color; + float2x4 lssData; + bool isSphere; + bool isLss; +}; + +[shader("closesthit")] +void closestHitShaderLss(inout RayPayload payload, in BuiltInTriangleIntersectionAttributes attr) +{ + // Test TraceRay API functions + payload.color = GetSpherePositionAndRadius(); + payload.lssData = GetLssPositionsAndRadii(); + payload.isSphere = IsSphereHit(); + payload.isLss = IsLssHit(); + +// TODO: This will be enabled once issue #6647 is completed. +#if 0 + // Test HitObject API functions + HitObject hitObj; + float4 sphereData = hitObj.GetSphereObjectPositionAndRadius(); + float2x4 lssData = hitObj.GetLssObjectPositionsAndRadii(); + bool isSphereHit = hitObj.IsSphereHit(); + bool isLssHit = hitObj.IsLssHit(); +#endif +}
\ No newline at end of file diff --git a/tests/hlsl-intrinsic/ray-tracing/rt-lss-intrinsics-chit.slang b/tests/hlsl-intrinsic/ray-tracing/rt-lss-intrinsics-chit.slang new file mode 100644 index 000000000..b4d181c7d --- /dev/null +++ b/tests/hlsl-intrinsic/ray-tracing/rt-lss-intrinsics-chit.slang @@ -0,0 +1,45 @@ +//TEST:SIMPLE(filecheck=HLSL): -target hlsl +//TEST:SIMPLE(filecheck=SPIRV): -target spirv-asm +//HLSL: NvRtSphereObjectPositionAndRadius +//HLSL: NvRtLssObjectPositionsAndRadii +//HLSL: NvRtIsSphereHit +//HLSL: NvRtIsLssHit + +//SPIRV: HitSpherePositionNV +//SPIRV: HitSphereRadiusNV +//SPIRV: HitLSSPositionsNV +//SPIRV: HitIsSphereNV +//SPIRV: HitIsLSSNV + +// Hit object variants +//SPIRV: OpHitObjectGetSpherePositionNV +//SPIRV: OpHitObjectGetSphereRadiusNV +//SPIRV: OpHitObjectGetLSSPositionsNV +//SPIRV: OpHitObjectGetLSSRadiiNV +//SPIRV: OpHitObjectIsSphereHitNV +//SPIRV: OpHitObjectIsLSSHitNV + +struct RayPayload +{ + float4 color; + float2x4 lssData; + bool isSphere; + bool isLss; +}; + +[shader("closesthit")] +void closestHitShaderLss(inout RayPayload payload, in BuiltInTriangleIntersectionAttributes attr) +{ + // Test TraceRay API functions + payload.color = GetSpherePositionAndRadius(); + payload.lssData = GetLssPositionsAndRadii(); + payload.isSphere = IsSphereHit(); + payload.isLss = IsLssHit(); + + // Test HitObject API functions + HitObject hitObj; + float4 sphereData = hitObj.GetSpherePositionAndRadius(); + float2x4 lssData = hitObj.GetLssPositionsAndRadii(); + bool isSphereHit = hitObj.IsSphereHit(); + bool isLssHit = hitObj.IsLssHit(); +}
\ No newline at end of file diff --git a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang index 71c113934..be38915b1 100644 --- a/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang +++ b/tests/hlsl-intrinsic/shader-execution-reordering/hit-object-trace-ray.slang @@ -32,6 +32,10 @@ uint calcValue(HitObject hit) uint geometryIndex = hit.GetGeometryIndex(); uint primitiveIndex = hit.GetPrimitiveIndex(); int clusterID = hit.GetClusterID(); + float4 posRadius = hit.GetSpherePositionAndRadius(); + float2x4 positionsRadii = hit.GetLssPositionsAndRadii(); + uint isSphereHit = uint(hit.IsSphereHit()); + uint isLssHit = uint(hit.IsLssHit()); SomeValues objSomeValues = hit.GetAttributes<SomeValues>(); @@ -41,6 +45,19 @@ uint calcValue(HitObject hit) r += primitiveIndex; r += objSomeValues.a; r += clusterID; + + r += int(posRadius.x); + r += int(posRadius.y); + r += int(posRadius.z); + r += int(posRadius.w); + + r += int(positionsRadii[0].x); + r += int(positionsRadii[0].y); + r += int(positionsRadii[0].z); + r += int(positionsRadii[0].w); + + r += isSphereHit; + r += isLssHit; } return r; |
