From b290c88c1d714496d54274207558067130fd054d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Fri, 2 Feb 2024 23:21:12 -0600 Subject: [PATCH] fix: use two calibers rule on spaced armor --- .../ArmorMesh/components/Armor/shaders/fragment.glsl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl b/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl index 962867e08..08a3d0e15 100644 --- a/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl +++ b/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl @@ -65,8 +65,10 @@ void main() { if (isUnderSpacedArmor) { // spaced armor on the other hand, does care about angle - float spacedArmorThickness = spacedArmorNominalThickness / cos(spacedArmorAngle); - remainingPenetration -= spacedArmorThickness; + bool spacedArmorTwoCalibersRule = caliber > 2.0 * spacedArmorNominalThickness; + float finalSpacedArmorNormalization = spacedArmorTwoCalibersRule ? (normalization * 1.4 * caliber) / (2.0 * spacedArmorNominalThickness) : normalization; + float finalSpacedArmorThickness = spacedArmorNominalThickness / cos(spacedArmorAngle - finalSpacedArmorNormalization); + remainingPenetration -= finalSpacedArmorThickness; } remainingPenetration = max(remainingPenetration, 0.0);