From 34262032cebf8bb663943ca2f11d5a01ee29c4af Mon Sep 17 00:00:00 2001 From: Ryo Suzuki Date: Tue, 12 Dec 2023 18:17:11 +0900 Subject: [PATCH] =?UTF-8?q?[=E5=85=B1=E9=80=9A]=20fix=20#1164?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Siv3D/src/Siv3D/Renderer2D/Vertex2DBuilder.cpp | 2 +- Siv3D/src/Siv3D/RoundRect/SivRoundRect.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Siv3D/src/Siv3D/Renderer2D/Vertex2DBuilder.cpp b/Siv3D/src/Siv3D/Renderer2D/Vertex2DBuilder.cpp index 85df14313..0f6568771 100644 --- a/Siv3D/src/Siv3D/Renderer2D/Vertex2DBuilder.cpp +++ b/Siv3D/src/Siv3D/Renderer2D/Vertex2DBuilder.cpp @@ -3051,7 +3051,7 @@ namespace s3d Vertex2D::IndexType BuildRoundRectShadow(const BufferCreatorFunc& bufferCreator, const RoundRect& roundRect, const float blur, const Float4& color, const float scale, const bool fill) { const float baseRadius = static_cast(roundRect.r); - const float nearRadius = (baseRadius - (blur * 0.5f)); + const float nearRadius = Max(baseRadius - (blur * 0.5f), 0.0f); const float farRadius = (baseRadius + (blur * 0.5f)); const FloatRect innerRect{ (roundRect.x + baseRadius), (roundRect.y + baseRadius), (roundRect.x + roundRect.w - baseRadius), (roundRect.y + roundRect.h - baseRadius) }; const Vertex2D::IndexType quality = static_cast(detail::CaluculateFanQuality(farRadius * scale)); diff --git a/Siv3D/src/Siv3D/RoundRect/SivRoundRect.cpp b/Siv3D/src/Siv3D/RoundRect/SivRoundRect.cpp index fa0c6b4dc..b7e770675 100644 --- a/Siv3D/src/Siv3D/RoundRect/SivRoundRect.cpp +++ b/Siv3D/src/Siv3D/RoundRect/SivRoundRect.cpp @@ -321,6 +321,7 @@ namespace s3d RoundRect baseRoundRect = movedBy(offset).stretched(spread); baseRoundRect.r += spread; + baseRoundRect.r = Min(baseRoundRect.r, (baseRoundRect.rect.size.minComponent() * 0.5)); const double blurClamped = Min({ baseRoundRect.w, baseRoundRect.h, blur }); SIV3D_ENGINE(Renderer2D)->addRoundRectShadow(baseRoundRect, static_cast(blurClamped), color.toFloat4(), fill);