yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
e9dcdd884
master
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}