
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
0.6.13
Compatibility
Required content
Changes
SmoothGL V5 — Performance & Stability Update (Modrinth Changelog)
🔧 Fixes & Optimizations
1. FogRenderer crash fix
- Updated
setupFogmixin injection signature for Minecraft 1.21.4 - Disabled vanilla fog by forcing extremely large fog distances (
999999.0f)
2. Thread-safety improvements — PipelineTrace
-
Replaced
HashMapwithConcurrentHashMapforchunkStates -
Replaced counters with
AtomicLong -
Added cleanup of
chunkStatesentries afterRENDER_SUBMITTED- Prevents unbounded memory growth
- Reduces GC spikes and long pauses
3. Hot path optimization — Double-Checked Locking
Implemented volatile + DCL singleton access for:
GeometryKernelPipelineTraceParticleCullingSystemSmoothGLDecisionEngineStabilityLayerFrameBudgetControllerSmoothGLControllerSmoothGLApiRenderImpactProfiler
Additional changes:
- Removed unnecessary
synchronizedmethods from hot paths
4. Removed expensive logic from render hot paths
-
Removed per-face distance-based leaf LOD checks from
AbstractBlockRenderContext.isFaceCulled() -
Eliminated repeated:
getInstance()callsBlockPosallocationsinstanceofchecks per face
-
Sodium occlusion cache now handles inter-leaf culling more efficiently
5. Cached renderer references — BlockRenderer
Added cached fields:
cachedGeomcachedCullercachedLeafCullDistSq
References are now resolved once during prepare() instead of per-block rendering.
6. Debug overhead disabled
debugMode = falseby default across SmoothGL systems- Removed
System.out.printlncalls from rendering hot paths - Disabled unused
PipelineTrace.enable()initialization
Result:
- Lower CPU overhead
- Reduced console spam
- Better frame consistency
7. More aggressive performance tuning
GeometryKernel
leafCullDistance:24.0f(was32)simplificationDistance:48.0f(was64)- Enabled
alphaOverdrawReduction
ParticleCullingSystem
Enabled:
- Distance culling
- Frustum culling
Particle thresholds:
- Smoke:
32 - Rain:
48 - Default:
24
8. Particle culling restored
- Restored missing logic in
SingleQuadParticleMixin.renderRotatedQuad() - Particle culling works correctly again
9. Removed atomic operations from hot paths
- Removed
addAlphaOverdrawReduced(1)from leaf culling inBlockRenderer.renderModel() - Reduces synchronization overhead during chunk rendering
10. Leaf rendering fixes
Fixed issue where leaves would not appear until a neighboring block was updated.
Changes:
- Added explicit leaf-to-leaf checks in
AbstractBlockRenderContext.isFaceCulled() - Leaves now always render faces between each other
- Bypasses problematic occlusion behavior
11. Updated mod metadata
- Updated
fabric.mod.json - Added detailed feature descriptions for Modrinth/launcher display
🚀 Overall Results
- Lower CPU overhead in chunk rendering
- Reduced memory pressure and GC spikes
- Improved thread safety
- Better particle rendering performance
- More stable rendering pipeline on Minecraft 1.21.4
- Faster and more consistent frame times
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:OicD8Z7N"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:aAWPNtd6:OicD8Z7N"
}
