KhronosGroup / VK-GL-CTS

Khronos Vulkan, OpenGL, and OpenGL ES Conformance Tests
https://www.khronos.org/
Apache License 2.0
525 stars 293 forks source link

Bug Report:dEQP-VK.ray_tracing_pipeline.watertightness.3.65536 result judgement error #446

Open wangyeisagoodboy opened 8 months ago

wangyeisagoodboy commented 8 months ago

In this case, the intersection result of ray (lauchId.x=240, lauchId.y=15) and triangle does not meet the SPEC requirements.

The ray is parallel to the Z axis: ray.origin.x = FP32(0x3f708000u); ray.origin.y = FP32(0x3d780000u); ray.origin.z = FP32(0x0u); ray.direction.x = FP32(0x0u); ray.direction.y = FP32(0x0u); ray.direction.z = FP32(0xbf800000);

The ray only hit the common edge (v1 and v2, not the shared edge specified in the SPEC) of the following 2 triangles(doesn't hit any other triangles.): triangle1: v1(3f800000, 0, bf800000) v2(0, 3f800000, bf800000) v3(3ec83ac8, 3f1be29d, bed79c23) triangle2: v1(0, 3f800000, bf800000) v2(3f800000, 0, bf800000) v3(3e8f7a0c, 3f353a70, bf4fab47)

These two triangles don't fit the definition of closest fan, because their winding order is different and exist overlaps. (https://registry.khronos.org/vulkan/specs/1.3-extensions/html/chap39.html#ray-traversal-watertight)

So, according to the spec, these two triangles are not guaranteed to be hitted.