Repository navigation
Port the renderer, installer and tools to Minecraft 26.3 - #79
AlexMelanFromRingo wants to merge 8 commits into
Conversation
600a95f to
c0d3235
Compare
Adapts the save-wide storage and diagnostic-title corrections from NVIDIA upstream PR NVIDIAGameWorks#79 follow-up 600a95f by Alex Melan. Also preserves this fork's existing 26.3 dimension data and blocks fallback overwrites for unreadable or future-schema files. Signed-off-by: danzrikonew2 <danzrikonew2@gmail.com>
Minecraft 26.1+ ships unobfuscated and Fabric no longer supports third-party mappings there, so move the mod to Mojang names first, while still on 1.21.1. - Sources, tests and the access widener remapped with Loom's migrateMappings / migrateClassTweakerMappings. - Mixin strings the remapper missed fixed by hand: the held-item descriptor constant, and @at targets on inherited methods (ServerGamePacketListenerImpl.send, BlockState.isSolidRender, BlockState.getRenderShape). - RenderSystem.flipFrame redirect marked remap = false: RenderSystem is not obfuscated, so Mojang mappings have no entry for it. - Test reflection on OptionInstance uses the Mojang field name. Verified: the remapped JAR matches the Yarn build class for class (only constant-pool indexes, synthetic names and lambda names differ), the refmaps resolve to the same intermediary targets, all 800 tests pass, and the demo world renders with the same terrain, entity, light and particle capture counts as 0.1.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Alex Melan <59925151+AlexMelanFromRingo@users.noreply.github.com>
Move the mod from Minecraft 1.21.1 to 26.3 on Fabric Loader 0.20.1, Fabric API 0.165.0+26.3 and Java 25. 26.x ships unobfuscated, so Loom 1.19 builds without mappings or a refmap and the access widener uses the official namespace. Frame and input: 26.x renders through renderpearl and SDL3. The OpenGL backend is forced (GL 4.5 core) because Remix interop imports its image into GL; presentation hooks GlSurface, input gating follows SDL events, and the Remix image is blitted into the main target with DSA. Terrain: sections are captured from SectionCompiler through RenderSectionRegion, from BlockStateModel parts and the BakedQuad record, whose layer is now per quad. Visibility now comes from LevelExtractor, so the 1.21.1 visibility-walk port and its far-section probe are removed. Entities: 26.x extracts render states and defers drawing through SubmitNodeCollector. RemixSubmitCollector evaluates submits into the Remix capture in place of vanilla's feature renderers, for entities, block entities, first-person hands and items, and the breaking crack. The Copper Beacon renderer follows the new BlockEntityRenderer API and articulates its model from the render state. Textures: glyph pages are mirrored from command-encoder writes, and animated sprites are forwarded from the animation tick, since 26.x animates sprites on the GPU. Every CPU atlas copy honours and fills the sprite padding 26.x adds; the Copper Beacon lens textures are 48 pixels square so they no longer cap the block atlas at one mip level. Content: the copper torch, copper wall torch and copper lanterns get block lights and flame emission. The Copper Beacon recipe, loot table and item definition use the 26.x data formats. Fixes found in game on 26.3: the atmospheric sky readback sets a tight pack state, as vanilla now leaves GL_PACK_ROW_LENGTH set; the block-entity atlas warm-up targets the chest atlas, since beds are block models in 26.x; a closed DynamicTexture is recognised by its closed image. Verified with gradlew build test (767 tests) and in game on 26.3 through a Prism instance: world load, terrain, block lights, sky, clouds, water, entities, particles, held items and thrown items. The installer and the Python developer tooling still target 1.21.1 and are not updated here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Alex Melan <59925151+AlexMelanFromRingo@users.noreply.github.com>
The installer pins Minecraft 26.3, Fabric Loader 0.20.1, Fabric API 0.165.0+26.3 and a new GAME_JAVA_MAJOR of 25. Its managed JDK is JDK 25: Adoptium Temurin on x64 and, since Adoptium builds no Windows ARM64 JDK 25, the Microsoft Build of OpenJDK on ARM64, verified against the SHA-256 file Microsoft publishes beside it. The Microsoft launcher's java-runtime-epsilon is probed first. Upgrading rewrites a Prism instance an earlier release set up for another Minecraft version to the pinned versions and Java major, warning that its worlds upgrade when they next open. Fabric installer 1.0.1 still produces the 26.3 profile, so it stays pinned. The developer tools require a JDK 25 for Prism, which accepts only Java 25 for 26.3 (compatibleJavaMajors), and a test keeps that major in step with the installer's. The diagnostic tools match a game window of any version rather than only a 1.x title. Zones saved by the 1.21.1 build in data/rtx_remix_zones.dat, which 26.x's own world upgrade leaves in place, are copied into the current file on the first lookup, and the state lives in the server's save-wide data storage so that file is data/rtx-remix-renderer/zones.dat as documented. Checks the 26.3 port had broken: the access widener carries its SPDX header again, fabric.mod.json pins the exact Minecraft version as before, and the build-configuration test reads the Loom plugin id 26.x uses. Docs name the 26.3 classes, events and file locations, drop the removed visibility-walk switches and invariant, and describe the new installer and JDK behaviour. Verified with gradlew build test (769 tests), tools\rtx.bat check --tests (ruff, ty, 1137 tests and the public-boundary gate), a parse of installer.ps1 in Windows PowerShell 5.1 and PowerShell 7, and the Fabric installer run headless against 26.3. The installer itself was not run end to end. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Alex Melan <59925151+AlexMelanFromRingo@users.noreply.github.com>
c0d3235 to
95d5b71
Compare
|
Thanks for this, and for splitting the mappings change out into #78 so each can be reviewed on its own. To answer your question directly: 26.3 won't replace 1.21.1 on The exact set of versions we'll support is still being decided, and it will be chosen based on community interest. If you'd like to weigh in, the RTX Remix Discord has a thread for it: https://discord.com/channels/1028444667789967381/1565060125301936169 Please keep the branch, and feel free to switch it to a draft for now. |
Brings in the installer's support for a Prism Launcher it does not detect (NVIDIAGameWorks#47). The new data-folder record sits beside the 26.3 version constants, and Initialize-Prism writes it before the version-neutral JVM defaults message. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Alex Melan <59925151+AlexMelanFromRingo@users.noreply.github.com>
Brings in the Fabric mesh fix (NVIDIAGameWorks#38) and the installer's support for a Prism Launcher it does not detect (NVIDIAGameWorks#47). build.gradle keeps Mojang mappings with NVIDIAGameWorks#38's shared Fabric Loader version, and NVIDIAGameWorks#38's Indigo integration test uses Mojang names: Bootstrap.bootStrap, SharedConstants.tryDetectVersion and BlockPos.ZERO. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Alex Melan <59925151+AlexMelanFromRingo@users.noreply.github.com>
Brings in the Fabric mesh fix (NVIDIAGameWorks#38) through NVIDIAGameWorks#78. On 26.3 terrain capture reads vanilla model parts and has no RemixRenderContext, so nothing hands an Indigo mesh a foreign emitter: the Indigo mixin, its quad copier and their integration test stay out. The fabricTest task and its shared Fabric Loader version stay, and may run with no tagged tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Alex Melan <59925151+AlexMelanFromRingo@users.noreply.github.com>
Brings in the end portal and gateway surfaces (NVIDIAGameWorks#68) and the lighting profile upgrade (NVIDIAGameWorks#57). NVIDIAGameWorks#68's code uses Mojang names: the end portal and gateway programs are RenderStateShard.RENDERTYPE_END_PORTAL_SHADER and RENDERTYPE_END_GATEWAY_SHADER, compared against CompositeState.shaderState, the bake reads textures through Resource.open and NativeImage.getPixelRGBA, and its tests draw with addVertex and setUv. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Alex Melan <59925151+AlexMelanFromRingo@users.noreply.github.com>
Brings in the end portal and gateway surfaces (NVIDIAGameWorks#68) and the lighting profile upgrade (NVIDIAGameWorks#57) through NVIDIAGameWorks#78. On 26.3 the surfaces are recognised by RenderPipelines.END_PORTAL and END_GATEWAY, which need no access widener; the bake reads end_portal.png from its 26.x folder, textures/entity/end_portal/, and takes NativeImage.getPixel's ARGB. The payload history records the 26.3 minecraft-logic README. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Alex Melan <59925151+AlexMelanFromRingo@users.noreply.github.com>
The README hopes the community takes on ports to newer versions; this is a port of the mod, its installer, its developer tools and its docs to Minecraft Java Edition 26.3. Whether 26.x should replace 1.21.1 on
mainor live on its own branch is the maintainers' call; the installer has not been run end to end yet (details below).This branch builds on #78 (migrate from Yarn to Mojang mappings on 1.21.1) and contains its commit; the review that matters here is the last two commits. It is rebased on
mainafter #77, #61 and #70; #70's newServerLightSnapshottests are ported to Mojang names and to 26.3, and the CHANGELOG keeps #61's entry.Port the renderer to Minecraft 26.3
Minecraft 26.x ships unobfuscated, renders through renderpearl and SDL3, and draws the world through an extract and submit pipeline, so most of the work is a port of APIs rather than names.
build.yml), access widener in the official namespace.GlSurface, the overlay input gate follows SDL events, and the Remix image is blitted into the main target with DSA.SectionCompilerthroughRenderSectionRegion, fromBlockStateModelparts and theBakedQuadrecord, whose layer is now per quad. Visibility comes fromLevelExtractor, so the 1.21.1 visibility-walk port is removed.RemixSubmitCollectorevaluatesSubmitNodeCollectorsubmits into the Remix capture in place of vanilla's feature renderers, for entities, block entities, first-person hands and items, and the breaking crack. The Copper Beacon renderer follows the newBlockEntityRendererAPI.GL_PACK_ROW_LENGTHset (about 20 GL errors a second otherwise); the block-entity atlas warm-up targets the chest atlas, since beds are block models in 26.x.Mixin targets are no longer checked at compile time on 26.x. Every mixin was checked against the 26.3 client JAR at the bytecode level: target methods,
@Atcall sites present in the target method, exact@Shadow,@Accessorand@Invokerdescriptors, and injector handler signatures (67 mixins, 148 injection targets).Move the installer, developer tools and docs to Minecraft 26.3
GAME_JAVA_MAJORof 25. The managed JDK is JDK 25: Adoptium Temurin on x64, and the Microsoft Build of OpenJDK on ARM64, where Adoptium builds no JDK 25, verified against the SHA-256 file Microsoft publishes beside it. The Microsoft launcher'sjava-runtime-epsilonis probed first. Upgrade moves a Prism instance an earlier release set up for 1.21.1 to the pinned versions and warns that its worlds upgrade when they next open. Fabric installer 1.0.1 still produces the 26.3 profile (checked headless), so it stays pinned.data/rtx_remix_zones.dat, which 26.x's own world upgrade leaves in place, is copied into the current file on first load, and the state lives in the server's save-wide storage so that file isdata/rtx-remix-renderer/zones.dat.fabric.mod.jsonpins the exact Minecraft version, and the build-configuration test reads the Loom plugin id 26.x uses.How it was verified
gradlew.bat build test: 769 tests pass. The suite is smaller than on 1.21.1 because the visibility-walk tests went with the code they tested; new tests cover the atlas padding fill, the lens textures and the 1.21.1 zone migration.tools\rtx.bat check --tests: ruff, ty, 1137 Python tests and the public-boundary gate pass.installer.ps1parses in Windows PowerShell 5.1 and PowerShell 7.Not verified
🤖 Generated with Claude Code