diff --git a/apps/docs/src/app/(home)/hero-canvas.tsx b/apps/docs/src/app/(home)/hero-canvas.tsx index 28fadba1..d3165116 100644 --- a/apps/docs/src/app/(home)/hero-canvas.tsx +++ b/apps/docs/src/app/(home)/hero-canvas.tsx @@ -43,6 +43,7 @@ export function HomeHeroCanvas({ ariaLabel, lang = "zh" }: HomeHeroCanvasProps) setReady(true); } catch (error) { console.warn("One CLI hero animation could not initialize WebGL.", error); + if (!disposed) setReady(true); } }; void initialize(); diff --git a/apps/docs/src/app/(home)/hero-workspace.ts b/apps/docs/src/app/(home)/hero-workspace.ts index 626992d9..6646808c 100644 --- a/apps/docs/src/app/(home)/hero-workspace.ts +++ b/apps/docs/src/app/(home)/hero-workspace.ts @@ -1130,9 +1130,13 @@ function uniqueMaterials(materials: Material[]) { function setMaterialOpacity(material: Material, opacity: number) { const maxOpacity = typeof material.userData.maxOpacity === "number" ? material.userData.maxOpacity : 1; const visibleOpacity = clamp01(opacity * maxOpacity); - const nextTransparent = Boolean(material.userData.keepTransparent) || visibleOpacity < 0.999 || maxOpacity < 0.999; + const keepTransparent = Boolean(material.userData.keepTransparent) || maxOpacity < 0.999; + const nextTransparent = keepTransparent + ? true + : material.transparent + ? visibleOpacity < 0.999 + : visibleOpacity < 0.97; const nextDepthWrite = !nextTransparent; - if (Math.abs(material.opacity - visibleOpacity) > 0.001) { material.opacity = visibleOpacity; }