summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/nv-extensions/nv-ray-tracing-motion-blur.slang18
-rw-r--r--tests/nv-extensions/nv-ray-tracing-motion-blur.slang.glsl127
-rw-r--r--tests/vkray/raygen-trace-ray-param-non-struct.slang94
-rw-r--r--tests/vkray/raygen-trace-ray-param-struct.slang76
-rw-r--r--tests/vkray/raygen.slang16
5 files changed, 197 insertions, 134 deletions
diff --git a/tests/nv-extensions/nv-ray-tracing-motion-blur.slang b/tests/nv-extensions/nv-ray-tracing-motion-blur.slang
index 753101d7e..f07bc6977 100644
--- a/tests/nv-extensions/nv-ray-tracing-motion-blur.slang
+++ b/tests/nv-extensions/nv-ray-tracing-motion-blur.slang
@@ -1,4 +1,6 @@
-//TEST:CROSS_COMPILE: -profile glsl_460+GL_EXT_ray_tracing -stage raygeneration -entry main -target spirv-assembly
+//TEST:SIMPLE(filecheck=CHECK_SPV): -emit-spirv-directly -stage raygeneration -entry main -target spirv-assembly
+//TEST:SIMPLE(filecheck=CHECK_HLSL): -stage raygeneration -entry main -target hlsl
+//TEST:SIMPLE(filecheck=CHECK_GLSL): -stage raygeneration -entry main -target glsl
#define TRACING_EPSILON 1e-6
@@ -45,8 +47,8 @@ void main()
(float(launchID.y) + 0.5f) / float(launchSize.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;
@@ -116,3 +118,13 @@ void main()
outputImage[launchID] = float4(color, 1.0);
}
+
+// CHECK_SPV: %{{.*}} = OpVariable %_ptr_RayPayload{{(NV)?}}_ReflectionRay{{.*}} RayPayload
+// CHECK_SPV: OpTraceRayMotionNV
+// CHECK_SPV: OpTraceRayKHR
+
+// CHECK_HLSL: TraceMotionRay
+// CHECK_HLSL: TraceRay
+
+// CHECK_GLSL: traceRayMotionNV(
+// CHECK_GLSL: traceRayEXT( \ No newline at end of file
diff --git a/tests/nv-extensions/nv-ray-tracing-motion-blur.slang.glsl b/tests/nv-extensions/nv-ray-tracing-motion-blur.slang.glsl
deleted file mode 100644
index 744ee2f44..000000000
--- a/tests/nv-extensions/nv-ray-tracing-motion-blur.slang.glsl
+++ /dev/null
@@ -1,127 +0,0 @@
-#version 460
-#extension GL_EXT_ray_tracing : require
-#extension GL_NV_ray_tracing_motion_blur : require
-layout(row_major) uniform;
-layout(row_major) buffer;
-layout(binding = 0)
-uniform texture2D samplerPosition_0;
-
-layout(binding = 2)
-uniform sampler sampler_0;
-
-layout(binding = 1)
-uniform texture2D samplerNormal_0;
-
-struct Light_0
-{
- vec4 position_0;
- vec4 color_0;
-};
-
-struct Uniforms_0
-{
- Light_0 light_0;
- vec4 viewPos_0;
- mat4x4 view_0;
- mat4x4 model_0;
-};
-
-layout(binding = 3)
-layout(std140) uniform _S1
-{
- Light_0 light_0;
- vec4 viewPos_0;
- mat4x4 view_0;
- mat4x4 model_0;
-}ubo_0;
-layout(binding = 5)
-uniform accelerationStructureEXT as_0;
-
-layout(rgba32f)
-layout(binding = 4)
-uniform image2D outputImage_0;
-
-struct ReflectionRay_0
-{
- float color_1;
-};
-
-layout(location = 0)
-rayPayloadEXT
-ReflectionRay_0 p_0;
-
-struct ShadowRay_0
-{
- float hitDistance_0;
-};
-
-layout(location = 1)
-rayPayloadEXT
-ShadowRay_0 p_1;
-
-struct RayDesc_0
-{
- vec3 Origin_0;
- float TMin_0;
- vec3 Direction_0;
- float TMax_0;
-};
-
-void TraceMotionRay_0(accelerationStructureEXT AccelerationStructure_0, uint RayFlags_0, uint InstanceInclusionMask_0, uint RayContributionToHitGroupIndex_0, uint MultiplierForGeometryContributionToHitGroupIndex_0, uint MissShaderIndex_0, RayDesc_0 Ray_0, float CurrentTime_0, inout ShadowRay_0 Payload_0)
-{
- p_1 = Payload_0;
- traceRayMotionNV(AccelerationStructure_0, RayFlags_0, InstanceInclusionMask_0, RayContributionToHitGroupIndex_0, MultiplierForGeometryContributionToHitGroupIndex_0, MissShaderIndex_0, Ray_0.Origin_0, Ray_0.TMin_0, Ray_0.Direction_0, Ray_0.TMax_0, CurrentTime_0, (1));
- Payload_0 = p_1;
- return;
-}
-
-float saturate_0(float x_0)
-{
- return clamp(x_0, 0.0, 1.0);
-}
-
-void TraceRay_0(accelerationStructureEXT AccelerationStructure_1, uint RayFlags_1, uint InstanceInclusionMask_1, uint RayContributionToHitGroupIndex_1, uint MultiplierForGeometryContributionToHitGroupIndex_1, uint MissShaderIndex_1, RayDesc_0 Ray_1, inout ReflectionRay_0 Payload_1)
-{
- p_0 = Payload_1;
- traceRayEXT(AccelerationStructure_1, RayFlags_1, InstanceInclusionMask_1, RayContributionToHitGroupIndex_1, MultiplierForGeometryContributionToHitGroupIndex_1, MissShaderIndex_1, Ray_1.Origin_0, Ray_1.TMin_0, Ray_1.Direction_0, Ray_1.TMax_0, (0));
- Payload_1 = p_0;
- return;
-}
-
-void main()
-{
- uvec3 _S2 = ((gl_LaunchIDEXT));
- ivec2 launchID_0 = ivec2(_S2.xy);
- uvec3 _S3 = ((gl_LaunchSizeEXT));
- ivec2 launchSize_0 = ivec2(_S3.xy);
- vec2 inUV_0 = vec2((float(launchID_0.x) + 0.5) / float(launchSize_0.x), (float(launchID_0.y) + 0.5) / float(launchSize_0.y));
- vec3 P_0 = (texture(sampler2D(samplerPosition_0,sampler_0), (inUV_0))).xyz;
- vec3 N_0 = (texture(sampler2D(samplerNormal_0,sampler_0), (inUV_0))).xyz * 2.0 - 1.0;
- vec3 lightDelta_0 = ubo_0.light_0.position_0.xyz - P_0;
- float lightDist_0 = length(lightDelta_0);
- vec3 L_0 = normalize(lightDelta_0);
- float _S4 = 1.0 / (lightDist_0 * lightDist_0);
- RayDesc_0 ray_0;
- ray_0.Origin_0 = P_0;
- ray_0.TMin_0 = 0.00000099999999747524;
- ray_0.Direction_0 = lightDelta_0;
- ray_0.TMax_0 = lightDist_0;
- ShadowRay_0 shadowRay_0;
- shadowRay_0.hitDistance_0 = 0.0;
- TraceMotionRay_0(as_0, 1U, 255U, 0U, 0U, 2U, ray_0, 1.0, shadowRay_0);
- float atten_0;
- if(shadowRay_0.hitDistance_0 < lightDist_0)
- {
- atten_0 = 0.0;
- }
- else
- {
- atten_0 = _S4;
- }
- vec3 color_2 = ubo_0.light_0.color_0.xyz * saturate_0(dot(N_0, L_0)) * atten_0;
- ReflectionRay_0 reflectionRay_0;
- TraceRay_0(as_0, 1U, 255U, 0U, 0U, 2U, ray_0, reflectionRay_0);
- imageStore((outputImage_0), ivec2((uvec2(launchID_0))), vec4(color_2 + reflectionRay_0.color_1, 1.0));
- return;
-}
-
diff --git a/tests/vkray/raygen-trace-ray-param-non-struct.slang b/tests/vkray/raygen-trace-ray-param-non-struct.slang
new file mode 100644
index 000000000..c4451d941
--- /dev/null
+++ b/tests/vkray/raygen-trace-ray-param-non-struct.slang
@@ -0,0 +1,94 @@
+//TEST:SIMPLE(filecheck=CHECK): -target hlsl -stage raygeneration -entry main
+
+RaytracingAccelerationStructure as;
+
+RWStructuredBuffer<float> outputBuffer1;
+
+// addComplexity ensures the code does not optimize any `someInData1`
+void addComplexity1(inout float someInData1)
+{
+ someInData1 = outputBuffer1[1];
+}
+void addComplexity2(float dataIn)
+{
+ outputBuffer1[2] = dataIn;
+}
+
+void main()
+{
+ RayDesc ray;
+ ray.Origin = float3(0);
+ ray.TMin = 1e-6;
+ ray.Direction = float3(0,0,1);
+ ray.TMax = 100.0f;
+
+ // CHECK: ForceVarIntoStructTemporarily_t{{_[0-9]}} forceVarIntoStructTemporarily{{_[0-9]}};
+ float someInData1 = 5.0f;
+ addComplexity1(someInData1);
+
+ // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}}
+ // CHECK: TraceRay(
+ // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}};
+ TraceRay(as,
+ 1,
+ 0xff,
+ 0,
+ 0,
+ 2,
+ ray,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1;
+
+ // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}}
+ // CHECK: TraceMotionRay(
+ // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}};
+ TraceMotionRay(as,
+ 1,
+ 0xff,
+ 0,
+ 0,
+ 2,
+ ray,
+ 0.0f,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1;
+
+ // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}}
+ // CHECK: NvTraceRayHitObject(
+ // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}};
+ HitObject::TraceRay(as,
+ 1,
+ 0xff,
+ 0,
+ 0,
+ 2,
+ ray,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1;
+
+ // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}}
+ // CHECK: TraceMotionRay(
+ // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}};
+ HitObject::TraceMotionRay(as,
+ 1,
+ 0xff,
+ 0,
+ 0,
+ 2,
+ ray,
+ 0.0f,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1;
+
+ // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}}
+ // CHECK: NvInvokeHitObject(
+ // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}};
+ HitObject hitObject_HitOrMiss;
+ HitObject::Invoke(
+ as,
+ hitObject_HitOrMiss,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1;
+
+ addComplexity2(someInData1);
+} \ No newline at end of file
diff --git a/tests/vkray/raygen-trace-ray-param-struct.slang b/tests/vkray/raygen-trace-ray-param-struct.slang
new file mode 100644
index 000000000..d9a6d134a
--- /dev/null
+++ b/tests/vkray/raygen-trace-ray-param-struct.slang
@@ -0,0 +1,76 @@
+//TEST:SIMPLE(filecheck=CHECK): -target hlsl -stage raygeneration -entry main
+
+RaytracingAccelerationStructure as;
+
+struct testStruct
+{
+ int data;
+}
+
+RWStructuredBuffer<int> outputBuffer1;
+
+void main()
+{
+ RayDesc ray;
+ ray.Origin = float3(0);
+ ray.TMin = 1e-6;
+ ray.Direction = float3(0,0,1);
+ ray.TMax = 100.0f;
+
+ testStruct someInData1;
+ someInData1.data = 5;
+
+ // CHECK: TraceRay(
+ TraceRay(as,
+ 1,
+ 0xff,
+ 0,
+ 0,
+ 2,
+ ray,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1.data;
+
+ // CHECK: TraceMotionRay(
+ TraceMotionRay(as,
+ 1,
+ 0xff,
+ 0,
+ 0,
+ 2,
+ ray,
+ 0.0f,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1.data;
+
+ // CHECK: NvTraceRayHitObject(
+ HitObject::TraceRay(as,
+ 1,
+ 0xff,
+ 0,
+ 0,
+ 2,
+ ray,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1.data;
+
+ // CHECK: TraceMotionRay(
+ HitObject::TraceMotionRay(as,
+ 1,
+ 0xff,
+ 0,
+ 0,
+ 2,
+ ray,
+ 0.0f,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1.data;
+
+ // CHECK: NvInvokeHitObject(
+ HitObject hitObject_HitOrMiss;
+ HitObject::Invoke(
+ as,
+ hitObject_HitOrMiss,
+ someInData1);
+ outputBuffer1[0] = outputBuffer1[0]+someInData1.data;
+} \ No newline at end of file
diff --git a/tests/vkray/raygen.slang b/tests/vkray/raygen.slang
index 18ac74d4b..d63b3a668 100644
--- a/tests/vkray/raygen.slang
+++ b/tests/vkray/raygen.slang
@@ -1,5 +1,6 @@
-//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
+//TEST:SIMPLE(filecheck=CHECK_SPV): -emit-spirv-directly -stage raygeneration -entry main -target spirv-assembly
+//TEST:SIMPLE(filecheck=CHECK_HLSL): -stage raygeneration -entry main -target hlsl
+//TEST:SIMPLE(filecheck=CHECK_GLSL): -stage raygeneration -entry main -target glsl
#define TRACING_EPSILON 1e-6
@@ -116,5 +117,12 @@ void main()
outputImage[int2(gl_LaunchIDNV.xy)] = float4(color, 1.0);
}
-// CHECK: %{{.*}} = OpVariable %_ptr_RayPayload{{(NV)?}}_ReflectionRay{{.*}} RayPayload
-// CHECK: OpTraceRayKHR
+// CHECK_SPV: %{{.*}} = OpVariable %_ptr_RayPayload{{(NV)?}}_ReflectionRay{{.*}} RayPayload
+// CHECK_SPV: OpTraceRayKHR
+// CHECK_SPV: OpTraceRayKHR
+
+// CHECK_HLSL: TraceRay
+// CHECK_HLSL: TraceRay
+
+// CHECK_GLSL: traceRayEXT(
+// CHECK_GLSL: traceRayEXT( \ No newline at end of file