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)
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.