yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f570e109c
master
1//TEST:SIMPLE(filecheck=HLSL): -target hlsl 2//TEST:SIMPLE(filecheck=SPIRV): -target spirv-asm 3//HLSL: NvRtSphereObjectPositionAndRadius 4//HLSL: NvRtLssObjectPositionsAndRadii 5//HLSL: NvRtIsSphereHit 6//HLSL: NvRtIsLssHit 7 8//SPIRV: HitSpherePositionNV 9//SPIRV: HitSphereRadiusNV 10//SPIRV: HitLSSPositionsNV 11//SPIRV: HitIsSphereNV 12//SPIRV: HitIsLSSNV 13 14// Hit object variants 15//SPIRV: OpHitObjectGetSpherePositionNV 16//SPIRV: OpHitObjectGetSphereRadiusNV 17//SPIRV: OpHitObjectGetLSSPositionsNV 18//SPIRV: OpHitObjectGetLSSRadiiNV 19//SPIRV: OpHitObjectIsSphereHitNV 20//SPIRV: OpHitObjectIsLSSHitNV 21 22struct RayPayload 23{ 24 float4 color; 25 float2x4 lssData; 26 bool isSphere; 27 bool isLss; 28}; 29 30[shader("closesthit")] 31void closestHitShaderLss(inout RayPayload payload, in BuiltInTriangleIntersectionAttributes attr) 32{ 33 // Test TraceRay API functions 34 payload.color = GetSpherePositionAndRadius(); 35 payload.lssData = GetLssPositionsAndRadii(); 36 payload.isSphere = IsSphereHit(); 37 payload.isLss = IsLssHit(); 38 39 // Test HitObject API functions 40 HitObject hitObj; 41 float4 sphereData = hitObj.GetSpherePositionAndRadius(); 42 float2x4 lssData = hitObj.GetLssPositionsAndRadii(); 43 bool isSphereHit = hitObj.IsSphereHit(); 44 bool isLssHit = hitObj.IsLssHit(); 45}