Skip to content

Restore fast item rendering and remove animation-toggle stalls - #37

Open
dsnsgithub wants to merge 1 commit into
claude/1-7-animations-mod-refactor-n11g5tfrom
codex/fix-pr28-render-performance
Open

dsnsgithub wants to merge 1 commit into
claude/1-7-animations-mod-refactor-n11g5tfrom
codex/fix-pr28-render-performance

Conversation

@dsnsgithub

Copy link
Copy Markdown
Owner

Targets #28.

The cleanup in #28 restores two vanilla glint passes for enchanted block items and replaces the previous flat GUI glint overlay. Those paths also expose repeated sprite-quad filtering allocations. Separately, the new master switch triggers a full resource reload even though both trapdoor variants are already baked.

This follow-up restores the previous GUI/block glint behavior while 1.7 Animations is enabled: block items skip glint and GUI items use the previous overlay, now batched into one draw without temporary models or vertex arrays. Switching the mod off restores vanilla glint. The reduced menu stays intact; no removed glint settings are reintroduced.

It also caches south-facing sprite quads on ordinary baked models (dynamic/custom models bypass caching; replacement lists and resource reloads invalidate it) and removes the full resource reload on animation/trapdoor toggles. Effective potion-color changes still invalidate their cache.

Validation

  • ./gradlew :1.8.9:build --offline passes, including compilation, license checks and access-widener validation.
  • DOLPHIN_RENDER_TESTS=1 ./gradlew :1.8.9:runClient --offline passes on a headless OpenGL display: layered/empty/dynamic geometry, cache reuse/replacement, wooden and iron trapdoor selection, master-toggle/potion-color behavior, and explicit resource reloads.
  • Actual glint-pass checks verify enabled/disabled behavior for GUI and held items. The batched GUI overlay matches the pre-Reduce the 1.7 tab to a single 1.7 Animations mod #28 renderer pixel-for-pixel at five animation phases, with restored depth state and no OpenGL errors.
  • Sequential rendering comparisons used base 591f42dd5, PR Reduce the 1.7 tab to a single 1.7 Animations mod #28 head dd2ce3fb0, JDK 25, Mesa llvmpipe with one rendering worker, default resources, and 1,000 warmup + 1,000 measured batches per case. Nine enchanted block items fell from 395.21 µs to 115.70 µs median per GUI batch (about 71%). Nine enchanted swords fell from 7,848 B to 792 B allocated per batch; plain swords from 2,880 B to 720 B.
  • The isolated sprite-filter test measured 304 / 1,072 / 4,144 B per call → 0 B on warm cache hits for synthetic 66-/258-/1,026-quad models.
  • Confirmed that the release JAR excludes the test harness and test mixins. Reproduction instructions and measurement limits are in versions/1.8.9/src/test/README.md.

These are rendering microbenchmarks, not a general FPS multiplier. They identify and remove specific costs, but the full reported gameplay regression still needs verification on the user's GPU with the same world, resource pack and Dolphin Optimized modpack.

Batch the previous GUI glint overlay, skip block glint while 1.7 Animations is enabled, and cache static sprite quads. Select already-baked trapdoor models without reloading resources. Add in-client regression checks and rendering benchmarks.

Co-Authored-By: GPT-6 <codex@openai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant