yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
e4611e2e3
master
1//TEST:SIMPLE(filecheck=CHECK): -target hlsl -stage raygeneration -entry main 2 3RaytracingAccelerationStructure as; 4 5RWStructuredBuffer<float> outputBuffer1; 6 7// addComplexity ensures the code does not optimize any `someInData1` 8void addComplexity1(inout float someInData1) 9{ 10 someInData1 = outputBuffer1[1]; 11} 12void addComplexity2(float dataIn) 13{ 14 outputBuffer1[2] = dataIn; 15} 16 17void main() 18{ 19 RayDesc ray; 20 ray.Origin = float3(0); 21 ray.TMin = 1e-6; 22 ray.Direction = float3(0,0,1); 23 ray.TMax = 100.0f; 24 25 // CHECK: RayPayload_t{{_[0-9]}} rayPayload{{_[0-9]}}; 26 float someInData1 = 5.0f; 27 addComplexity1(someInData1); 28 29 // CHECK: rayPayload{{_[0-9]}}.data{{_[0-9]}} = {{.*}} 30 // CHECK: TraceRay( 31 // CHECK: rayPayload{{.*}}.data{{.*}}; 32 TraceRay(as, 33 1, 34 0xff, 35 0, 36 0, 37 2, 38 ray, 39 someInData1); 40 outputBuffer1[0] = outputBuffer1[0]+someInData1; 41 42 // CHECK: rayPayload{{_[0-9]}}.data{{_[0-9]}} = rayPayload{{.*}}.data{{.*}}; 43 // CHECK: TraceMotionRay( 44 // CHECK: rayPayload{{.*}}.data{{.*}}; 45 TraceMotionRay(as, 46 1, 47 0xff, 48 0, 49 0, 50 2, 51 ray, 52 0.0f, 53 someInData1); 54 outputBuffer1[0] = outputBuffer1[0]+someInData1; 55 56 // CHECK: rayPayload{{_[0-9]}}.data{{_[0-9]}} = {{.*}} 57 // CHECK: NvTraceRayHitObject( 58 // CHECK: rayPayload{{.*}}.data{{.*}}; 59 HitObject::TraceRay(as, 60 1, 61 0xff, 62 0, 63 0, 64 2, 65 ray, 66 someInData1); 67 outputBuffer1[0] = outputBuffer1[0]+someInData1; 68 69 // CHECK: rayPayload{{_[0-9]}}.data{{_[0-9]}} = {{.*}} 70 // CHECK: TraceMotionRay( 71 // CHECK: rayPayload{{.*}}.data{{.*}}; 72 HitObject::TraceMotionRay(as, 73 1, 74 0xff, 75 0, 76 0, 77 2, 78 ray, 79 0.0f, 80 someInData1); 81 outputBuffer1[0] = outputBuffer1[0]+someInData1; 82 83 // CHECK: rayPayload{{_[0-9]}}.data{{_[0-9]}} = {{.*}} 84 // CHECK: NvInvokeHitObject( 85 // CHECK: rayPayload{{.*}}.data{{.*}}; 86 HitObject hitObject_HitOrMiss; 87 HitObject::Invoke( 88 as, 89 hitObject_HitOrMiss, 90 someInData1); 91 outputBuffer1[0] = outputBuffer1[0]+someInData1; 92 93 addComplexity2(someInData1); 94}