Skip to content

Commit

Permalink
Minimally fix the known unsoundness in bevy_mikktspace (bevyengine#5299)
Browse files Browse the repository at this point in the history
# Objective

- 0.8 is coming soon, and our mikktspace implementation is unsound - see gltf-rs/mikktspace#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
  • Loading branch information
DJMcNab authored and inodentry committed Aug 8, 2022
1 parent 1f9e6b7 commit d69f373
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions crates/bevy_mikktspace/src/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down Expand Up @@ -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
}
Expand All @@ -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;
Expand Down

0 comments on commit d69f373

Please sign in to comment.