diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bugs/vk-structured-buffer-load.hlsl | 2 | ||||
| -rw-r--r-- | tests/bugs/vk-structured-buffer-load.hlsl.glsl | 21 |
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; + + } } |
