Repository navigation
Releases: FPSMasterTeam/FPSMaster-Extreme
Release list
Extreme 1.0.0
release: 1.0.0 — vanilla-parity lighting, world-gen relight, stained glass
Product version moves to plain semver starting at 1.0.0. This is a version
bump only: the client still targets Minecraft Java 1.8.9 / protocol 47, and
the extension API contract stays at 0.3.0 (manifest.rs NATIVE_API_VERSION),
so mods declaring api = "^0.3" are unaffected.
Rendering fixes in this release:
- Shading was applied in linear space. The atlas is sampled as Rgba8UnormSrgb
and the swapchain re-encodes, but the vertex colour (biome tint x face shade
x AO) and the lightmap were multiplied in linear anyway, effectively raising
every multiplier to ~1/2.2 — the 1.0/0.8/0.6/0.5 face-shade ladder rendered
as 1.0/0.90/0.79/0.73 and the darkest AO corner as 0.67 instead of 0.40.
The combined multiplier is now sRGB-decoded once before it scales the linear
texel, as ui.wgsl already did. Sky/horizon/sunset constants are converted at
the same boundary. This also fixes grass top vs side disagreeing. - Distance fog defaulted off, leaving a hard edge at the render boundary.
- Brightness defaulted to 0.5; vanilla's slider defaults to 0.0 ("Moody").
- Generated single-player worlds never ran a sky-light flood — only the
per-column vertical cast — so ground under a tree canopy sat at sky 0 where
vanilla has ~13. World::light_generated_column adds bounded sky and block
light floods, seeded from the new column plus its neighbours' border strip
so the cost is O(column), not O(loaded world). Measured +0.21 ms/column.
Generator-placed emitters are now seeded too. - Stained glass rendered as a multiply colour filter that ignored the texel
alpha and folded the face shade into the filter: red glass darkened the view
behind it to ~0.23 vs vanilla ~0.47, black glass was effectively opaque, and
the pane vanished against a dark background. The translucent layer now uses
vanilla SRC_ALPHA/ONE_MINUS_SRC_ALPHA, matching the greedy path. Water, ice,
portal and slime share the layer and change with it. The per-blockalpha
overrides in blocks.json are removed — vanilla carries translucency entirely
in the texture alpha, so they double-applied. - East-west pane arms sampled the empty columns of glass_pane_top_* (opaque
only in columns 7-8) because vanilla's "y": 90 blockstate rotation was not
reproduced; the mesher now does it. - Fast graphics wrote fully transparent texels as solid black (REPLACE drops
alpha); those pipelines alpha-test now.
Verified: 463 tests pass, clippy clean (no new warnings). The rendering
changes have NOT been verified against a real rendered frame.
Co-Authored-By: Claude noreply@anthropic.com
Extreme 0.3.1
Merge remote-tracking branch 'origin/main' into fix/extreme-ci-macos-build
Extreme 0.3.1
perf(ui): render HUD as GPU glyph-atlas quads instead of CPU rasterize
Replace the per-layer CPU software rasterizer (a full-screen RGBA buffer
rasterized and re-uploaded every frame) with a batched textured-quad
renderer. UiFrame::tessellate emits quads in command order, starting a new
draw call whenever the sampled atlas changes so painter's ordering stays
exact; a shared 1x1 white texel backs rects/gradients/lines, the font
sheets back text, and the GUI/item/block atlases and favicons back images.
Font layout (§ codes, bold/italic/shadow, advances) is factored into
Font::layout, which emits glyph quads instead of blitting pixels; the CPU
Font::draw path stays for nametag/sign world-space text.
This removes the ~16ms/frame "cpu prepare" spike the debug overlay caused:
its volatile text defeated the layer cache, forcing a full re-rasterize and
full-screen re-upload every frame. Opaque text/images stay pixel-identical;
semi-transparent fills now blend in linear space (see shader/ui.wgsl).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Extreme 0.3.1
ci(release): fail the build if a tarball bundles mods/ or sdk/
package-launcher.sh already excludes the dev-only extensions (mods/, incl. a
scaffold/auto-aim cheat) and the extension SDK (sdk/). Add a CI guard that
inspects each built tarball and hard-fails if either ever creeps back in, so a
future regression can't ship them to end users. package.ps1 and the workflow
itself don't add them; this locks the invariant at the CI level.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Extreme 0.3.1
build(release): stop bundling dev-demo extensions + SDK in the launcher package
package-launcher.sh shipped mods/ and sdk/ in every release tarball. mods/ holds
only development demos — including scaffold_demo, an auto-aim + auto-place cheat —
which must not reach end users (ban risk), and the rest are just API examples;
sdk/ is the extension developer kit. Ship only the binary + resourcepacks/. End
users add their own extensions to a mods/ dir they create (the client loads none
gracefully when it's absent).
Verified: the produced tarball now stages just fpsmaster_app + resourcepacks/.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Extreme 0.3.1
Merge pull request #2 from FPSMasterTeam/fix/extreme-ci-macos-build
fix(ci): macOS bash 3.2 empty-array build failure