Rhino 8.33 regression: GH annotation previews re-resolve on every solve

Hi McNeel team,

We are experiencing a severe performance regression in Rhino 8.33 (8.33.26188.13001, 2026-07-07) affecting Grasshopper definitions that preview Rhino-native annotation objects (Model Text Entity, Hatch, Linear Dimension, Leader, etc.). Reverting to 8.32 (8.32.26160.13001) completely resolves the issue. Reproduced on multiple machines (Windows 11, Japanese locale).

Symptoms

  • Our production GH definition (a drawing-layout generator, ~930 components) creates roughly 60 native annotation objects arrayed over 9 layout frames (~260 annotation instances total), collected into a Merge param whose preview is enabled.
  • In 8.33, every solution — opening the file, internalising a Brep, or changing any slider/value list — freezes Rhino for 45–52 seconds. The command line repeatedly shows the Make2D/region-analysis progress messages (“Resolving curve end points… / Making graph…”, Japanese UI: 「曲線の端点を解決中… / グラフを作成中…」) — 264 pairs of these messages per solution.
  • Annotation text placement is also subtly wrong in 8.33 (text positions shift); this is fixed in 8.32 as well.
  • In 8.32 the identical definition solves and previews instantly (as it always had).

What we isolated

  • The slowdown is not in the solver. Sum of all components’ ProcessorTime is ~4.2 s while wall-clock is ~50 s. The remaining ~45 s happens outside SolveInstance, in the display/preview pipeline after each solution.
  • Setting the GH document’s PreviewMode to Disabled drops the time from ~50 s to ~2.2 s.
  • Hiding one single Merge param (the one holding the ~58 ModelObject goo items feeding a Content Cache) also drops it to ~2.0 s. Un-hiding it brings the 50 s back.
  • Make2D components are unrelated: locking them, setting AutoCompute=false, or even disconnecting all their wires changes nothing.
  • The per-item re-resolution appears to run for every annotation instance on every solution, even when the data is unchanged upstream — i.e., the preview geometry of ModelObjects no longer appears to be cached between solutions in 8.33.

Minimal reproduction outline

  1. In Rhino 8.33, create a GH definition that generates a few hundred Model Text Entities (and/or Hatches / Linear Dimensions), merge them into one param with preview enabled.
  2. Change any upstream slider.
  3. Observe: each solution triggers a long freeze with repeated “Resolving curve end points… / Making graph…” messages proportional to the number of annotation instances.
  4. Repeat in 8.32: instant.

Expected behavior

Preview resolution of ModelObject annotations should be cached/reused as in 8.32, instead of being fully re-resolved for every instance on every solution (and every re-display).

This regression makes annotation-heavy GH drafting definitions unusable in 8.33, and we have had to roll back an entire team to 8.32 and disable updates. Happy to provide a stripped-down repro file or run test builds if helpful.

Thanks!


Rhino 8 SR32 2026-6-9 (Rhino 8, 8.32.26160.13001, Git hash:master @ 2804b73b0f4b4feba10cb8b0b07c18fce290de93)
License type: Commercial、ビルド 2026-06-09
License details: Cloud Zoo

Windows 11 (10.0.26200 SR0.0) or greater (Physical RAM: 31GB)
.NET 8.0.26

Computer platform: LAPTOP - Plugged in [91% battery remaining]

Non-hybrid graphics configuration.
Primary display and OpenGL: NVIDIA GeForce RTX 5070 Laptop GPU (NVidia) Memory: 8GB, Driver date: 3-4-2026 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 595.79

Integrated accelerated graphics device with 4 adapter port(s)

  • Windows Main Display is laptop’s integrated screen or built-in port
  • Secondary monitor attached to adapter port 1
    Primary OpenGL: NVIDIA GeForce RTX 5070 Laptop GPU (NVidia) Memory: 8GB, Driver date: 3-4-2026 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 595.79

Integrated accelerated graphics device with 4 adapter port(s)

  • Windows Main Display is laptop’s integrated screen or built-in port
  • Secondary monitor attached to adapter port 1

Secondary graphics devices.
Intel(R) Graphics (Intel) Memory: 2GB, Driver date: 11-26-2025 (M-D-Y).

Integrated graphics device with 4 adapter port(s)

  • There are no monitors attached to this device. Laptop lid is probably closed

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
GPU Tessellation is: On
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 4x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 3-4-2026
Driver Version: 32.0.15.9579
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 8151 MB

Rhino plugins that do not ship with Rhino
C:\Users\ohno\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Rhino-MCP-Platform\0.1.5\net8.0\RhinoMcpPlatform.rhp “RhinoMcpPlatform” 0.1.5.0
C:\Program Files\Enscape\Bin64\Enscape.Rhino8.Plugin.dll “Enscape.Rhino8.Plugin” 0.0.23328.1419

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8\Plug-ins\Commands.rhp “Commands” 8.32.26160.13001
C:\Program Files\Rhino 8\Plug-ins\WebBrowser.rhp “ウェブブラウザ”
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\RhinoScript.rhp “RhinoScript”
C:\Program Files\Rhino 8\Plug-ins\IdleProcessor.rhp “アイドルプロセッサ”
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhinoレンダー” 8.32.26160.13001
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.32.26160.13001
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.32.26160.13001
C:\Program Files\Rhino 8\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.32.26160.13001
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.32.26160.13001
C:\Program Files\Rhino 8\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 8.32.26160.13001
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.32.26160.13001
C:\Program Files\Rhino 8\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”

Hi 大野剛,

Thanks for the detailed report, this is one of the best isolation write-ups we’ve seen and it made the trace straightforward.

This lines up with a change that shipped in 8.33 for RH-96024 (GH annotation bounding boxes were wrong). The fix computes the preview bounding box by exploding each text/dimension/leader down to its outline curves, and that runs for every annotation instance on every solution — the 曲線の端点を解決中… / グラフを作成中… messages you’re seeing come from that outline cleanup step. That’s why hiding the one param or disabling preview brings your times right back.

i was able to measure it here as well — the bounding box call on a previewed annotation runs ~1000x slower than the plain one it replaced, scales linearly with the count, and Japanese text costs about 4x more than latin per instance since the glyph outlines are more complex.

i’ve filed RH-97188 for the performance regression and added this thread to it.

For now staying on 8.32, or disabling preview on the annotation params in 8.33, is the right call. If you can post that stripped-down repro file here i’ll attach it to the issue — it always helps the fix along. Thanks!

RH-97188_Repro_AnnotationPreview.gh (5.9 KB)

Thank you for the quick and thorough analysis — knowing the root cause

(RH-96024’s bounding-box change) and having it tracked as RH-97188 is

very helpful.

The ~4x cost for Japanese glyphs matches our experience exactly: our

production definitions are Japanese-text-heavy drawing tools with

hundreds of Japanese annotation instances, which explains why the

impact was so severe for us (~45-50 s per solution).

I’ve attached a stripped-down repro: a COUNT slider generates 300

Japanese text entities (as Model Objects) merged into a single

previewed Merge component — the same structure as our production file.

It also has an UNRELATED slider wired only to a panel: on 8.33, moving

even that slider should re-resolve all annotation previews. Repro

steps are in a panel inside the definition. It was authored on 8.32

(our whole team has rolled back), but it should open fine in 8.33.

We’ll stay on 8.32 until the fix ships — happy to test a service

release candidate once RH-97188 lands. Thanks again!

RH-97188 is fixed in Rhino 8 Service Release 35 Release Candidate