diff options
| author | Yong He <yonghe@outlook.com> | 2023-09-28 18:08:06 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-28 18:08:06 -0700 |
| commit | af61737e7ba107e9e92164bf39ce6ab34e05ce82 (patch) | |
| tree | 37747b26fb951548256669124adb83c0246a8f32 /tests | |
| parent | b7d318f48db2cb83a41d665f1727ae93fc555124 (diff) | |
[Direct SPIRV]: ray tracing pipeline intrinsics. (#3244)
* Use a dedicated inst opcode to retrieve ray payload locations.
* [Direct SPIRV]: ray tracing pipeline intrinsics.
* Fix.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/vkray/closesthit.slang | 25 | ||||
| -rw-r--r-- | tests/vkray/entry-point-params.slang | 9 | ||||
| -rw-r--r-- | tests/vkray/intersection.slang | 13 | ||||
| -rw-r--r-- | tests/vkray/raygen.slang | 8 |
4 files changed, 35 insertions, 20 deletions
diff --git a/tests/vkray/closesthit.slang b/tests/vkray/closesthit.slang index b2af4501c..7ec3199e2 100644 --- a/tests/vkray/closesthit.slang +++ b/tests/vkray/closesthit.slang @@ -1,5 +1,6 @@ // closesthit.slang //TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+GL_NV_ray_tracing -stage closesthit -entry main -target spirv-assembly +//TEST:SIMPLE(filecheck=CHECK): -stage closesthit -entry main -target spirv-assembly -emit-spirv-directly struct ReflectionRay { @@ -33,15 +34,15 @@ void main( // CHECK: OpCapability RayTracing // CHECK: OpEntryPoint ClosestHitNV %main "main" -// CHECK: OpDecorate %gl_InstanceID BuiltIn InstanceId -// CHECK: OpDecorate %gl_InstanceCustomIndexNV BuiltIn InstanceCustomIndexNV -// CHECK: OpDecorate %gl_PrimitiveID BuiltIn PrimitiveId -// CHECK: OpDecorate %gl_HitKindNV BuiltIn HitKindNV -// CHECK: OpDecorate %gl_RayTmaxNV BuiltIn RayTmaxNV -// CHECK: OpDecorate %gl_RayTminNV BuiltIn RayTminNV -// CHECK: %ShaderRecord_0 = OpVariable %_ptr_ShaderRecordBufferNV__S{{.*}} ShaderRecordBufferNV -// CHECK: %{{.*}} = OpVariable %_ptr_IncomingRayPayloadNV_ReflectionRay_0 IncomingRayPayloadNV -// CHECK: %{{.*}} = OpLoad %int %gl_InstanceID -// CHECK: %{{.*}} = OpLoad %int %gl_InstanceCustomIndexNV -// CHECK: %{{.*}} = OpAccessChain %_ptr_ShaderRecordBufferNV_uint %ShaderRecord_0 %int_0 -// CHECK: %{{.*}} = OpAccessChain %_ptr_IncomingRayPayloadNV_v4float %_S{{.*}} %int_0 +// CHECK-DAG: OpDecorate %[[INSTANCE_ID:[A-Za-z0-9_]+]] BuiltIn InstanceId +// CHECK-DAG: OpDecorate %[[INSTANCE_INDEX:[A-Za-z0-9_]+]] BuiltIn InstanceCustomIndexNV +// CHECK-DAG: OpDecorate %{{.*}} BuiltIn PrimitiveId +// CHECK-DAG: OpDecorate %{{.*}} BuiltIn HitKindNV +// CHECK-DAG: OpDecorate %{{.*}} BuiltIn RayTmaxNV +// CHECK-DAG: OpDecorate %{{.*}} BuiltIn RayTminNV +// CHECK-DAG: %ShaderRecord{{.*}} = OpVariable %_ptr_ShaderRecordBufferNV{{.*}} ShaderRecordBufferNV +// CHECK-DAG: %{{.*}} = OpVariable %_ptr_IncomingRayPayloadNV_ReflectionRay{{.*}} IncomingRayPayloadNV +// CHECK-DAG: %{{.*}} = OpLoad %{{u?}}int %[[INSTANCE_ID]] +// CHECK-DAG: %{{.*}} = OpLoad %{{u?}}int %[[INSTANCE_INDEX]] +// CHECK-DAG: %{{.*}} = OpAccessChain %_ptr_ShaderRecordBufferNV_uint %ShaderRecord{{.*}} %int_0 +// CHECK-DAG: %{{.*}} = OpAccessChain %_ptr_IncomingRayPayloadNV_v4float %{{.*}} %int_0 diff --git a/tests/vkray/entry-point-params.slang b/tests/vkray/entry-point-params.slang index 075692b19..993f2a3b7 100644 --- a/tests/vkray/entry-point-params.slang +++ b/tests/vkray/entry-point-params.slang @@ -4,6 +4,7 @@ // shaders properly map to the "shader record" in SPIR-V output. //TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+spirv_1_4 -stage raygeneration -entry main -target spirv-assembly +//TEST:SIMPLE(filecheck=CHECK): -stage raygeneration -entry main -target spirv-assembly -emit-spirv-directly RWStructuredBuffer<float> buffer; @@ -16,7 +17,7 @@ void main( // CHECK: OpCapability RayTracingKHR // CHECK: OpExtension "SPV_KHR_ray_tracing" // CHECK: OpEntryPoint RayGenerationNV %main -// CHECK: OpDecorate %gl_LaunchIDEXT BuiltIn LaunchIdNV -// CHECK: %gl_LaunchIDEXT = OpVariable %_ptr_Input_v3uint Input -// CHECK: %{{.*}} = OpLoad %v3uint %gl_LaunchIDEXT -// CHECK: %{{.*}} = OpAccessChain %_ptr_ShaderRecordBufferNV_float %_S2 %int_0 +// CHECK-DAG: OpDecorate %[[LaunchID:[A-Za-z0-9_]+]] BuiltIn LaunchIdNV +// CHECK-DAG: %[[LaunchID]] = OpVariable %_ptr_Input_v3uint Input +// CHECK-DAG: %{{.*}} = OpLoad %v3uint %[[LaunchID]] +// CHECK-DAG: %{{.*}} = OpAccessChain %_ptr_ShaderRecordBufferNV_float %{{.*}} %int_0 diff --git a/tests/vkray/intersection.slang b/tests/vkray/intersection.slang index 65705c845..4b4495680 100644 --- a/tests/vkray/intersection.slang +++ b/tests/vkray/intersection.slang @@ -1,6 +1,6 @@ // intersection.slang -//TEST:CROSS_COMPILE: -profile glsl_460+GL_NV_ray_tracing -stage intersection -entry main -target spirv-assembly - +//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+GL_NV_ray_tracing -stage intersection -entry main -target spirv-assembly +//TEST:SIMPLE(filecheck=CHECK): -emit-spirv-directly -stage intersection -entry main -target spirv-assembly struct Sphere { float3 position; @@ -45,3 +45,12 @@ void main() ReportHit(tHit, 0, attrs); } } + +// CHECK: OpEntryPoint IntersectionNV %main "main" +// CHECK: OpDecorate %[[rayTMin:[a-zA-Z0-9_]+]] BuiltIn RayTminNV + +// CHECK-DAG: %[[ATTR:[A-Za-z0-9_]+]] = OpVariable %_ptr_HitAttributeNV_SphereHitAttributes{{.*}} HitAttributeNV +// CHECK-DAG: %[[VAL:[A-Za-z0-9_]+]] = Op{{.+}} %SphereHitAttributes{{.*}} {{.*}} +// CHECK-DAG: OpStore %[[ATTR]] %[[VAL]] + +// CHECK-DAG: OpReportIntersectionKHR diff --git a/tests/vkray/raygen.slang b/tests/vkray/raygen.slang index ac82ccf1a..84260611b 100644 --- a/tests/vkray/raygen.slang +++ b/tests/vkray/raygen.slang @@ -1,4 +1,5 @@ //TEST:CROSS_COMPILE: -profile glsl_460+GL_EXT_ray_tracing -stage raygeneration -entry main -target spirv-assembly +//TEST:SIMPLE(filecheck=CHECK): -emit-spirv-directly -stage raygeneration -entry main -target spirv-assembly #define TRACING_EPSILON 1e-6 @@ -46,8 +47,8 @@ void main() (float(gl_LaunchIDNV.y) + 0.5f) / float(gl_LaunchSizeNV.y) ); - float3 P = samplerPosition.Sample(sampler, inUV).rgb; - float3 N = samplerNormal.Sample(sampler, inUV).rgb * 2.0 - 1.0; + float3 P = samplerPosition.SampleLevel(sampler, inUV, 0).rgb; + float3 N = samplerNormal.SampleLevel(sampler, inUV, 0).rgb * 2.0 - 1.0; float3 lightPos = ubo.light.position.xyz; float3 lightDelta = lightPos - P; @@ -114,3 +115,6 @@ void main() outputImage[int2(gl_LaunchIDNV.xy)] = float4(color, 1.0); } + +// CHECK: %{{.*}} = OpVariable %_ptr_RayPayload{{(NV)?}}_ReflectionRay{{.*}} RayPayload +// CHECK: OpTraceRayKHR |
