All versions
1.3.0-beta.2
Beta
GpuShift GPU V2 Beta 3 weeks ago 327
Compatibility
Minecraft: Java Edition
1.21.1
Platforms
Fabric
NeoForge
Supported environments
Client-side
Changes
GpuShift GPU V2 Beta
Highlights
- Added the new GPU Mob Layer for supported adult vanilla passive and neutral mobs.
- Mob animations are prepared on the CPU, while vertex transformations and instanced rendering are handled by the GPU.
- Added automatic batching by model, mesh, and texture to reduce entity draw calls.
- GPU rendering activates for distant mobs when at least four compatible models are visible.
- Added automatic model discovery, mesh caching, bone hierarchy extraction, and safe vanilla fallback.
- Unsupported entities, children, passengers, glowing or invisible mobs, damaged states, custom models, and modded entities remain on the vanilla renderer.
- Vanilla shadows, names, leashes, fire, armor, wool, saddles, and additional render layers remain fully supported.
- Added safe compatibility detection for shader, model, and texture replacement stacks.
- Added GPU Mob settings, status information, capture counters, fallback counters, batch counts, instance counts, and draw-call statistics to the GPU V2 interface.
Smart Calibration
- Replaced the basic Auto Tune toggle with a complete Smart Calibration system.
- Detects the current hardware, rendering environment, active resource packs, shader stack, resolution, render distance, and performance bottleneck.
- Tests particle density, entity distance, Block Entity distance, item-frame budgeting, GPU Particles, GPU Mobs, and Adaptive Mode independently.
- Automatically skips tests when the current scene does not contain enough relevant workload.
- Searches for the best combined configuration using up to 16 controlled probes.
- Validates the final recommendation using an alternating
A-B-B-Atest. - Tracks average FPS, 1% Low, p99 frame time, stability, and result confidence.
- Repeats invalid measurements when the player moves, rotates the camera, opens a screen, changes worlds, or loses window focus.
- Temporarily removes VSync and FPS limits during calibration, then safely restores the original settings.
- Trial settings remain runtime-only until the player presses Apply.
- Added recovery protection for interrupted or crashed calibration sessions.
- Saved calibration results are automatically marked as outdated after significant system or rendering changes.
GPU Mob Lighting Fix
- Fixed GPU-rendered mobs appearing completely black in darkness or when a shader mod was installed without an active shader pack.
- GPU Mob rendering now explicitly binds the vanilla lightmap and overlay textures.
- Added safe restoration of texture bindings and OpenGL state after every GPU batch.
- Added automatic vanilla fallback when required auxiliary textures are unavailable.
- Added the new fallback status:
AUX_TEXTURES_UNAVAILABLE. - Added a one-time log confirmation when the mob shader, texture, lightmap, and overlay bindings are ready.
Stability and Compatibility
- Added safe fallback for shader initialization failures, resource errors, unsupported render types, buffer overflow, and unavailable GPU resources.
- Resource reloads, dimension changes, disconnects, and world changes now clear and rebuild GPU Mob resources safely.
- Added protection against permanent mob disappearance after rendering or shader errors.
- Added support for Sodium and Embeddium rendering environments.
- Added SAFE and FORCE operating modes for GPU Mob rendering.
- Reduced runtime telemetry overhead outside active calibration.
Benchmark Results
- Average FPS improvement: +8.4%
- 1% Low FPS improvement: +14.0%
- Frame time improvement: approximately 0.16 ms
- Deep 0.1% Low frame drops did not worsen.
- Results were collected across three clean benchmark cycles and are included in the benchmark graph.
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:BpmMSdoc:wd06nh91"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:BpmMSdoc:wd06nh91"
}

