yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Mukund KeshavaAdd new capdef for lss intrinsics (#7427)e9dcdd884

master
1.6 KiB53 linesraw
1//TEST:SIMPLE(filecheck=CHECK): -target cuda
2//CHECK_: __global__ void __closesthit__closestHitShaderLss
3//CHECK: optixGetSpherePositionAndRadius
4//CHECK: optixGetLssPositionsAndRadii
5//CHECK: optixIsSphereHit
6//CHECK: optixIsLSSHit
7
8//CHECK: optixHitObjectGetSpherePositionAndRadius
9//CHECK: optixHitObjectGetLssPositionsAndRadii
10//CHECK: optixHitObjectIsSphereHit
11//CHECK: optixHitObjectIsLSSHit
12
13//CHECK_: __global__ void __raygen__raygenShaderLSS()
14//CHECK: optixHitObjectGetSpherePositionAndRadius
15//CHECK: optixHitObjectGetLssPositionsAndRadii
16//CHECK: optixHitObjectIsSphereHit
17//CHECK: optixHitObjectIsLSSHit
18
19struct RayPayload
20{
21    float4 color;
22    float2x4 lssData;
23    bool isSphere;
24    bool isLss;
25};
26
27[shader("closesthit")]
28void closestHitShaderLss(inout RayPayload payload, in BuiltInTriangleIntersectionAttributes attr)
29{
30    // Test TraceRay API functions
31    payload.color = GetSpherePositionAndRadius();
32    payload.lssData = GetLssPositionsAndRadii();
33    payload.isSphere = IsSphereHit();
34    payload.isLss = IsLssHit();
35    
36    // Test HitObject API functions
37    HitObject hitObj;
38    float4 sphereData = hitObj.GetSpherePositionAndRadius();
39    float2x4 lssData = hitObj.GetLssPositionsAndRadii();
40    bool isSphereHit = hitObj.IsSphereHit();
41    bool isLssHit = hitObj.IsLssHit();
42}
43
44[shader("raygen")]
45void raygenShaderLSS(inout RayPayload payload, in BuiltInTriangleIntersectionAttributes attr)
46{
47    // Test HitObject API functions
48    HitObject hitObj;
49    float4 sphereData = hitObj.GetSpherePositionAndRadius();
50    float2x4 lssData = hitObj.GetLssPositionsAndRadii();
51    bool isSphereHit = hitObj.IsSphereHit();
52    bool isLssHit = hitObj.IsLssHit();
53}