diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/nv-extensions/nv-ray-tracing-motion-blur.slang | 18 | ||||
| -rw-r--r-- | tests/nv-extensions/nv-ray-tracing-motion-blur.slang.glsl | 127 | ||||
| -rw-r--r-- | tests/vkray/raygen-trace-ray-param-non-struct.slang | 94 | ||||
| -rw-r--r-- | tests/vkray/raygen-trace-ray-param-struct.slang | 76 | ||||
| -rw-r--r-- | tests/vkray/raygen.slang | 16 |
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 |
