Minimally fix the known unsoundness in bevy_mikktspace (#5299)

# Objective

- 0.8 is coming soon, and our mikktspace implementation is unsound - see https://github.com/gltf-rs/mikktspace/issues/26
- Best not to ship that

## Solution

- Fix the unsoundness in a minimal way
- Obviously there might be others, but it seems unlikely we have any way to know about those
This commit is contained in:
Daniel McNab 2022-07-16 08:37:18 +00:00
parent a63d761aa3
commit 25d222b73e

View file

@ -1060,8 +1060,8 @@ unsafe fn InitTriInfo<I: Geometry>(
let mut bChooseOrientFirstTri: bool = false;
if (*pTriInfos.offset((t + 1) as isize)).iFlag & 4i32 != 0i32 {
bChooseOrientFirstTri = true
} else if CalcTexArea(geometry, &*piTriListIn.offset((t * 3 + 0) as isize))
>= CalcTexArea(geometry, &*piTriListIn.offset(((t + 1) * 3 + 0) as isize))
} else if CalcTexArea(geometry, piTriListIn.offset((t * 3 + 0) as isize))
>= CalcTexArea(geometry, piTriListIn.offset(((t + 1) * 3 + 0) as isize))
{
bChooseOrientFirstTri = true
}
@ -1503,9 +1503,7 @@ unsafe fn GenerateSharedVerticesIndexList<I: Geometry>(
vP_1.z
};
let iCell_0 = FindGridCell(fMin, fMax, fVal_0);
let mut pTable: *mut i32 = 0 as *mut i32;
pTable = &mut piHashTable[piHashOffsets[iCell_0] as usize] as *mut i32;
*pTable.offset(piHashCount2[iCell_0] as isize) = i as i32;
piHashTable[(piHashOffsets[iCell_0] + piHashCount2[iCell_0]) as usize] = i as i32;
piHashCount2[iCell_0] += 1;
i += 1
}
@ -1525,7 +1523,7 @@ unsafe fn GenerateSharedVerticesIndexList<I: Geometry>(
k = 0;
while k < g_iCells {
// extract table of cell k and amount of entries in it
let mut pTable_0 = &mut piHashTable[piHashOffsets[k] as usize] as *mut i32;
let pTable_0 = piHashTable.as_mut_ptr().offset(piHashOffsets[k] as isize);
let iEntries = piHashCount[k] as usize;
if !(iEntries < 2) {
e = 0;