
Smoothgl
Honest micro-stutter fixes for 1.21.4 Fabric: frame pacer, raycast occlusion, entity/particle/name-tag/beacon culling, GC watcher, JIT warmup, network input-lag tuner, adaptive auto-tuner, real-time stutter profiler with telemetry HUD. Честные фиксы микро
Tags
Creators
Details
V7
Compatibility
Required content
Changes
🚀 SmoothGL V7-Stable — Official Patch Notes / Официальный Патчноут
English version below / Русская версия ниже
🇺🇸 English Changelog In this update, we conducted a total codebase sweep (4 stages of deep code audits), fixed complex fatal crashes, and added custom features from our team!
🛠️ Critical Fixes (Crashes) CAUTION
FATAL ERROR: OpenGL Background Thread Crash A past agent added java.lang.ref.Cleaner to automatically clean up GlBuffer and GlVertexArray memory. However, OpenGL strictly forbids deleting resources outside the render thread! This caused hard JVM crashes. We completely ripped the Cleaner out of low-level classes, fixing the crash entirely.
WARNING
BufferOverflowException on RTX 5050 (PulseVisuals) The mod tried to overwrite the Windows command line to enable NVIDIA driver optimizations, but the buffer overflowed due to the short command line of the PulseVisuals launcher. We rewrote the workaround to gracefully skip this step if the buffer is too small, allowing the game to launch successfully.
🧊 Rendering & Graphics Fixed "Broken" Translucent Glass (Translucent Culling Bug): We discovered that the built-in IntervalTree library (used for sorting transparent blocks) was fundamentally broken.
Deleted glass faces remained in memory as "ghosts". The algorithm returned reversed booleans (Set Contract Violation). We rewrote the library: replaced the slow legacy Stack with a fast ArrayDeque and fixed the logic. Glass, ice, and water layers now render perfectly smoothly without missing faces. Restored Custom Blocks (NeoForge): The NeoForge port aggressively canceled standard block rendering (ModelBlockRendererMixin). This made mechanisms from Create or Xaero's Minimap waypoints completely invisible. We added the missing isVanillaAdapter() check, restoring full support for third-party mods!
⚙️ UI Optimization & Concurrency TIP
Smooth Settings without Micro-Stutters Previously, closing the settings menu caused the game to stutter because the mod synchronously saved the JSON config file on the UI render thread. We wrapped the saving process in CompletableFuture.runAsync(). The menu now closes instantly while the config writes in the background!
Data Race Protection: In SodiumGameOptions, the chunk builder thread settings were read asynchronously without thread protection. We added the volatile modifier to all parameters, completely eliminating the risk of ConcurrentModificationException when changing settings on the fly. 💎 Team_brat Exclusives We embedded a branded section right into the mod's graphics menu!
Появилась новая вкладка "SmoothGL (Team_brat)", содержащая уникальные переключатели:
Pulse Engine Boost: Optimization tailored specifically for the PulseVisuals launcher. Aggressive Memory Unloading: Keeps RAM usage at a minimum by utilizing an aggressive garbage collector upon world unloads. Strict Glass Sorting: A toggle for our newly fixed, highly accurate transparency algorithm. 🇷🇺 Русский Патчноут В этом обновлении мы провели тотальную зачистку архитектуры мода (4 стадии глубокого аудита кода), исправили сложнейшие краши и добавили кастомные фишки от нашей команды!
🛠️ Критические исправления (Краши и Вылеты) CAUTION
FATAL ERROR: OpenGL Background Thread Crash Один из прошлых агентов добавил java.lang.ref.Cleaner для автоматической очистки памяти буферов (GlBuffer, GlVertexArray). Но OpenGL строго запрещает удалять ресурсы вне потока рендеринга! Из-за этого игра намертво вылетала (Fatal JVM Crash). Мы вырезали Cleaner из низкоуровневых классов, полностью устранив этот вылет.
WARNING
BufferOverflowException на RTX 5050 (PulseVisuals) Мод пытался подменить командную строку Windows для включения оптимизаций NVIDIA, но буфер переполнялся из-за особенностей лаунчера PulseVisuals. Мы переписали хак: теперь мод мягко пропускает этот шаг, если места в буфере не хватает, позволяя игре успешно запускаться.
🧊 Рендеринг и Графика Фикс "сломанного" полупрозрачного стекла (Translucent Culling Bug): Мы обнаружили, что встроенная библиотека IntervalTree, отвечающая за сортировку прозрачных блоков, была насквозь дырявой.
Удаленные грани стекла оставались в памяти как "призраки". Алгоритм неправильно отвечал на проверки добавления/удаления (Set Contract Violation). Мы переписали библиотеку: заменили медленный Stack на ArrayDeque и исправили логику. Теперь слои стекла, льда и воды отрисовываются идеально ровно, без исчезающих граней. Возвращение кастомных блоков (NeoForge): Порт под NeoForge слишком агрессивно отменял стандартный рендер блоков (ModelBlockRendererMixin). Из-за этого механизмы из Create или вейпоинты Xaero's Minimap были тупо невидимыми. Мы добавили проверку isVanillaAdapter(), вернув поддержку сторонних модов!
⚙️ Оптимизация интерфейса и Многопоточности TIP
Плавные настройки без микро-фризов Раньше при закрытии меню настроек игра "заикалась", потому что мод синхронно сохранял JSON-файл прямо в потоке отрисовки кадров. Мы обернули сохранение в CompletableFuture.runAsync(). Теперь меню закрывается мгновенно, а конфиг пишется в фоне!
Защита от состояния гонки (Data Race): В SodiumGameOptions настройки количества потоков (Chunk Builder Threads) читались асинхронно без защиты. Мы добавили модификатор volatile ко всем параметрам, навсегда убрав риск ConcurrentModificationException при смене настроек "на лету". 💎 Эксклюзив от Team_brat Мы внедрили фирменный раздел прямо в графическое меню мода!
Появилась новая вкладка "SmoothGL (Team_brat)", содержащая уникальные переключатели:
Pulse Engine Boost: Оптимизация специально под лаунчер PulseVisuals. Aggressive Memory Unloading: Удержание потребления ОЗУ на минимальном уровне за счет агрессивного сборщика мусора при выгрузке локаций. Strict Glass Sorting: Переключатель того самого точного, исправленного алгоритма прозрачности. Build / Сборка: SmoothGL-V7-Stable.jar Version / Версия: Minecraft 1.21.4 (Fabric/NeoForge)
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:aAWPNtd6:whnYVRFd"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:aAWPNtd6:whnYVRFd"
}
