Skip to content

Commit

Permalink
logic abstractions
Browse files Browse the repository at this point in the history
  • Loading branch information
FalsePattern committed Feb 5, 2022
1 parent a80d041 commit 4f18a27
Showing 1 changed file with 20 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,20 +54,32 @@ public abstract class RenderBlocksMixin {
},
require = 12)
private void aoFix(CallbackInfoReturnable<Boolean> cir) {
val avgTopLeft = (colorRedTopLeft + colorGreenTopLeft + colorBlueTopLeft) / 3.0f;
val avgBottomLeft = (colorRedBottomLeft + colorGreenBottomLeft + colorBlueBottomLeft) / 3.0f;
val avgBottomRight = (colorRedBottomRight + colorGreenBottomRight + colorBlueBottomRight) / 3.0f;
val avgTopRight = (colorRedTopRight + colorGreenTopRight + colorBlueTopRight) / 3.0f;
val mainDiagonalDiff = Math.abs(avgTopLeft - avgBottomRight);
val altDiagonalDiff = Math.abs(avgBottomLeft - avgTopRight);
val avgTopLeft = avg(colorRedTopLeft, colorGreenTopLeft, colorBlueTopLeft);
val avgBottomLeft = avg(colorRedBottomLeft, colorGreenBottomLeft, colorBlueBottomLeft);
val avgBottomRight = avg(colorRedBottomRight, colorGreenBottomRight, colorBlueBottomRight);
val avgTopRight = avg(colorRedTopRight, colorGreenTopRight, colorBlueTopRight);
val mainDiagonalDiff= diff(avgTopLeft, avgBottomRight);
val altDiagonalDiff = diff(avgBottomLeft, avgTopRight);
if (Math.abs(mainDiagonalDiff - altDiagonalDiff) < 0.01) {
val mainDiagonalAvg = (avgTopLeft + avgBottomRight) * 0.5F;
val altDiagonalAvg = (avgBottomLeft + avgTopRight) * 0.5F;
val mainDiagonalAvg = avg(avgTopLeft, avgBottomRight);
val altDiagonalAvg = avg(avgBottomLeft, avgTopRight);
if (mainDiagonalAvg < altDiagonalAvg) {
((ITessellatorMixin) Tessellator.instance).setAlternativeTriangulation();
}
} else if (altDiagonalDiff < mainDiagonalDiff) {
((ITessellatorMixin) Tessellator.instance).setAlternativeTriangulation();
}
}

private static float avg(final float a, final float b) {
return (a + b) * 0.5F;
}

private static float avg(final float r, final float g, final float b) {
return (r + g + b) * 0.3333333333333333F;
}

private static float diff(final float a, final float b) {
return Math.abs(a - b);
}
}

0 comments on commit 4f18a27

Please sign in to comment.