From 2acee91524c9431b6ed9d747ccc5593380b4ac10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sat, 20 Jan 2024 15:24:20 -0600 Subject: [PATCH] fix: remainging pen going negative --- .../ArmorMesh/components/Armor/shaders/fragment.glsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl b/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl index ec51051aa..7b9c7a12a 100644 --- a/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl +++ b/src/components/ArmorMesh/components/Armor/shaders/fragment.glsl @@ -60,12 +60,14 @@ void main() { float externalModuleThickness = externalModuleMaskColor.g * maxThickness; remainingPenetration -= externalModuleThickness; } + remainingPenetration = max(remainingPenetration, 0.0); if (isUnderSpacedArmor) { // spaced armor on the other hand, does care about angle float spacedArmorThickness = spacedArmorNominalThickness / cos(spacedArmorAngle); remainingPenetration -= spacedArmorThickness; } + remainingPenetration = max(remainingPenetration, 0.0); float spacedArmorDepth = texture2D(spacedArmorDepth, screenCoordinates).r; float spacedArmorDistance = depthToDistance(spacedArmorDepth); @@ -75,8 +77,6 @@ void main() { // there is a 50% penetration loss per meter for HE based shells remainingPenetration -= 0.5 * remainingPenetration * distanceFromSpacedArmor; } - - // clamp to 0 because negative penetration causes guaranteed penetrations for some reason remainingPenetration = max(remainingPenetration, 0.0); bool coreArmorTwoCalibersRule = caliber > 2.0 * thickness;