From 723a04d0cfd156715a3c92b6d6bd75fdc1862c28 Mon Sep 17 00:00:00 2001 From: mob-sakai Date: Mon, 14 Aug 2023 15:33:19 +0900 Subject: [PATCH] fix: crash occurs when too many vertices are rendered --- Scripts/UIParticleRenderer.cs | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/Scripts/UIParticleRenderer.cs b/Scripts/UIParticleRenderer.cs index de0823b..269e4a8 100644 --- a/Scripts/UIParticleRenderer.cs +++ b/Scripts/UIParticleRenderer.cs @@ -49,7 +49,7 @@ namespace Coffee.UIExtensions return false; } } - + private Rect rootCanvasRect { get @@ -116,7 +116,7 @@ namespace Coffee.UIExtensions var modifiedMaterial = base.GetModifiedMaterial(baseMaterial); - // + // var texture = mainTexture; if (texture == null && _parent.m_AnimatableProperties.Length == 0) { @@ -276,6 +276,19 @@ namespace Coffee.UIExtensions { s_CombineInstances[0].mesh.Clear(false); } + + // Too many vertices to render. + if (65535 <= s_CombineInstances[0].mesh.vertexCount) + { + s_CombineInstances[0].mesh.Clear(false); + UnityEngine.Debug.LogErrorFormat(this, + "Too many vertices to render. index={0}, isTrail={1}, vertexCount={2}(>=65535)", + _index, + _isTrail, + s_CombineInstances[0].mesh.vertexCount + ); + s_CombineInstances[0].mesh.Clear(false); + } Profiler.EndSample(); // Combine mesh to transform. ([ParticleSystem local ->] world -> renderer local) @@ -388,12 +401,12 @@ namespace Coffee.UIExtensions protected override void UpdateGeometry() { } - + public override void Cull(Rect clipRect, bool validRect) { var cull = _lastBounds.extents == Vector3.zero || !validRect || !clipRect.Overlaps(rootCanvasRect, true); if (canvasRenderer.cull == cull) return; - + canvasRenderer.cull = cull; UISystemProfilerApi.AddMarker("MaskableGraphic.cullingChanged", this); onCullStateChanged.Invoke(cull); @@ -500,14 +513,14 @@ namespace Coffee.UIExtensions ? Time.unscaledDeltaTime : Time.deltaTime; - // Prewarm: + // Prewarm: if (0 < deltaTime && _prewarm) { deltaTime += main.duration; _prewarm = false; } - // Emitted particles found. + // Emitted particles found. if (_prevParticleCount != _particleSystem.particleCount) { var size = _particleSystem.particleCount; @@ -593,4 +606,4 @@ namespace Coffee.UIExtensions s_Mpb.Clear(); } } -} \ No newline at end of file +}