From 206ac373d2eb56cfa826b31d69b483f0d57dcf51 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com>
Date: Thu, 29 Feb 2024 15:54:15 -0600
Subject: [PATCH] fix: cos domain
---
.../tools/tankopedia/[id]/components/Model/TankSandbox.tsx | 1 -
.../CoreArmorSceneComponent/shaders/fragment.glsl | 2 +-
.../components/SpacedArmorSubSpaced/shaders/fragment.glsl | 2 +-
.../Armor/components/SpacedArmorSceneComponent/index.tsx | 6 ++----
4 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/src/app/tools/tankopedia/[id]/components/Model/TankSandbox.tsx b/src/app/tools/tankopedia/[id]/components/Model/TankSandbox.tsx
index e7e9744a6..3e077f02b 100644
--- a/src/app/tools/tankopedia/[id]/components/Model/TankSandbox.tsx
+++ b/src/app/tools/tankopedia/[id]/components/Model/TankSandbox.tsx
@@ -197,7 +197,6 @@ export function TankSandbox() {
}>
{/* TODO: add rotation cube to the top right */}
- {/* */}
diff --git a/src/components/Armor/components/CoreArmorSceneComponent/shaders/fragment.glsl b/src/components/Armor/components/CoreArmorSceneComponent/shaders/fragment.glsl
index b5b6f4a50..e03696067 100644
--- a/src/components/Armor/components/CoreArmorSceneComponent/shaders/fragment.glsl
+++ b/src/components/Armor/components/CoreArmorSceneComponent/shaders/fragment.glsl
@@ -40,7 +40,7 @@ void main() {
} 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 finalThickness = thickness / cos(max(0.0, angle - finalNormalization));
float remainingPenetration = penetration;
// world space is in meters
diff --git a/src/components/Armor/components/SpacedArmorSceneComponent/components/SpacedArmorSubSpaced/shaders/fragment.glsl b/src/components/Armor/components/SpacedArmorSceneComponent/components/SpacedArmorSubSpaced/shaders/fragment.glsl
index 04057b4d7..7d486d5e8 100644
--- a/src/components/Armor/components/SpacedArmorSceneComponent/components/SpacedArmorSubSpaced/shaders/fragment.glsl
+++ b/src/components/Armor/components/SpacedArmorSceneComponent/components/SpacedArmorSubSpaced/shaders/fragment.glsl
@@ -18,7 +18,7 @@ void main() {
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 finalThickness = thickness / cos(max(0.0, angle - finalNormalization));
gl_FragColor = vec4(finalThickness / penetration, 0.0, 0.0, 1.0);
}
\ No newline at end of file
diff --git a/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx b/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx
index 1d7cc9685..5bed3de2c 100644
--- a/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx
+++ b/src/components/Armor/components/SpacedArmorSceneComponent/index.tsx
@@ -73,7 +73,6 @@ export function SpacedArmorSceneComponent({
...props
}: SpacedArmorSceneComponentProps) {
const camera = useThree((state) => state.camera);
- // const cameraNormal = new Vector3();
return (
<>
@@ -107,8 +106,6 @@ export function SpacedArmorSceneComponent({
point: event.point,
}; // TODO: type this
let remainingPenetration = penetration;
- let penetrationChance = -1;
- let splashChance = -1;
const shellNormal = camera.position
.clone()
@@ -242,7 +239,8 @@ export function SpacedArmorSceneComponent({
const finalThickness =
thickness === 0
? 0
- : thickness / Math.cos(angle - finalNormalization);
+ : thickness /
+ Math.cos(Math.max(0, angle - finalNormalization));
if (!threeCalibersRule && angle >= ricochet) {
shot.layers.push({