summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/bugs/vk-structured-buffer-load.hlsl2
-rw-r--r--tests/bugs/vk-structured-buffer-load.hlsl.glsl21
2 files changed, 19 insertions, 4 deletions
diff --git a/tests/bugs/vk-structured-buffer-load.hlsl b/tests/bugs/vk-structured-buffer-load.hlsl
index a5f518f93..bd5d16882 100644
--- a/tests/bugs/vk-structured-buffer-load.hlsl
+++ b/tests/bugs/vk-structured-buffer-load.hlsl
@@ -28,6 +28,8 @@ void HitMain(inout RayHitInfoPacked RayData, BuiltInTriangleIntersectionAttribut
if (use_rcp)
RayData.PackedHitInfoA.y = rcp(offsfloat);
+ else if ((use_rcp > 0) & (offsfloat == 0.0))
+ RayData.PackedHitInfoA.y = rsqrt(offsfloat + 1.0);
else
RayData.PackedHitInfoA.y = rsqrt(offsfloat);
}
diff --git a/tests/bugs/vk-structured-buffer-load.hlsl.glsl b/tests/bugs/vk-structured-buffer-load.hlsl.glsl
index 206a25ef0..016e49b25 100644
--- a/tests/bugs/vk-structured-buffer-load.hlsl.glsl
+++ b/tests/bugs/vk-structured-buffer-load.hlsl.glsl
@@ -33,9 +33,9 @@ void main()
float offsfloat_0 = ((gParamBlock_sbuf_0)._data[(int(uint(0)))]);
+ uint use_rcp_1 = use_rcp_0|uint(HitT_0 > 0.00000000000000000000);
-
- if(bool(use_rcp_0 | uint(HitT_0 > 0.00000000000000000000)))
+ if(bool(use_rcp_1))
{
float _S4 = (1.0/((offsfloat_0)));
@@ -45,9 +45,22 @@ void main()
}
else
{
- float _S5 = (inversesqrt((offsfloat_0)));
- _S2.PackedHitInfoA_0.y = _S5;
+ if(use_rcp_1 > uint(0)&&offsfloat_0 == 0.00000000000000000000)
+ {
+
+ float _S5 = (inversesqrt((offsfloat_0 + 1.00000000000000000000)));
+
+ _S2.PackedHitInfoA_0.y = _S5;
+
+ }
+ else
+ {
+ float _S6 = (inversesqrt((offsfloat_0)));
+
+ _S2.PackedHitInfoA_0.y = _S6;
+
+ }
}