From f5c589373dabba6b17e98362fb42d6ceb10f665f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Tue, 27 Feb 2024 13:50:15 -0600 Subject: [PATCH] feat: finalize ap --- .../components/CoreArmor/shaders/fragment.glsl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/Armor/components/CoreArmor/shaders/fragment.glsl b/src/components/Armor/components/CoreArmor/shaders/fragment.glsl index f44b9e4c1..7a5aafc5c 100644 --- a/src/components/Armor/components/CoreArmor/shaders/fragment.glsl +++ b/src/components/Armor/components/CoreArmor/shaders/fragment.glsl @@ -25,22 +25,22 @@ void main() { if (!threeCalibersRule && !isUnderSpacedArmor && angle >= ricochet) { penetrationChance = 0.0; } else { - bool twoCalibersRule = caliber > thickness * 2.0 && thickness > 0.0; float finalNormalization = twoCalibersRule ? ((1.4 * normalization * caliber) / (2.0 * thickness)) : normalization; float finalThickness = thickness / cos(angle - finalNormalization); - float remainingPenetration = penetration; + if (isUnderSpacedArmor) { - float spacedArmorThickness = spacedArmorBufferFragment.r * penetration; - remainingPenetration -= spacedArmorThickness + finalThickness; - } else { - remainingPenetration -= finalThickness; + remainingPenetration -= spacedArmorBufferFragment.r * penetration; } - penetrationChance = remainingPenetration < 0.0 ? 0.0 : 1.0; + float delta = finalThickness - remainingPenetration; + float randomization = remainingPenetration * 0.05; + + penetrationChance = clamp(1.0 - (delta + randomization) / (2.0 * randomization), 0.0, 1.0); } vec3 color = vec3(1.0, splashChance * 0.392, 0.0); + gl_FragColor = vec4(0.0, penetrationChance, 0.0, 1.0); gl_FragColor = vec4(color, (1.0 - penetrationChance) * 0.5); } \ No newline at end of file