diff options
| author | Yong He <yonghe@outlook.com> | 2023-08-22 11:07:53 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-22 11:07:53 -0700 |
| commit | e2e10fb6b065ff78f40ff19e01a7fdd234b1b560 (patch) | |
| tree | cc19030af26852e8124df554bef2e57261474b24 /tests | |
| parent | 9d7c9b98702df8b6f77ed5eac833111e6925b08f (diff) | |
Add test case for RayQuery parameter. (#3140)
* Add test case for RayQuery parameter.
* Update expeccted failure.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bugs/ray-query-in-generic.slang | 77 | ||||
| -rw-r--r-- | tests/bugs/ray-query-in-generic.slang.expected.txt | 2 | ||||
| -rw-r--r-- | tests/expected-failure.txt | 1 |
3 files changed, 80 insertions, 0 deletions
diff --git a/tests/bugs/ray-query-in-generic.slang b/tests/bugs/ray-query-in-generic.slang new file mode 100644 index 000000000..fdbafe8fc --- /dev/null +++ b/tests/bugs/ray-query-in-generic.slang @@ -0,0 +1,77 @@ + +//TEST(compute):COMPARE_COMPUTE:-d3d12 -output-using-type -use-dxil -profile sm_6_5 -render-feature ray-query +//TEST(compute):COMPARE_COMPUTE:-vk -output-using-type -render-feature ray-query + +//TEST_INPUT: set scene = AccelerationStructure +uniform RaytracingAccelerationStructure scene; + +struct Ray +{ + float3 origin; + float tMin; + float3 dir; + float tMax; + + /** + * Initializes a ray. + */ + __init(float3 origin, float3 dir, float tMin = 0.f, float tMax = 10000.0) + { + this.origin = origin; + this.dir = dir; + this.tMin = tMin; + this.tMax = tMax; + } + + /** + * Convert to DXR RayDesc. + */ + RayDesc toRayDesc() { return { origin, tMin, dir, tMax }; } + + /** + * Evaluate position on the ray. + * @param[in] t Ray parameter. + * @return Returns evaluated position. + */ + float3 eval(float t) { return origin + t * dir; } +}; + +RaytracingAccelerationStructure sceneBVH; + +// TODO: remove force inline here will result in an error. +[ForceInline] +bool traceSceneVisibilityRayImpl<let Flags : int>(const bool useAlphaTest, inout RayQuery<Flags> q, const Ray ray, uint rayFlags, uint instanceInclusionMask) +{ + var rayDesc = ray.toRayDesc(); + q.TraceRayInline( + scene, + rayFlags, + 0xff, + rayDesc); + q.Proceed(); + if (q.CommittedStatus() == COMMITTED_TRIANGLE_HIT) + { + q.CommittedRayT(); + return true; + } + return false; +} + +bool traceSceneVisibilityRay<let UseAlphaTest : int>(const Ray ray, uint rayFlags, uint instanceInclusionMask) +{ + RayQuery rayQuery; + return traceSceneVisibilityRayImpl(false, rayQuery, ray, rayFlags, instanceInclusionMask); +} + +//TEST_INPUT:set outputBuffer = out ubuffer(data=[0], stride=4) +RWStructuredBuffer<float> outputBuffer; + +[shader("compute")] +[numthreads(1, 1, 1)] +void computeMain( + uint3 threadIdx: SV_DispatchThreadID) +{ + Ray ray = Ray(float3(0.1, 0.1, 0.0), float3(0, 0, 1), 0.1); + if (traceSceneVisibilityRay<0>(ray, 0, 0xffff)) + outputBuffer[threadIdx.x] = 1.0; +} diff --git a/tests/bugs/ray-query-in-generic.slang.expected.txt b/tests/bugs/ray-query-in-generic.slang.expected.txt new file mode 100644 index 000000000..d488b86d5 --- /dev/null +++ b/tests/bugs/ray-query-in-generic.slang.expected.txt @@ -0,0 +1,2 @@ +type: float +1.000000 diff --git a/tests/expected-failure.txt b/tests/expected-failure.txt index 98cf36724..effee0e2b 100644 --- a/tests/expected-failure.txt +++ b/tests/expected-failure.txt @@ -60,6 +60,7 @@ tests/bugs/matrix-reshape.slang.1 (vk) tests/bugs/nested-switch.slang.1 (vk) tests/bugs/parameter-block-load.slang (vk) tests/bugs/parens-cast-issue.slang.1 (vk) +tests/bugs/ray-query-in-generic.slang.1 (vk) tests/bugs/string-inline.slang.4 (vk) tests/bugs/vec-compare.slang.2 (vk) tests/bugs/vec-init.slang.2 (vk) |
