Angelica
426 merged pull requests.
Needs action on an existing world:
- [check your build] #1221 Angelica 2.0 alpha release introducing Celeritas rendering engine integration, Iris shader support, dynamic lighting improvements, and removal of Sodium 0.2 dependency. Includes multi-threaded mesh generation and FPS cap configuration.
Client-side only: nothing in your world changes. Check your custom Iris shader packs by re-testing them against the Celeritas renderer; your angelica-options.json is migrated in place by ConfigMigrator.- [check your build] #1412 Upgraded rendering backend to target OpenGL 3.3 core profile with emulation of the fixed function pipeline, enabling compatibility with modern systems.
Angelica now emulates the fixed-function pipeline on an OpenGL 3.3 core context, so mods that use it keep rendering. Check your custom shader packs and any GL-heavy addon by re-testing them; no config file has to be edited.
New Features
- #2047 Extended
TileOverridewith neighbor detection properties for CTM transitions, modifyingRenderBlockStateto track neighbor-influenced texture changes. - @Kremnari- Added: CTM transitions neighbor detection, neighbor-aware overlay properties
- #2046 Extended
GLStateManager,GLContextState,CommandRecorder,CommandBufferExecutor, and related FFP shader classes to handle GL secondary color state tracking and recording. - @KAMKEEL- Added: GL secondary color support, secondary color state management
- Fixed: Campfire Backport GL secondary color crashes
- Closes #2006
- #2020 Added
NaturalTextureUtilswith rotation logic and configurable block list, integrated hook intoAngelicaChunkBuilderMeshingTaskto apply rotations during chunk meshing, added configuration inAngelicaConfig. - @Wokafishh- Added: Natural texture rotation, NaturalTextureUtils, Block rotation config
- #1993 Major refactor: migrated build to support SDL GPU backend alongside LWJGL3, added
CaptureGate, shader transformation, and resource management classes for GPU rendering, integrated Tracy 0.13 profiling withSectionRegistryand Tracy hooks. Converteddependencies.gradleto Kotlin DSL asdependencies.gradle.kts. - @mitchej123- Added: SDL GPU backend, TESR batching/caching API, Tracy integration, GPU capture gate, Shader compatibility transformers
- Removed: Legacy dependencies.gradle
- #1989 Added a flag to
StateAwareTesselatorandMixinTessellatorto enable per-quad directional shading override, allowing ISBRH implementations to mix lit and unlit quad sections within a single block render. - @ah-OOG-ah- Added: Per-quad directional shading flag
- #1981 Introduces FallingBlockMetaAccess and FallingBlockRendering utilities, extends ItemMaterialHelper, adds shader mixins (MixinRenderBlocks_FaceNormals, MixinRenderFallingBlock, MixinRenderBlocks_ItemId) to set material IDs and adjust falling block lighting in pipeline. - @Eclipse-Sol
- Added: falling block material system, FallingBlockRendering utility
- Removed: MixinRenderBiped, MixinRenderPlayerArmor
- Fixed: falling block shader lighting, material ID for non-terrain blocks
- #1974 Adds RenderChunkEvent class and posts it from MixinRenderGlobal during chunk rendering, providing event-based extension point. - @Midnight145
- Added: RenderChunkEvent
- #1952 Adds MipmapStrategy, MipmapGenerator, and related utilities to implement RGSS sampling and modern mipmap generation. Updates AngelicaChunkRenderer and related rendering infrastructure to support new mipmap features; hooks anisotropic filtering configuration into NotFineGameOptionPages. - @Eclipse-Sol
- Added: RGSS mipmap blending, mipmap strategy framework, anisotropic filtering GUI integration
- Fixed: mipmap distance artifacts
- #1936 Added ExtCeleritasRenderBlocks interface and mixin hook to allow mods to opt-in to Celeritas AO rendering. - @tiffit
- Added: ExtCeleritasRenderBlocks API interface
- #1931 Added ICTMBlock interface, expanded BlockOrientation API, enhanced CTMUtils, and improved TileLoader and PropertiesFile for better CTM data access. - @SuperSoupr
- Added: ICTMBlock interface, CTM integration API methods
- #1927 Added FfpExtendedAttribs for POM texture coordinate handling, extended display list VBO support for additional attributes, added ImmediateExtendedAttribHandler for immediate mode rendering, and enhanced shader integration. - @Eclipse-Sol
- Added: POM (Parallax Occlusion Mapping) support, FfpExtendedAttribs for extended vertex attributes, ImmediateExtendedAttribHandler, improved labPBR support
- Fixed: entity scrambling with POM enabled
- #1907 Modified BlockOrientation and CompactCtmQuadProcessor to decouple block face from rendered face, with face flipping logic applied during rendering. - @tiffit
- Added: face decoupling in Compact CTM
- #1904 Extended FontStrategist to scan fontfiles/ and config/angelica/fonts/ directories for .ttf/.otf files and register them with Java's GraphicsEnvironment for use in font selection. - @GribanovIvan
- Added: bundled font file loading from fontfiles/ and config/angelica/fonts/, font file registration with GraphicsEnvironment
- Fixed: font loading on headless/macOS systems
- #1897 Added ShaderSearchEngine and OptionMenuContainer for filtering shader options, updated HeaderEntry widget, and fixed static translation field loading to refresh on language changes. - @SpacEagle17
- Added: shader settings search functionality, OptionMenuContainer for option grouping, ShaderSearchEngine for filtering, shader pack selection centering
- Fixed: translation string caching on language change
- #1892 Added EndFlashCompat and EndFlashStorage classes to manage end flash state. Extended WorldRenderingPipeline, PackDirectives, ShaderProperties, ShadowMatrices, CelestialUniforms, and IrisExclusiveUniforms to support end flash uniforms. - @Eclipse-Sol
- Added: end flash uniforms, end flash compatibility layer
- #1890 Extended Zoom class with smooth zoom capabilities and added corresponding GUI options in NotFineGameOptionPages and SodiumGameOptionPages. Updated EntityRenderer mixin to support smooth zoom transitions. - @Caedis
- Added: smooth zoom option
- #1854 Created PixelUnpackState and PixelDataSnapshot classes to track pixel store parameters within display list commands; updated DisplayListManager, CommandRecorder, and texture command classes (TexImage2DCmd, TexSubImage2DCmd) to record and replay pixel store state; added comprehensive unit tests. - @mitchej123
- Added: glPixelStore support in display lists, PixelUnpackState tracking, PixelDataSnapshot command
- Removed: legacy pixel store implementations in backends
- Fixed: Xaero's World Map crash from glPixelStorei in display lists
- Closes #1851
- #1853 Extended ModStatus, IrisExtendedChunkVertexEncoder, BlockMaterialMapping, and ItemMaterialHelper to recognize and support NEID and EID extended metadata in shader rendering. - @Eclipse-Sol
- Added: extended metadata support for NEID and EID
- #1845 Implemented glTexParameter emulation in GLStateManager and TextureInfo to support automatic mipmap generation via GL_GENERATE_MIPMAP on core profile. - @mitchej123
- Added: GL_GENERATE_MIPMAP emulation for core profile
- #1843 Introduced ClientEvent and ClientEventType classes to provide an event system emulating LiteLoader's event firing behavior, integrated with HUDCaching and Minecraft iconify guard. - @Midnight145
- Added: ClientEvent framework, ClientEventType enum
- #1840 Created CTMTextureGenerator and GeneratedCTMAtlasSprite classes to support runtime generation of 47 CTM variants from a compact 5-texture set; modified TileOverride and TileLoader to handle the new mode. - @tiffit
- Added: compact_expanded CTM mode, CTMTextureGenerator class, GeneratedCTMAtlasSprite class
- #1836 Extended MixinRenderDragon to allow shaders to distinguish and target dragon death ray rendering separately from other dragon entity rendering. - @Eclipse-Sol
- Added: separate entity ID targeting for dragon death rays
- #1828 Enhanced Iris shader menu UI classes (IrisGuiSlot, ShaderPackOptionList, ShaderPackSelectionList, etc.) with sound effects, option value coloring, unsaved change highlighting, keyboard shortcuts (Ctrl-D/G toggle), drag-and-drop support, scrollable names, and new visual elements. - @Eclipse-Sol
- Added: button sound effects, option value coloring, keyboard shortcuts (Ctrl-D/G), drag-and-drop support, shader download button, highlight box for shader selection, scrollable long names
- Fixed: scrollbar stickiness, slider format errors, shader setting string casing issues, clickable buttons behind menu elements, missing comment display
- #1815 Extended
BlockMaterialMappingandFlatteningMapto handle double-tall plants correctly, updated chunk builder to process both plant halves. - @Eclipse-Sol- Added: double-tall plant material mapping
- Fixed: double-tall plant rendering
- #1814 Modified
SelectionBoxRendererto use Iris shader pipeline similar to cloud rendering, allowing block outlines to render correctly with advanced shader packs. - @Eclipse-Sol- Added: Iris integration for block outline shader
- Fixed: block outline rendering with Iris shaders
- #1808 Created
CubicChunksAPIcompatibility layer, updated chunk tracker to remove Y limits, modifiedAngelicaChunkTrackerandCeleritasWorldRendererto use CC chunk sections, added tile map wrapping, and added vertical view distance video option. - @RecursivePineapple- Added: CubicChunksAPI compatibility, vertical view distance setting, CC chunk section support
- Removed: old ChunkTrackerAccessor interface, Y-axis limits in chunk logic
- Fixed: Cubic Chunks compatibility
- #1806 Created
RenderHandEventclass and integrated it intoHandRendererto allow cancellation of hand rendering via shader logic. - @Caedis- Added: RenderHandEvent
- #1793 Rewrote
CloudRendererwith newCloudEdgesandCloudUniformsclasses, addedShaderColorChangeEventfor state synchronization, integratedIrisGLSMBridgecolor updates, and added cloud program to Iris pipeline. - @mitchej123- Added: CloudEdges class, CloudUniforms class, ShaderColorChangeEvent, cloud shader rendering support in Iris
- Fixed: cloud rendering with Iris shaders
- #1787 Extended Iris deferred rendering pipeline to support
gbuffer_lightningrender condition, added correspondingProgramIdand mixin hooks inMixinRenderDragonandMixinRenderManagerfor entity lighting rendering. - @Eclipse-Sol- Added: gbuffer_lightning program support, lightning rendering to deferred pipeline
- #1771 Implemented NbtConditionalIdMap and PropertiesTokenizer to parse NBT conditions in block/item entries (e.g.,
flower_pot:1[Item=minecraft:red_flower,Data=0]). Integrated into block rendering pipeline. - @Eclipse-Sol- Added: NbtConditionalIdMap, PropertiesTokenizer, NBT block/item matching
- #1761 Added BobviewMode enum and configuration to Settings and integrated into Sodium video options, with corresponding mixin in EntityRenderer. - @Apis035
- Added: view bobbing mode selection, hand-only bobbing option, camera-only bobbing option
- #1754 Extended font rendering color codes to support &u toggle for drop shadows and &u&#RRGGBB for custom shadow colors. Modified BatchingFontRenderer, ColorCodeUtils, config, and FontRenderer mixin. - @alppp
- Added: per-segment drop shadow (&u code), custom shadow color support (&u&#RRGGBB), text effects config option
- #1710 Added EmissiveTextureAutoloader and EmissiveTextureHelper classes to detect and apply emissive overlays; integrated into rendering pipeline via mixin. - @VortexSo4
- Added: automatic emissive texture loader, emissive texture helper, emissive texture mixin
- #1708 Added ModStatus check for CosmeticArmorReworked and integrated it into DynamicLights entity light source detection. - @Caedis
- Added: cosmetic armor dynamic lights support
- #1696 Extended block targeting in RenderBlocksUtils and BlockRenderingSettings to support snow-covered block variants. Updated IdMap and DeferredWorldRenderingPipeline to handle snowy block properties. - @Eclipse-Sol
- Added: Snow-covered block CTM support
- #1680 Added FOVMode enum with three states in Settings and ClientProxy to control vanilla vs mod FOV behavior. Updated access transformers and language file. - @MellowArpeggiation
- Added: Three-state FOV mode option, FOVMode enum
- #1673 Implemented iris_alphaTestPass() supporting all GL alpha test modes. Added iris_currentAlphaFunc uniform and AlphaStateChangeEvent for reactive updates. Connected state notifiers in IrisGLSMBridge. - @Kai-Z-JP
- Added: iris_alphaTestPass() function, iris_currentAlphaFunc uniform, AlphaStateChangeEvent
- Fixed: Alpha test compatibility with all GL functions
- #1669 Implemented RGB color system in BatchingFontRenderer and ColorCodeUtils with support for gradient, rainbow, wave, and dinnerbone effects. Added config toggles for enableRGBColors, enableTextEffects, and enableAmpersandConversion. - @alppp
- Added: RGB color support, Color gradient effects, Rainbow and wave text animations, Dinnerbone text effect, Color code utilities
- #1642 Created new umbra subproject containing standalone GLSM mod with dependency verification and ecosystem narrowing rules. Refactored Angelica to use Umbra as a dependency. - @mitchej123
- Added: umbra subproject with standalone GLSM, DependencyVerifier for ecosystem verification, EcosystemNarrowRules for transformer narrowing, TransformerNarrower for ecosystem-aware transformer loading
- #1636 Ported CompactCtmQuadProcessor from Continuity mod to handle compact CTM with TileOverride system, added CompactConnectingCtmProperties to parse compact CTM configuration. - @VortexSo4
- Added: CompactCtmQuadProcessor for 5-texture CTM method, CompactConnectingCtmProperties configuration parser, Compact CTM support in CTMUtils
- #1635 Introduced FlatteningMap and EntityFlatteningMap classes to map modern block states and entities to legacy metadata values, updated IdMap and BlockMaterialMapping to use these mappings. - @Eclipse-Sol
- Added: FlatteningMap class with modern-to-legacy block mapping, EntityFlatteningMap class with entity flattening
- #1631 Refactored LegacyIdMap to auto-generate legacy block/item ID mappings using 1.7.10 data instead of hardcoding every namespaced-to-numeric ID conversion. - @Eclipse-Sol
- Added: Automated legacy ID collection from 1.7.10
- Removed: Hardcoded legacy ID mappings
- #1628 Ported shadow_water pipeline stages from upstream Iris to CeleritasTerrainPipeline and related classes, enabling translucent shadow passes for photon shaders. - @DarkShadow44
- Added: Shadow translucent rendering pass, Shadow water support for photon shaders
- Fixed: Water rendering on photon shaders (HIGH quality)
- #1626 Extended IdMap and LegacyIdMap to load block.properties, and added configuration option in AngelicaConfig to enable modern block property loading for photon shaders. - @DarkShadow44
- Added: Modern block properties loading, Configuration option for block.properties
- #1605 Created DeferredEntityOverlay class and added mixins to RenderGlobal, RenderWither, RenderCreeper, and RendererLivingEntity to defer entity overlay rendering until after the main entity pass. This prevents z-fighting and allows rendering entities behind auras. - @Eclipse-Sol
- Added: DeferredEntityOverlay system, overlay deferral mixins
- Fixed: z-fighting in Wither/Creeper overlays, entity visibility behind auras
- #1603 Extended FeedbackManager and DisplayListVBOBuilder to recognize and handle GL_POLYGON primitives during legacy display list to VBO conversion. Added test coverage for the new primitive type. - @DarkShadow44
- Added: GL_POLYGON primitive support, test cases
- #1601 Added block context holder support to StateAwareTessellator and AngelicaChunkBuilderMeshingTask, allowing Little Tiles custom blocks to work with the shader system. Modified Iris block context handling to integrate with Angelica's chunk building. - @DarkShadow44
- Added: block context support in chunk builder
- Removed: old BlockContextHolder implementation
- Fixed: Little Tiles shader support
- #1580 Introduced GLRedirects API class exposing fragment shader generator and redirector functionality. Added tests to verify redirector behavior with method handles. - @mitchej123
- Added: GLRedirects public API, redirector test suite
- #1561 Added missing GL method overloads to GLStateManager with corresponding test updates. - @mitchej123
- Added: GL method pass-throughs
- #1557 Added alwaysTranslucent config option to AngelicaConfig. Added missing glMapBuffer/glUnmapBuffer overrides and debug context setup in both LWJGL2 and LWJGL3 backends. Updated mixin for texture atlas sprite mipmapping. - @mitchej123
- Added: Always translucent config option, GL method overrides, Debug context initialization
- #1555 Extended ProfileElementWidget and OptionMenuElement to support multiple profile buttons. Created ProfileElementTracker to manage button instances independently. - @SpacEagle17
- Added: Second profiles button support, ProfileElementTracker
- #1553 Extended Iris DH compatibility layer with DHCompatInternal, IrisGenericRenderProgram, IrisLodRenderProgram, and LodRendererEvents. Added frame buffer wrapping and shader macro support for distant terrain rendering. - @DarkShadow44
- Added: Distant Horizons shader compat layer, DHCompatInternal implementation, IrisLodRenderProgram, DhFrameBufferWrapper
- #1552 Added new API classes (BlockLightProvider, ExtLightDataAccess, TintRegistry, etc.) and expanded DynamicLights system. Updated AngelicaChunkBuildContext with Supernova-specific lighting context and created AoHelper compatibility layer. - @mitchej123
- Added: Supernova API interfaces, BlockLightProvider interface, ExtLightDataAccess and related lighting APIs, TintRegistry and TintComputer, DynamicLightSource interface, AoHelper compatibility
- Migration: Mods and shader packs using the Angelica lighting API must adopt new TintRegistry and ExtLight* interfaces for Supernova support.
- #1544 Created new Lwjgl3GLRenderBackend module with adapted GLStateManager, RenderSystem, and shader compatibility layers. Updated build configuration to support dual LWJGL backends with conditional compilation. - @mitchej123
- Added: LWJGL3 render backend module, Lwjgl3GLRenderBackend implementation, GL compatibility layer for LWJGL3
- Migration: LWJGL 3 runtime is required; users on LWJGL 2 must upgrade their Minecraft/JVM launcher configuration.
- #1539 Added Biomes o' Plenty dependency and created MixinFogHandler to patch BoP's fog rendering system to respect Angelica fog toggles. - @Caedis
- Added: Biomes o' Plenty fog compatibility, BoP fog handler mixin
- #1506 GLStateManager extended with glTexImage3D(IntBuffer) method. - @DarkShadow44
- Added: glTexImage3D IntBuffer overload
- #1503 GLStateManager and AngelicaRedirector extended with glGetTexEnv* function overloads. - @mitchej123
- Added: glGetTexEnv* function overloads
- #1500 GLStateManager extended with additional method overloads for OpenGL compatibility. - @mitchej123
- Added: GLStateManager method overloads
- #1495 GLStateManager gained an additional method overload for compatibility. - @mitchej123
- Added: GLStateManager method overload
- #1475 Added MixinGuiOptions with undisclosed behavior, updated Mixins registry to include it. - @mitchej123
- Added: MixinGuiOptions secret mixin
- #1468 Added GeometryShaderGenerator to dynamically generate geometry shaders that expand line primitives based on line width; updated Program, ShaderCache, VertexKey, VertexShaderGenerator, and Uniforms to support line width emulation; removed unused RenderSystem export. - @mitchej123
- Added: GeometryShaderGenerator, line width emulation via geometry shaders
- Removed: RenderSystem unused export
- #1466 Added PanoramaRenderer with shader-based rendering (panorama_cube, panorama_blur, panorama_blit shaders), created MixinGuiMainMenu to integrate, added config option, and registered new mixin. - @mitchej123
- Added: PanoramaRenderer, panorama shaders, panorama config option
- #1401 Added hurt screen shake intensity setting to Settings and SodiumGameOptionPages with GUI slider and language entry. - @Caedis
- Added: hurt screen shake intensity slider, settings entry
- Closes #1400
- #1384 Modified chunk iteration to process blocks towards camera and added distance-based sorting for TESR rendering passes when translucency sorting is enabled in CeleritasWorldRenderer. - @Ruling-0
- Added: TESR translucency sorting
- #1368 Added IndividualDrawEmitter class and new emitter mode options to rendering pipeline, extended SodiumGameOptions with new MultiDrawMode enum for user configuration. - @mitchej123
- Added: Indirect emitter mode, Individual emitter mode, IndividualDrawEmitter class
- #1348 Extended ShaderTransformer with GLSL version downgrading logic, added workaround handling in ShaderPackWorkarounds and GLDebug for platform-specific shader compatibility. - @mitchej123
- Added: GLSL downgrading for macOS, InternalTextureFormat platform support
- #1335 Extended DeferredWorldRenderingPipeline and related classes to support setup and begin pass types in shader programs. - @mitchej123
- Added: setup and begin pass support in shader pipeline
- #1333 Added AlphaTest and AlphaTestFunction classes, extended DeferredWorldRenderingPipeline and related pipeline classes to support compute shader stages for shadow passes. - @mitchej123
- Added: AlphaTest and AlphaTestFunction for shader alpha handling, compute shader pipeline stages, FogMode support
- #1327 Added EntityIdHelper with hardcoded entity ID mappings; updated ItemIdManager; added mixins for DroppedItemGlintEdges, EntityPickupFX, and RenderDragon to expose entity IDs to shaders. - @Eclipse-Sol
- Added: zombie_villager_converting, current_player, end_crystal_beam, player_cape entity IDs
- #1324 Extended ModdedBiomeDetector to check BiomeDictionary for biome types and added Lord of the Rings biome name-based detection fallback. - @mist475
- Added: BiomeDictionary support, LOTR biome detection
- #1318 Added MixinRenderNameTag to expose name tag rendering state to shaders as a distinct entity type. - @Eclipse-Sol
- Added: name_tag shader feature
- #1308 Added configuration option to AngelicaConfig to toggle F3 additions; updated debug screen handlers to respect the setting. - @MalTeeez
- Added: F3 additions toggle option
- #1303 Updated ShaderPack to expose feature flag definitions to the shader properties preprocessor; minor settings.gradle.kts update. - @mitchej123
- Added: feature flag defines in preprocessor
- #1293 Extended BlockRenderLayer and AngelicaRenderPassConfiguration to respect shader-defined layer overrides, updated BlockMaterialMapping and IrisShaderProvider to use override-aware layer resolution, improved HandRenderer to properly handle layer switching. - @mitchej123
- Added: Shader render layer override support
- #1284 Extended RenderSystem with SSBO bindings and DSA (Direct State Access) support, added custom image/texture handling in render context, implemented QuadLightingHelper and VanillaDiffuseProvider for lighting calculations, added VertexArrayQuadView for vertex access, improved chunk build context with new lighting infrastructure. - @mitchej123
- Added: SSBO support, Custom image/texture handling, SmoothLightPipeline, Separate AO rendering, Direct State Access (DSA) support, Lighting calculation helpers
- #1283 Extended ShaderPack to parse dimension.properties with fallback to world folder ID matching, added LRU cache in PipelineManager for dimension resolution (configurable via -Diris.dimensionCacheSize), maintained backwards compatibility with vanilla dimension matching. - @Eclipse-Sol
- Added: dimension.properties support, Dimension LRU cache
- #1277 Added currentRenderedItemId uniform support to iris shader rendering, extended block/item/entity property parsing to support quoted identifiers and escape sequences, added metadata value support (e.g. stone:1, double_plant:0,1,2,3). - @mitchej123
- Added: Item/armor/horse shader materials, Block metadata specification, Quoted identifier support in properties
- Fixed: Block/entity name parsing with special characters
- #1255 Added AdaptiveTickCalculator and AdaptiveTickMode for intelligent light tick scaling, EntityLightConfig for per-type customization, ChunkRebuildManager for efficient updates, and enhanced DynamicLights core with new mixin interfaces. - @mitchej123
- Added: Adaptive tick calculation, Entity light configuration UI, Chunk rebuild manager, Entity light source interface
- #1254 Refactored SearchTextFieldComponent and option filtering logic in ReeseSodiumVideoOptionsScreen to support improved search, added StringUtils utilities for fuzzy matching, and updated language strings. - @mitchej123
- Added: Video settings search improvements, Fuzzy text matching
- Removed: OptionExtended class, Sodium control element utilities
- #1225 Extended BackgroundSelect menu class to support additional background variants. - @wlhlm
- Added: Menu background options
- #1221 Integrated Celeritas rendering pipeline with new GLStateManagerService and RenderSystemService; wired Iris shader system; added multi-threaded chunk meshing; replaced Sodium with updated rendering backend; added debug visualization and performance monitoring. - @mitchej123
- Added: Celeritas rendering engine, Iris shader support, Dynamic lighting system, Multi-threaded meshing, Chunk debug minimap, FPS cap configuration, Angelica command
- Removed: Sodium 0.2 integration
- Migration: Client-side only: nothing in your world changes. Check your custom Iris shader packs by re-testing them against the Celeritas renderer; your angelica-options.json is migrated in place by ConfigMigrator.
- #1217 Extended BackgroundSelect GUI option to support random selection; added background texture options in SettingsManager. - @wlhlm
- Added: random menu background option, additional background textures
- #1202 Added new mixin
MixinRenderEntityFlameinsrc/mixin/java/and registered it inMixins.javato expose the entity_flame ID for shader customization. - @Eclipse-Sol- Added: entity_flame ID to Angelica shader support, MixinRenderEntityFlame
- #1197 Modified MixinRenderGlobal to apply entity name formatting compatible with 1.7.10 entity naming for shader material mapping. - @Eclipse-Sol
- Added: entity.properties 1.7.10 naming support
- #1174 Implements glDrawBuffers tracking and execution across DisplayListManager, GLStateManager, CommandBuffer, CommandBufferExecutor, CommandRecorder, and GLCommand classes. - @mitchej123
- Added: glDrawBuffers support in graphics state manager
- #1156 Extended CommandBufferBuilder and related GL command recording to support front face, hint, and blend color operations. Added CompiledPrimitiveBuffers and TessellatorPrimitiveBuffer for primitive drawing. - @mitchej123
- Added: glFrontFace support, glHint support, glBlendColor support, TessellatorPrimitiveBuffer, CompiledPrimitiveBuffers
- #1128 Expanded FontConfigScreen with SliderClone and new FontConfig options for bold and shadow text rendering, improved BatchingFontRenderer text rendering logic. - @DeathFuel
- Added: Bold text copies option, Shadow text copies option, Font config preview area, Font config option pages
- #1126 Replaced VBO implementations with VAO-based approach, modified HUDCaching, CloudRenderer, and ItemRenderListManager to reuse buffers instead of recreating them. - @sisyphussy
- Added: VAO configuration option
- #1102 Added biome detection with Vanilla/BOP/RWG support, new uniforms (biome, biome_category, darknessLightFactor, relativeEyePosition, lightningBoltPosition, isRightHanded), fixed boolean uniforms, and added shader property preprocessing for custom uniforms. - @mitchej123
- Added: biome detection system, additional shader uniforms, BiomeCategoryCache, ModdedBiomeDetector
- Fixed: boolean uniform handling, isSpectator and firstPersonCamera uniforms
- #1101 Added 41 lines to CommonUniforms.java and updated angelica_at.cfg to define additional built-in uniforms. - @Cleptomania
- Added: additional built-in shader uniforms
- #1096 Ported and enhanced compatibility fixes from ShaderFixer. Added TargetedMod class detection support, CompatConfig GUI modifiability, disable horizon option, and NTMSpace skybox rendering fixes through mixins. - @kotmatross28729
- Added: NTM:Space shader compatibility, disable horizon graphics option, CompatConfig GUI support
- Fixed: NTM:Space skybox rendering with shaders
- #1023 Ported FIX_BLOCK_CRACK from FalseTweaks 2 with a render pass whitelist and ModifyExpressionValue instead of Redirect to avoid destructive transformations. Added MixinRenderBlocks_CrackFix mixin. - @kotmatross28729
- Added: render pass whitelist for block crack fix, FIX_BLOCK_CRACK feature
- Fixed: block crack rendering on ores
New Content
- #1873 Modified glass CTM properties to use compact mapping and added stained glass CTM resources. - @Auynonymous
- Added: stained glass compact CTM
- #1830 Added Japanese language localization files for Angelica and NotFine. - @Kokekabe-Madoha
- Added: Japanese translations for Angelica and NotFine
- #1786 Added incompatibility note to README referencing issue #1779. - @DeathFuel
- Added: ClientFixer incompatibility note
- #1623 Updated zh_CN.lang resource file with additional translation strings. - @NealDeal34
- Added: Chinese translation strings
- #1036 Added 48 lines of Chinese translations to zh_CN.lang for font settings. - @NealDeal34
- Added: Chinese localization for font options
Changes
- #2061 Added test configuration to prevent focus stealing on macOS, introduced
-Dangelica.flyby.waitForFocussystem property for controlled test execution, and modifiedSdlTestRigand test classes to handle focus properly. - @mitchej123- Added: focus wait configuration for flyby tests, macOS test focus handling
- #2019 Updated Tracy native version to 0.14, added
SectionRegistryfor named zone management, enhancedTracyandTracyBackendwith new profiling capabilities, added UI section tracking inTracyUiSections. - @mitchej123- Added: SectionRegistry, TracyUiSections, Tracy 0.14 support
- #2009 Refactored
VSyncModewith adaptive queue modes, enhancedGlslTransformUtilsparsing optimizations, improved shader loading performance by caching transforms, fixed Windows display sync issues inLwjgl2GLRenderBackend. - @mitchej123- Added: GLSL parsing optimizations, Mailbox vsync mode
- Fixed: Windows input lag, GLSL parsing overhead
- #2002 Added
VSyncModeenum and enhancedRenderBackendwith new vsync/FPS policies, improvedTextureInfoCachefor model rendering, fixed player model rendering withTextureInfoupdates, and enhanced frame pacing in LWJGL3 and SDL GPU backends. - @mitchej123- Added: VSyncMode enum, Texture info caching, Frame pacer improvements
- Fixed: Water Shader Realism player model rendering
- #1962 Switches CloudRenderer to offset-based system; adds offset-aware mixins in MixinEntityRenderer and MixinWorldProvider. Removes previous cloud adjustment approach. Bumps celeritas and dependency versions. - @mitchej123
- Added: cloud offset system in WorldProvider
- Removed: previous cloud adjustment logic, MixinWorldType cloud code
- Fixed: cloud adjustment for custom world providers
- #1910 Updated default zoom speed constant in Settings class. - @Caedis
- #1886 Refactored MixinRendererLivingEntity_OverlayTint to remove armor tinting and added damage overlay as a separate config option in AngelicaConfig. - @Eclipse-Sol
- Added: damage overlay config option
- Removed: armor overlay tinting
- #1799 Updated
MixinTextureMapin interpolatedtexturemap to work with async icon loading changes from Hodgepodge. - @tiffit - #1763 Modified IsbrhTessellatorAbuseClassTransformer registration to use AngelicaLateTweaker instead of early registration, fixing class loader context issues. - @mitchej123
- #1748 Modified ReeseSodiumVideoOptionsScreen to clamp the options screen aspect ratio to 5:4 instead of 16:9. - @Apis035
- #1734 Modified IDynamicLightProducer interface to pass ItemStack parameter; updated DynamicLights entity light detection accordingly. - @ABKQPO
- #1726 Unified neighbor checking and texture mapping logic between compact and normal CTM by making neighbor checks metadata-sensitive in BlockOrientation and consolidating TileOverride handling. - @Ruling-0
- Added: BlockOrientation metadata-sensitive neighbor methods
- Removed: redundant TileOverrideImpl metadata handling
- Fixed: compact CTM metadata connection, compact CTM shading
- Closes #1677
- #1723 Removed DSA code paths from GLStateManager; removed fboEnable conditional checks and always set FBO to true; added optional glGetError query configuration. - @sisyphussy
- Added: glGetError query config option
- Removed: DSA code paths, FBO conditional logic
- #1704 Updated MAX_COLOR_BUFFERS constant in IrisLimits from 16 to 32. - @SpacEagle17
- #1675 Refactored NTM Space mixins to change compatibility strategy. Removed separate ShaderCompat mixin and consolidated into primary MixinSkyProviderCelestial. Updated WorkaroundUtils. - @kotmatross28729
- Added: Sky rendering compatibility
- Removed: ShaderCompat and Tweaks mixin variants
- Fixed: NTM Space shader compatibility issues
- #1672 Updated version check in AngelicaClientTweaker to enforce 0.9.0+ GTNHLib and improved dependency validation in Umbra. - @danyadev
- #1649 Modified MixinEntityRenderer to always render clouds late for shader compatibility. - @DarkShadow44
- Added: Late-stage cloud rendering for shaders
- #1648 Added mixin to MixinEntityRenderer that disables vanilla clouds when shaders are enabled. - @DarkShadow44
- Added: Cloud disabling for shader compatibility
- #1609 Added more specific exclusion rules to AngelicaConfig and AngelicaLateTweaker to reduce the scope of transformer bypasses, improving mod compatibility. - @mitchej123
- #1606 Modified GLSMRedirector bytecode handling to be compatible with Java 8 runtime environment and Forge restrictions. - @mitchej123
- #1599 Refactored horse rendering mixins to create a separate ModelHorseArmor class and updated MixinRenderHorse to render armor as a distinct layer. Removed the overly broad item material ID flag from ItemMaterialHelper. - @Eclipse-Sol
- Added: ModelHorseArmor class, armor layer separation
- Removed: global horse item material flag
- Fixed: horse armor rendering compatibility
- #1597 Modified FragmentShaderGenerator alpha test logic to work correctly with RTM and AE2 rendering requirements. - @mitchej123
- #1574 Removed all client-side initialization from common code paths and consolidated client setup into ClientProxy. Server-side mod loading now becomes a no-op, preventing resource loading and rendering system initialization on servers. - @Alexdoru
- Added: AngelicaClientTweaker for client-only setup
- Removed: Client code from common mod initialization path, Unnecessary server-side module loading
- #1563 Modified AngelicaTweaker and AngelicaLateTweaker config loading to change when and how compatibility configs are applied. - @mitchej123
- #1520 GLStateManager logging changed from repeated to single-occurrence. - @mitchej123
- #1516 SelectionBoxRenderer rewritten as modern OpenGL-based renderer; shader loading standardized; Celeritas updated to use abstract class; font rendering and depth sampling adjusted. - @mitchej123
- Added: SelectionBoxRenderer (modern OpenGL), selection box shaders (vertex/geometry/fragment)
- #1489 BatchingFontRenderer, FontProviderUnicode, and FontStrategist calculations refined; FontConfig and FontConfigScreen updated with book mode option. - @DeathFuel
- Added: book mode text rendering option
- #1454 Toggled boolean values for Horizon and Terrain Fog settings across Settings.java, NotFineGameOptionPages, SodiumGameOptionPages, language files, and related render mixins. Enhanced slider description for near fog distance. - @Caedis
- #1452 Re-added MixinWavefrontObject to the mixin registry and restored the mixin class file. - @sisyphussy
- Added: MixinWavefrontObject
- #1445 Updated AngelicaConfig, GLStateManager, and AngelicaLateTweaker; removed deprecated SodiumGameOptionPages, SodiumOptionsGUI, and URLUtils entries; updated MixinForgeHooksClient_CoreProfile and MixinTileEntityRendererDispatcher; removed translation keys. - @mitchej123
- Added: core profile configuration
- Removed: old Sodium GUI classes, translation entries
- #1421 Modified RFBAngelicaRedirector, RFBCeleritasBlockTransformer, RFBIsbrhTessellatorAbuseTransformer, and RFBUmbraRedirector to use the updated RFB transform method signature; bumped RetroFuturaBootstrap dependency. - @danyadev
- #1418 Restored CeleritasBlockTransformer activation for non-RFB environments and added CeleritasLateTweaker for FML-based transformation. - @Alexdoru
- Added: CeleritasLateTweaker
- #1412 Migrated to OpenGL 3.3 core profile with fixed function pipeline emulation inspired by Mesa, updated Gradle wrapper, dependencies, and multiple rendering components including font rendering and debugging tools. - @mitchej123
- Added: fixed function pipeline emulation, OpenGL 3.3 core profile support
- Migration: Angelica now emulates the fixed-function pipeline on an OpenGL 3.3 core context, so mods that use it keep rendering. Check your custom shader packs and any GL-heavy addon by re-testing them; no config file has to be edited.
- #1402 Modified Settings screen shake intensity constant. - @Caedis
- #1391 Added quad tagging in StateAwareTessellator to identify vanilla-lit quads, removed diffuse inversion logic, and updated lighting application in AngelicaChunkBuildContext and MixinRenderBlocks. - @embeddedt
- Added: StateAwareTessellator quad metadata, vanilla AO detection
- Removed: diffuse inversion logic, QuadLightingHelper
- #1388 Removed compatibility code for NotEnoughIds-Legacy and bumped BetterCrashes version in dependencies. - @copi143
- Removed: NotEnoughIds-Legacy support, ExtendedBlockStorageExt compatibility class
- #1374 Added HUD caching toggle to AngelicaConfig and SodiumGameOptionPages, changed default HUDCaching behavior to disabled. - @mitchej123
- Added: HUD caching runtime toggle
- #1367 Updated biome cache in WorldSlice with thread-safe access patterns, extended AngelicaRedirector with VAO method redirects, and improved threading in chunk builder tasks. - @mitchej123
- Added: VAO method redirects
- #1354 Refactored video option pages, improved camera invalidation handling, and removed SodiumClientMod class to consolidate sodium options integration. - @mitchej123
- Added: camera interpolation fixes, third-person view camera invalidation
- Removed: SodiumClientMod class
- Fixed: camera interpolation behavior
- #1340 Modified AngelicaRedirector to update GL method redirect mappings. - @sisyphussy
- #1329 Redirected GLDebug output to log instead of stderr; corrected custom texture/image binding in pipeline; fixed environment variable defines; added GLSL version hoisting based on keyword detection. - @mitchej123
- Added: GLSL version hoisting
- #1220 Modified GLStateManager and MixinSplashProgressCaching to better handle GL state transitions during splash screen rendering; updated initialization and test fixtures. - @mitchej123
- #1169 Added exclusion entries in AngelicaRedirector and SodiumBlockTransform to skip transformation of specific classes. - @mitchej123
- Added: Transformer exclusions
- #1144 Added default shader attributes MC_ENTITY, MC_MID_TEX_COORD, and AT_TANGENT in ClientProxy and ProgramCreator, removed custom entity vertex format implementations. - @mitchej123
- Added: Shader attribute defaults
- Removed: Entity vertex buffer writer variants, Extended glyph and quad vertex types
- Fixed: Tile entity rendering compatibility
- #1106 Increased scroll offset value in ScrollBarComponent.java for video settings and related GUIs. - @ALongStringOfNumbers
- #1100 Added config option to disable registering HardcodedCustomUniforms in CommonUniforms.java. These are now behind a config flag instead of always active. - @Cleptomania
- Fixed: shader pack compilation conflicts with built-in uniforms
Bug Fixes
- #2056 Added null cleanup in
BopFogColorSource,FogBiomeCache, andCeleritasWorldRenderer, plus mixin override inMixinFogHandlerBiomeCacheto prevent world client reference retention. - @Alexdoru- Fixed: World client leaks in BiomesOPlenty fog handlers
- #2054 Modified
MixinTextureMap.updateAnimations()to read and apply theanimateOnlyVisibleTexturesconfig setting. - @Chitak985- Fixed: Animate only visible textures setting not being used
- #2052 Modified
MixinRenderBlocksto enable CTM mining/breaking overlays by adjusting the quad processing pipeline during block breaking animation. - @Kremnari- Fixed: CTM connected textures disappearing during block mining
- #2045 Modified
BatchingFontRendererto gate glyph color multiplication by world lighting, restricting world-space tinting to only world-rendered text and never GUI text. - @Ranzuu- Fixed: GUI color leakage from world lighting (ColorUtils regression)
- Closes #2040
- #2037 Modified TESR cache mixins for chest and ender chest renderers to use the currently bound texture instead of hardcoding vanilla textures. Added new mixin
MixinTileEntityChestRenderer_BindTextureto track texture binding state. - @kurrycat2004- Added: MixinTileEntityChestRenderer_BindTexture
- Fixed: Modded chest TESR caching texture rendering
- #2031 Added mixin to
MixinCubicChunksCubethat synchronizes tile entity mutations to use the column map's write lock, preventing ConcurrentModificationException when CubicChunks modifies tile entities while Angelica's ColumnTileEntityMap is being read for render snapshots. - @Jakfut- Added: CubicChunks tile entity write lock synchronization
- Fixed: ConcurrentModificationException with CubicChunks
- #2025 Enhanced
Presenterin SDL GPU backend, improvedFrameManagerframe delivery logic, optimizedFramePacerwith improved sleep strategies viaPacerSleeper, adjusted Tracy profiler integration for better timing. - @mitchej123- Added: PacerSleeper optimization, Frame delivery improvements
- Fixed: SDL GPU frame presentation, Frame pacing latency
- #2018 Created
AwaitingDescriptorutility andAwaitingDescriptorTEinterface, modifiedMixinTileEntity_AwaitingDescriptorto defer ticks until descriptor received, addedMixinNetHandlerPlayClient_DescriptorRepairandMixinWorld_AwaitingDescriptorfor descriptor packet handling. - @mitchej123- Added: AwaitingDescriptor utility, AwaitingDescriptorTE interface
- Fixed: TE initialization with batch packet sending
- #2017 Enhanced state tracking in
GLStateManager, added uniform isolation inDeferredBlendHandlerandDeferredDepthColorHandler, fixed gbuffer assignments for particles and entities, clamped light level at 15 for hand items, added layer state isolation for TEs to prevent leaks, added shader pack capability detection. - @Eclipse-Sol- Added: Uniform leak prevention, Particle/entity gbuffer fixes, Light level clamping, Shader pack capability checks
- Fixed: Iris/Backhand uniform leaks, Backhand lightmap uniforms, Particle gbuffer assignments, Sign text rendering, End portal rendering, Light overflow in hand items
- #2016 Refactored sign rendering layer management in
RenderLayerandTesrBatchRenderer, adjusted text rendering state and layer logic in TESR batch renderer. - @mitchej123- Fixed: Sign GUI rendering
- #2014 Added
WorkerWorldAccessguard for off-thread world/TE reads, createdMixinWorld_WorkerMutationGuardandMixinNetHandlerPlayClient_DescriptorRepairto guard and log unsafe access, trigger remesh on initial TE descriptor packet inAngelicaChunkBuilderMeshingTask, improvedConcurrentTileEntityMapthread safety. - @mitchej123 - #2005 Created
RendererLivingEntityHelperwith optimized gravity-aware rotation, refactoredMixinRendererLivingEntityto use helper, addedMixinTransformClientHelperfor Starminer client-side transform updates. - @brandyyn- Added: RendererLivingEntityHelper, Starminer transform mixin
- Fixed: Player rotation with Starminer gravity
- Closes #487
- #2001 Narrowed ecosystem transformer exclusions in
EcosystemNarrowRules, addedLTWWorkaroundfor shader swizzle issues, improved SDL GPU render backend initialization and display mode handling, added mixin priority adjustments for CustomNPC compatibility. - @mitchej123- Added: LTWWorkaround, Ecosystem transformer narrowing rules
- Fixed: Journeymap 6 rendering, Legends mods compatibility, OpenLTW swizzle issues
- #1995 Fixed font rendering compatibility, improved
DisplayListManagertransform handling, added SDL GPU display creation fallback chain (Wayland→X11→OpenGL), addedglGetDoubleredirection inGLStateManager, and improved rotation baking for batched display lists. - @mitchej123- Added: Display creation fallback chain, glGetDouble redirection
- Fixed: Font rendering with DuraDisplay, Display list rotation transforms, SDL GPU initialization failures
- #1994 Added vertex array reset in
TessellatorStreamingDrawer, createdLwjgl3AwareInjectionbuild-time marker, and added architecture boundary tests viaLwjgl3AwareBoundaryTestto enforce LWJGL3-aware marking on render backends. - @mitchej123- Added: Lwjgl3AwareInjection annotation marker, Lwjgl3AwareBoundaryTest
- Fixed: Vertex array state consistency, Backend LWJGL3 awareness
- #1992 Added version detection in
ModStatusto identify when the original Battlegear 2 is loaded (version string1.7.10) and disabled incompatible Dynamic Lights compatibility mode inDynamicLights. - @ah-OOG-ah- Fixed: Battlegear 2 incompatibility causing player movement and rendering issues
- Closes #1508
- #1982 Changes ConcurrentTileEntityMap from
implements Map<ChunkPosition, TileEntity>toextends HashMap<ChunkPosition, TileEntity>to satisfy Mekanism's explicit HashMap cast. - @XLin0mu- Fixed: Mekanism ClassCastException crash
- #1976 Adds FFPVertexLighting shader support, updates BatchingFontRenderer to apply lightmap sampling and item lighting, modifies fontFilter.vsh to receive lighting uniforms. Adds FFPVertexLightingGLTest, FontFilterLightmapGLTest, and UniformsRescaleTest. - @KAMKEEL
- Added: FFPVertexLighting system, text lighting tests
- Fixed: text fullbright issue
- #1973 Refactors GLStateManager splash thread handling to reduce race conditions. - @mitchej123
- Fixed: splash thread race condition
- #1969 Adds null checks in SubVBO.render(): skips draw if VAO is null (stale display list) or count <= 0 (no vertices), preventing invalid buffer references passed to NVIDIA driver. - @CRIMSTAL
- #1967 Refactors thread safety in MipmapStrategies attribution hook and MixinTextureMap to prevent race conditions during mipmap assignment. - @Eclipse-Sol
- Fixed: mipmap attribution race condition
- #1966 Corrects coordinate conversion in ClientProxy to properly map chunk space to world space. - @mitchej123
- Fixed: biome jumble (#1963)
- Closes #1963
- #1965 Enhances GLStateManager flag handling, adds emulation of GL_LINE_STRIPPLE in fragment/geometry/vertex shader generators, guards against LWJGL2 buffer checks in Core context, improves Core/Compat detection in build configuration. - @mitchej123
- Added: GL_LINE_STRIPPLE emulation, better Core/Compat context testing
- Fixed: Xaero's World Map crash, BetterQuesting GL_LINE_STRIPPLE crash
- Closes #1755
- #1961 Fixes mouse tracking in IrisGuiSlot scrollbar element. - @Eclipse-Sol
- Fixed: scrollbar mouse following
- #1959 Makes immediate mode recording thread-safe, pre-warms classes on main thread in DisplayListManager and ImmediateModeRecorder, and removes unsafe mixin from MixinSplashProgressCaching. Adds ImmediateModeThreadIsolationTest to verify thread safety. - @mitchej123
- #1957 Adds mixin guards in MixinItemRenderer and MixinRenderBlocks to properly handle plascrete/cleanroom trophy rendering state. - @mitchej123
- Fixed: plascrete/cleanroom trophy rendering
- #1954 Adds conditional gating in EndFlashCompat and IrisExclusiveUniforms to properly control when the end flash effect is applied. - @mitchej123
- Fixed: end flash shader incompatibility
- #1953 Extends GLStateManager, RenderBackend, and related classes with additional buffer operation redirects for both LWJGL2 and LWJGL3 backends. - @mitchej123
- Added: buffer operation redirects
- Fixed: incomplete buffer state management
- #1951 Added OpenGL version detection and fallback logic in RenderSystem and MixinForgeHooksClient_CoreProfile to detect non-core contexts and request lower GL versions when necessary. - @mitchej123
- Added: Intel driver compatibility detection, GL version fallback logic, GLVersionParseTest
- Fixed: blank window on older Intel GPUs
- Closes #1460
- #1949 Backported fix from Iris PR #3246 to ExtendedDataHelper to correctly handle midBlock calculation at high coordinates. - @SpacEagle17
- Fixed: midBlock calculation at high coordinates
- #1944 Updated FontProviderUnicode to register as an IResourceManagerReloadListener and re-read glyph_sizes.bin on every resource pack reload. - @Eldrinn-Elantey
- Fixed: unicode glyph widths not updating on resource pack change
- #1932 Added BlockLiquid mixin and BlockLiquidFlowInvoker to properly handle liquid flow rendering, and added Farseek compatibility mixin for correct value access. - @Eclipse-Sol
- Added: BlockLiquid mixin for flow handling, BlockLiquidFlowInvoker interface, Farseek compatibility mixin
- Fixed: streams rendering incorrectly
- #1918 Updated FeatureFlags to re-enable compute shader execution. - @mitchej123
- Fixed: colored lighting broken since 2.1.45
- Closes #1914
- #1917 Updated frustum culling logic to correctly compute far plane with infinite values, and added HugeFarPlaneFrustumTest unit test. - @mitchej123
- Added: HugeFarPlaneFrustumTest
- Fixed: incorrect subchunk culling in pdims without clouds
- Closes #1916
- #1913 Modified BlockOrientation.setFace() to explicitly set flipped to false when switching faces. - @tiffit
- Fixed: CTM flipped state not resetting
- #1905 Updated overlay tint mixin for damage glint, added PlayerReflectionCapture, fixed shadow culling interactions with frustum culling, and improved CloudRenderer and CloudUniforms logic. - @Eclipse-Sol
- Added: PlayerReflectionCapture for shader player reflection, ClippingHelperExt interface for culling state, shader updates for clouds
- Fixed: damage glint appearance, water shader player reflection, shadow culling breaking chunk frustum culling, cloud rendering issues
- #1902 Added LOTRCompat class to handle LOTR-specific biome color adjustments, updated ClientProxy initialization, and fixed ClonedChunkSection color handling. - @mist475
- Added: LOTRCompat compatibility class
- Fixed: Lord of the Rings biome colors
- #1896 Added VAO vertex binding state tracking to GLStateManager and fixed VAOManager to properly handle cable geometry rendering. - @mitchej123
- Added: VAO vertex binding state management
- Fixed: space elevator cable rendering
- Closes #1573
- #1895 Extended DisplayListManager, GLStateManager, and IndexedDrawCapture to handle more glDrawElements variants and added unit tests for display list compilation and indexed draw batching. - @mitchej123
- Added: support for additional glDrawElements overloads, unit tests for IndexedDrawBatchBuilder
- Fixed: entity rendering crash (glDrawElements not implemented)
- Closes #1328
- #1894 Adapted Mesa's assign_attribute_or_color_locations algorithm in CompatShaderTransformer to correctly allocate vertex attribute and color locations during shader compilation for Betweenlands. - @mitchej123
- Added: Mesa-based attribute location assignment, FFP fragment key refinement
- Fixed: Betweenlands dimension black screen
- Closes #1885
- #1891 Corrected alpha blending parameters in FragmentShaderGenerator and VertexShaderGenerator for end portal geometry. - @mitchej123
- Fixed: end portal rendering
- Closes #1482
- #1888 Updated dependencies to handle both old and new gtnhlib versions. Modified PackRenderTargetDirectives to work with fastutil's change from Integer to int in forEach callbacks. - @sisyphussy
- Fixed: build errors with newer fastutil versions
- #1880 Fixed streaming VAO vertex flag initialization so VertexShaderGenerator uses correct attributes instead of uniform fallback. Extended glMultiTexCoord2d support to texture units 2 and 3 for proper lighting. - @RedNicStone
- Added: texture unit 2/3 multi-texcoord support
- Fixed: Xaero's map rendering display
- Closes #1784
- #1877 Added array uniform upload support to GLStateManager and render backends. Corrected uniform state management for shaders requiring array-based uniforms. - @mitchej123
- Added: array uniform upload support
- Fixed: Universium shader rendering
- Closes #1746
- #1874 Extended GLStateManager and render backends to handle glDrawArraysInstanced and variants. Added TileEntityRenderBoundsRegistry for dynamic TE bounding box caching and InstancedQuadDrawGLTest for validation. - @mitchej123
- Added: instanced draw call support, dynamic TE bounds caching, instanced quad draw tests
- Fixed: OpenBlocks Building Guide rendering
- Closes #1653
- #1872 Extracted RendererLivingEntity overlay mixins into separate mixin modules and added conditional targeting that disables them if customplayermodels transformer is present. - @MalTeeez
- Added: conditional mixin targeting for Custom Player Models
- Fixed: launch crash with Custom Player Models mod
- Closes #1869
- #1871 Adjusted particle batching logic in DeferredDrawBatcher to correctly handle particle state during deferred rendering. - @mitchej123
- Fixed: ME emitter redstone particle rendering
- Closes #1436
- #1868 Updated GLStateManager, GlintColorHandler, StandardMacros, InternalTextureFormat, and shader transformation pipelines to match Iris uniforms and GLSL transformations. Added EtFuturumCompat for enchant color compatibility. Disabled compute and tessellation shader features in FeatureFlags. - @Eclipse-Sol
- Added: enchant glint color compatibility layer, shader feature detection improvements, Et Futurum compatibility module
- Fixed: shader compilation errors, enchant glint white color issue, Et Futurum shader compatibility
- #1862 Added forced invalidation of DH depth textures in DHCompatInternal to ensure texture state is refreshed when DH reconnects. - @mitchej123
- Fixed: DH texture depth corruption on reconnect
- #1861 Reworked matrix handling in CompatUniformManager and GLStateManager, and simplified DH-specific render programs by removing redundant matrix manipulation code from IrisGenericRenderProgram and IrisLodRenderProgram. - @mitchej123
- Added: matrix compatibility layer improvements
- Fixed: DH matrix state compatibility
- #1859 Extended GLStateManager and render backends to redirect additional GL calls (glMultiTexCoord2fv, glMultiTexCoord3fv, glMultiTexCoord4fv, glMultiTexCoord4ubv) that DH was using without proper GLSM interception. - @mitchej123
- Added: GL state redirects for multi-texture coordinate calls
- Fixed: DH compatibility with missing GL redirects
- #1856 Adjusted MixinItemRenderer_EdgeDepth stencil logic to properly render enchantment glints. - @Eclipse-Sol
- Fixed: enchantment glint appearance
- #1852 Corrected null handling in MixinRenderBlocks CTM rendering code. - @Eclipse-Sol
- Fixed: CTM null pointer crash
- #1844 Added DimensionFlatteningMap to properly map dimensions for shader pack loading, correcting ShaderPack and VanillaBiomeList dimension handling. - @Eclipse-Sol
- Added: DimensionFlatteningMap
- Fixed: shader loading for wrong dimensions
- #1838 Added BooleanParser and improved shader pack initialization in AngelicaChunkBuildContext and ShaderPack to properly handle Steadfast shaderpack loading. - @Eclipse-Sol
- Added: BooleanParser for shader options
- Fixed: Steadfast shaderpack loading
- #1834 Adjusted GLStateManager lightmap state management to prevent stale lightmap values from persisting in VBO rendering for vertex buffer objects lacking per-vertex brightness data. - @kotmatross28729
- Fixed: lightmap leak in NTM VBO
- #1832 Removed automatic .png appending in TileOverride that was preventing CTM resource location paths from matching actual texture paths. - @tiffit
- Removed: PNG extension appending in CTM path handling
- Fixed: CTM texture path matching
- #1831 Corrected vertex encoding, flattening map logic, and shader pipeline configuration in AngelicaChunkBuilderMeshingTask, AngelicaRenderPassConfiguration, IrisExtendedChunkVertexEncoder, and DeferredWorldRenderingPipeline to fix reflection and underwater rendering. - @Eclipse-Sol
- Fixed: water reflections rendering black on load, water reflections not displaying, underwater effects, custom lava noise effects
- #1827 Added more specific exclusion rules in EcosystemNarrowRules and AngelicaConfig to prevent transformer conflicts affecting FoamFix ear repacking and Fisk's Superheroes player model rendering. - @mitchej123
- #1822 Adjusted CeleritasBlockTransform logic to resolve a regression in TerraFirmaCraft compatibility; removed unused code from CeleritasBlockTransformer. - @mitchej123
- Fixed: TerraFirmaCraft world loading crash
- Closes #1810
- #1821 Added mixins for TileEntityBeaconRenderer and RenderCarvableBeacon to fix shader-related beacon beam rendering, properly setting render conditions for Chisel beacons which use a separate renderer. - @Eclipse-Sol
- Added: shader compatibility for beacon rendering
- Fixed: beacon beam rendering with shaders, Chisel beacon render condition
- #1820 Updated compact CTM
BlockOrientationto apply bottom-face flip fix since Hodgepodge's fix is bypassed by compact CTM. Regular CTM still only applies fix if Hodgepodge's is absent. - @tiffit- Fixed: compact CTM bottom-face flipping
- #1816 Modified
MixinItemRendererto defer shader item ID application, prevent enchant glint toggling between identical items, and skip hand swap animation for identical item stacks. - @Eclipse-Sol- Fixed: shader item ID timing, enchantment glint flickering, hand swap animation
- #1804 Modified
AngelicaClientTweakerto forcibly load GTNHLibCore to bootstrap the dependency loader before Angelica initialization, bypassing RetroFuturaGradle when necessary. - @mitchej123- Added: explicit GTNHLibCore bootstrap
- Fixed: Java 8 class loading dependency order
- #1789 Corrected edge depth rendering in
MixinItemRenderer_EdgeDepthto prevent shadow map memory clobbering on Windows. - @Eclipse-Sol- Fixed: shadow map corruption on Windows
- #1783 Corrected
FeedbackManagerbuffer VBO selection to use correct attribute 0 buffer for vertex data readback. - @MassAnarchyy- Fixed: GL_FEEDBACK readback vertex data, mob-info scaling and positioning
- #1782 Corrected attribute handling in
CompatUniformManager, vertex encoding inIrisExtendedChunkVertexEncoder, and shader uniform matrix calculations in multiple Iris pipeline classes. Changed int to long for memory safety in shader storage. - @Eclipse-Sol- Added: Iris memory protection, shader normal vector fixes
- Fixed: Nether portal outline offset, Ender crystal vortex animation looping, normal vector reading
- #1781 Added TextureInfo and TextureInfoCache with format resolution logic to handle generic compressed image formats like GL_COMPRESSED_RGBA, ensuring proper texture binding. - @mitchej123
- Added: TextureInfo class, TextureInfoCache, compressed format resolution
- Fixed: Xaero's World Map compressed texture crash
- Closes #1758
- #1780 Added key tracking to FragmentKey and improved ShaderManager to handle edge cases in combined shader generation and caching. - @mitchej123
- Fixed: FFP shader linking crash
- #1778 Modified FFP shader generators (FragmentShaderGenerator, GeometryShaderGenerator, VertexShaderGenerator) and shader manager to handle macOS platform-specific OpenGL differences. - @mitchej123
- Fixed: macOS shader linking crash
- #1777 Ported modern Iris/Vanilla damage overlay rendering by adding new fragment shader attributes, uniforms, and mixins for ItemRenderer, Mooshroom, and RendererLivingEntity to properly apply tint overlays. - @Eclipse-Sol
- Added: edge depth rendering support, damage overlay tint mixins, fragment shader tint handling
- Fixed: damage overlay Z-fighting, spider/enderman overlay rendering
- #1773 Added resource reload listeners to BlockRenderListManager and ItemRenderListManager to clear cached render lists when texture atlas changes. - @tiffit
- Added: resource reload cache invalidation
- Fixed: texture pack switching breaking blocks/items
- Closes GTNH#24832
- #1769 Added ChunkBiomeDataChangedEvent and integrated it into chunk section caching logic. Modified ClonedChunkSectionCache to refresh biome data on cache hits and added biome change listener to CeleritasWorldRenderer. - @Caedis
- Added: ChunkBiomeDataChangedEvent, biome cache invalidation
- Fixed: grass/foliage color caching bug
- Closes #1424
- #1767 Added MissingDependencySdl exception class and modified AngelicaClientTweaker to detect and report missing dependencies with clearer error messages. - @mitchej123
- Added: MissingDependencySdl exception class, better dependency error handling
- Fixed: buried SDL dependency errors
- #1766 Added null checks and size validation in framebuffer and render target code (GlFramebuffer, RenderTargets, ShadowRenderTargets) and a mixin guard in Minecraft. - @mitchej123
- Added: window size guard mixin, framebuffer size validation
- Fixed: window resize crash with shaders
- Closes #1532
- #1764 Added mixin MixinGuiMainMenuSplash and RenderSystem workaround to handle Minecraft incorrectly reporting its scissor state on the main menu. - @mitchej123
- Added: MixinGuiMainMenuSplash, scissor state workaround
- Fixed: splash text rendering
- #1759 Added IsbrhTessellatorAbuseClassTransformer and RFBIsbrhTessellatorAbuseTransformer to detect and prevent problematic draw/startDrawing sequences from ISBRH implementations. - @mitchej123
- Added: IsbrhTessellatorAbuseClassTransformer, RFBIsbrhTessellatorAbuseTransformer, ISBRH draw call guard
- Fixed: Netherlicious rendering issue
- Closes #1728
- #1756 Modified GLStateManager and RenderSystem to clamp color values like Mesa does, and suspend/restore Pixel Unpack Buffer state around operations that conflict with it. - @mitchej123
- #1751 Modified MixinEntityRenderer to properly end the dynamic lighting profiler section during entity rendering. - @mitchej123
- Fixed: dynamic lighting profiler section lifecycle
- #1747 Added mixin to fix Z-fighting in skeleton leg rendering by adjusting model transforms in MixinModelSkeleton_LegPelvisZFight. - @Eclipse-Sol
- Fixed: skeleton leg clipping into pelvis
- #1741 Removed stencil attachment requirement from DH framebuffers in GlFramebuffer to match upstream configuration and prevent UNSUPPORTED framebuffer errors on resize. - @DarkShadow44
- Removed: stencil attachment for DH buffers
- Fixed: DH framebuffer UNSUPPORTED on window resize, LOD rendering with shaders
- Closes DistantHorizonsStandalone#83
- #1738 Updated NTM Space mixins (MixinSkyProviderCelestial, MixinSkyProviderLaytheSunset, MixinSkyProviderOrbit) to use obfuscated method names or mapping corrections for proper application. - @kotmatross28729
- Fixed: NTM Space mixins in obfuscated environment
- #1733 Moved vanilla AO flag detection hook higher in MixinRenderBlocks call stack to catch custom block renderers that pass through vanilla AO methods without directly calling renderFace methods. - @branan
- Fixed: smooth lighting with Chisel blocks
- Closes #1399
- #1729 Added compatibility handling in BetterCrashesCompat to handle tessellator state conflicts. - @czqwq
- Added: BetterCrashes compatibility
- Fixed: Already tesselating crash
- #1724 Added null check or reference clearing in CTMUtils to prevent world client retention. - @Alexdoru
- Fixed: world client leak in CTMUtils
- #1722 Corrected Intel detection condition in GLStateManager. - @sisyphussy
- Fixed: Intel detection
- #1721 Modified MixinRenderBlocks to properly clear CTM processor state and prevent CURRENT_COMPACT context from leaking between items during recursive rendering calls. - @Ruling-0
- Removed: redundant compactCtmRendering assignment
- Fixed: CTM texture bleeding in inventory
- #1715 Modified program switching logic to restore uniforms when returning to a previous shader program instead of leaving them cleared; added ProgramChangeEvent tracking. - @kotmatross28729
- Added: uniform restoration on program restore
- Removed: ImmediateState uniform tracking
- Fixed: stale uniforms after shader program switch
- #1705 Modified MixinRenderBlocks block render path to catch exceptions from block renderers, log them, skip the failing block, and reset the Tessellator to prevent state corruption. - @Kai-Z-JP
- Added: recoverable block render failure handling
- Fixed: client crashes on modded block rendering exceptions, Tessellator broken state propagation
- #1701 Removed lambda capture in IrisExclusiveUniforms.WorldInfoUniforms that held references to world client state. - @Alexdoru
- Fixed: world client leak in shader uniforms
- #1700 Added world unload hook in ClientProxy to clear dynamic lights collection; restricted dynamic light mixin to client entities only and ensured client-side world load hook runs only for client worlds. - @Alexdoru
- Added: dynamic lights cleanup on world unload
- Fixed: dynamic lights memory leak on world unload
- #1697 Modified CompactCtmQuadProcessor to recalculate lighting per quadrant instead of using stale shading from the original full face. - @Yoshy2002
- Fixed: AO lighting discontinuities in compact CTM
- #1695 Modified CTMUtils and added mixin to MixinRenderBlocks and MixinTileEntityRendererDispatcher to prevent CTM spread to unrelated tile entities. - @Yoshy2002
- Fixed: CTM spreading to adjacent tile entities
- #1689 Added default VAO binding on SharedDrawable and created mixin to swap glGetProgramInfoLog when appropriate. Added test case for SharedDrawable VAO. - @mitchej123
- Added: SharedDrawableVaoTest, MixinShaderRegistry_ParseError
- Fixed: DragonAPI on macOS
- #1687 Added AttribLayoutKey to properly handle VAO attribute layout, fixed buffer sizing in IndexedDrawCapture, and ensured correct AABB initialization in TileEntityRenderBoundsRegistry. - @mitchej123
- Added: AttribLayoutKey class, unit tests
- Fixed: INFINITE_EXTENT_AABB null crash, VAO/VBO snapshot sizing
- Closes #1681
- #1684 Implemented AttribSnapshot to capture VAO/VBO data into display lists, avoiding stale references. Refactored QuadConverter and CommandRecorder to route deletes through GLStateManager for proper lifecycle management. - @mitchej123
- Added: AttribSnapshot for data capture, command recording system
- Removed: CommandBuffer execution system
- Fixed: AE2 crash on NVIDIA GPUs
- #1670 Moved early redirector logic to a new EarlyRedirectorCore class in GLSM to resolve class loading order issues. - @mitchej123
- Added: EarlyRedirectorCore class
- Fixed: Class circularity error
- #1668 Fixed MaterialState to not advance buffer positions for GL_SHININESS, matching vanilla behavior and preventing BufferUnderflowException. - @Cleptomania
- Fixed: Buffer underflow in material shininess handling
- Closes #1638
- #1659 Modified MixinRenderItemFrame to properly clear cached item references, preventing both world client and server leaks. - @Alexdoru
- Fixed: RenderItemFrame world client memory leak
- #1652 Fixed DragonAPI stencil shader registration in GlslTransformUtils, tesselator compatibility in dev/prod builds, and cloud rendering conflicts with shader pipelines. - @mitchej123
- Added: Compatibility tests for shader transformation
- Removed: Conflicting cloud mixin
- Fixed: DragonAPI shader registration crash, Tesselator issues, Cloud rendering conflicts
- Closes #1646
- #1650 Fixed memory leaks in Camera, CeleritasWorldRenderer, and HandRenderer by properly clearing cached references. - @Alexdoru
- Fixed: World client memory leaks in Camera and CeleritasWorldRenderer
- #1647 Updated MixinForgeHooksClient_CoreProfile and MixinTessellator_CoreProfile to resolve NixOS-specific issues. - @mitchej123
- Fixed: NixOS compatibility issues
- #1645 Corrected IrisGenericRenderProgram and IrisLodRenderProgram shader parameter passing to match upstream Distant Horizons implementation. - @DarkShadow44
- Fixed: Solas shader rendering with Distant Horizons
- #1640 Fixed tile override logic in TileOverrideImpl and corrected quad processor calculations in CompactCtmQuadProcessor. - @mitchej123
- Fixed: Compact CTM rendering artifacts
- #1637 Modified GLStateManager.glGet* methods to correctly handle buffer state, ensuring compatibility with mods that query data using the same buffer for both source and destination. - @mitchej123
- Fixed: Buffer incompatibility with mods querying GL state (#1634)
- Closes #1634
- #1632 Added MixinHeldItemGlintEdges to limit shader processing for held items with glint effects, mirroring the fix from MixinDroppedItemGlintEdges. - @mitchej123
- Added: MixinHeldItemGlintEdges to limit held item glint passes
- Fixed: GPU overloading when holding radium dust (#1588)
- Closes #1588
- #1630 Added thread safety checks in GLStateManager.glGetString() and crash report handling in Lwjgl2GLRenderBackend and Lwjgl3GLRenderBackend to prevent race conditions. - @mitchej123
- Added: Thread safety for GL state queries, Off-thread crash report handling
- Fixed: Crash on off-client-thread GL queries
- #1629 Added GL_QUAD_STRIP handling in FeedbackManager and DisplayListVBOBuilder to convert legacy quad strip primitives during display list conversion. - @DarkShadow44
- Added: GL_QUAD_STRIP support in legacy conversion, FeedbackManagerTest with GL_QUAD_STRIP test case
- Fixed: Block loading in Electrical Age (#1600)
- Closes #1600
- #1627 Updated IrisExtendedChunkVertexEncoder and ShaderTransformer to pass mc_Entity variable to shaders, matching upstream Iris behavior for photon shader compatibility. - @DarkShadow44
- Added: mc_Entity variable passing to shaders
- Fixed: Water rendering on photon shaders (LOW quality)
- #1621 Added automatic item ID reset in CapturedRenderingState.setCurrentEntity() and removed broken mixin overrides in RenderItem, RenderManager, and RendererLivingEntity. - @Eclipse-Sol
- Removed: MixinRenderItem item tracking overrides, MixinRenderManager item ID tracking, MixinRendererLivingEntity item ID tracking
- Fixed: Item ID not being reset between entity renders, Damage overlay rendering
- #1620 Added ModStatus check to apply grass rendering logic only when Biomes O' Plenty is present, narrowing the scope of MixinRenderBlocks changes. - @JohnButlerThird
- Added: Mod compatibility check for BOP grass
- Fixed: BOP grass visual artifacts without affecting other mods
- #1619 Updated glsl-transformation-lib dependency and fixed PatchedShaderPrinter logic to correctly dump patched shaders, removing unnecessary double-gating. - @mitchej123
- Fixed: Shaders with functions defined before inputs (#1615)
- Closes #1615
- #1618 Moved client attribute handling logic in GLStateManager to defer uploads, fixing a crash path specific to Java 8 + LWJGL 2 environment. - @mitchej123
- Fixed: Crash on Java 8 with LWJGL 2
- #1613 Added Double parameter overloads to GLStateManager methods to handle type conversions that Modular Powersuits requires. - @mitchej123
- Added: Double overload methods in GLStateManager
- Fixed: GUI crash with Modular Powersuits (#1410)
- Closes #1410
- #1610 Modified TextureTracker, IrisGLSMBridge, StateUpdateNotifiers, CommonUniforms, and FogUniforms to properly notify shaders of changes to atlas size, texture size, blend function, and fog parameters. Re-enabled uniform update callbacks that were broken in 2.0. - @kotmatross28729
- Fixed: atlasSize/textureSize/blendFunc/fog uniforms not updating
- #1607 Modified AngelicaChunkBuilderMeshingTask to correctly handle tile entity render bounds that cross chunk boundaries, preventing premature frustum culling. - @Kai-Z-JP
- Fixed: tile entity render bounds culling
- #1602 Expanded VertexAttribState to track and handle more client-side vertex attribute operations. Modified GLStateManager to provide better coverage of vertex attribute pointer calls in core profile contexts, optimizing PR #1594. - @mitchej123
- Fixed: core profile vertex attrib pointer crash
- #1598 Enhanced GLSMRedirector to handle method handles in invokedynamic bytecode, allowing proper redirection of GL calls made through dynamic invocation. Added test coverage for the fix. - @mitchej123
- Added: invokedynamic method handle support, redirector test suite
- Fixed: invokedynamic BufferChecks crash with Immersive Railroading
- Closes #1586
- #1596 Re-added phaseChangeNotifier to StateUpdateNotifiers and GbufferPrograms to properly notify shaders when render phases change. This ensures the renderStage uniform updates correctly for all sky phases (SUNSET, SUN, MOON). - @kotmatross28729
- Added: phase change notifier callbacks
- Fixed: renderStage uniform not updating between phases
- #1593 Modified GlslTransformUtils to handle GLSL transform cases that the Blur mod uses, preventing shader compilation failures. - @mitchej123
- Fixed: Blur mod compatibility crash
- Closes #1581
- #1592 Added missing glGetTexImage method stub to GLStateManager to prevent NoSuchMethodError when XaerosWorldMap attempts to call it. - @12411234
- Fixed: missing glGetTexImage crash with XaerosWorldMap
- #1591 Modified DeferredBatchTessellator and DeferredDrawBatcher to properly handle fancy block particle rendering without crashing. - @mitchej123
- Fixed: fancy block particles crash
- Closes #1477
- #1590 Added WitherArmorState tracking and created mixins for ModelWither and RenderWither to adjust armor positioning during rendering. - @Eclipse-Sol
- Added: WitherArmorState tracking class
- Fixed: Wither armor centering
- #1589 Modified DeferredWorldRenderingPipeline and related shader transform classes to pass texture map information to composite shaders and apply texture replacements in the shader transformation pipeline. - @DarkShadow44
- Added: TextureTransformer shader pass
- Fixed: black shaders with photon sky
- #1576 Added a mixin to MixinRenderBlocks_CrossedSquaresNormal to correct the sky lighting calculation for cross-square rendered blocks. - @Eclipse-Sol
- Fixed: sky lighting on drawCrossSquare blocks
- #1575 BatchingFontRenderer now checks and restores the previous blend state instead of unconditionally enabling blending. This prevents state leakage to subsequent tile entity renders. - @kotmatross28729
- Fixed: blend state leak in text rendering
- Closes #1504
- #1571 Modified DeferredDrawBatcher to prevent merging strips/fans/loops/polygons which can cause state corruption. Added state reset logic to avoid state leaks. Updated HUDCaching and DeferredWorldRenderingPipeline for Botania compatibility. - @mitchej123
- #1569 Added depth offset mixin (MixinItemRenderer_EdgeDepth) and modified Enchantment.java to apply depth adjustment when rendering enchant glints in third-person view. - @Eclipse-Sol
- Added: ItemRenderer edge depth mixin
- Fixed: Third-person enchant glint z-fighting
- #1567 Modified DeferredWorldRenderingPipeline alpha test state management and refined ProgramId handling. Updated eye depth mixin for proper alpha test behavior. - @mitchej123
- Fixed: Alpha test in deferred rendering
- #1566 Updated CompatUniformManager to correctly pass animation state to enchant glint shaders, and modified CoreTransformHelper and ExternallyManagedUniforms to track enchant animation uniforms. - @Eclipse-Sol
- Fixed: Modded enchant glints animation
- #1562 Added configuration flag to disable problematic ASM hooks and narrowed mod version requirements for Advanced LightSabers and Alfheim (unreleased versions have native compat). - @mitchej123
- #1559 Added cache clearing calls in DeferredWorldRenderingPipeline and FullScreenQuadRenderer when shaders are reloaded. - @mitchej123
- Fixed: Stale cache on shader reload
- #1558 Modified RenderCondition, DeferredWorldRenderingPipeline, and ProgramSet to improve handling of specific render conditions for Botania compatibility. - @mitchej123
- Fixed: Botania mana pool rendering with shaders
- #1550 Added missing glMapBuffer overload in RenderBackend and implemented pixel buffer binding state tracking with suspension logic in GLStateManager to prevent state leaks. - @mitchej123
- Added: glMapBuffer overload, Pixel buffer state tracking
- Fixed: Pixel buffer state management
- #1547 Modified BatchingFontRenderer alpha test handling and added alpha test state management in the font shader (fontFilter.fsh). Updated MixinRenderBlocks to handle grass block subclass rendering with AO. - @mitchej123
- Fixed: Font alpha transparency with Celeritas AO, BlockGrass subclass rendering
- #1537 Replaced event cancellation in ClientProxy with a Mixin injection into MixinGuiIngameForge_ModernF3 to modify the F3 text background directly during GUI rendering. - @Alexdoru
- Removed: F3 event cancellation in ClientProxy
- Fixed: Event handler skipping when F3 overlay was active
- #1526 FragmentShaderGenerator em dash removed from shader string to comply with ASCII requirement in GLSL 4.20 spec section 1.2.1. - @DeathFuel
- Fixed: shader compatibility with older OpenGL versions
- #1521 CeleritasBlockTransform now uses ClassNode name for transform matching instead of incorrect source. - @Alexdoru
- Fixed: Alfheim mod compatibility crash
- Closes #1483
- #1519 MixinRendererLivingEntity_EyeDepth added to address depth fighting for eye rendering. - @Eclipse-Sol
- Added: MixinRendererLivingEntity_EyeDepth
- Fixed: mob eye z-fighting
- #1518 GLStateManager texture format handling updated to use OpenGL 3.3 Compatibility Spec table 3.17 replacements for deprecated formats. - @DeathFuel
- Fixed: CustomNPC+ dialog text rendering
- Closes #1497
- #1505 CompatShaderTransformer regex updated and test case added to verify multiline matching. - @mitchej123
- Fixed: shader pattern matching across newlines
- #1501 AngelicaRedirector updated with additional Botania-specific transformation. - @mitchej123
- Fixed: Botania mod compatibility
- #1499 MixinGuiMainMenu visibility conflict resolved; mixin configuration updated across all Java version variants. - @mitchej123
- Fixed: MixinGuiMainMenu visibility crash with enablePanoramaBlurShader
- Closes #1498
- #1494 AngelicaLateTweaker updated with Java 8 compatibility handling for Xaero. - @mitchej123
- Fixed: Xaero's Minimap crash
- Closes #1493
- #1492 FontConfigScreen UI layout corrected. - @DeathFuel
- Fixed: font config screen UI issue
- #1480 MixinRenderManager split into two mixins for DAPI compatibility. Mixin configuration updated to handle ASM load ordering correctly. - @MalTeeez
- Added: MixinRenderManagerDAPI
- Fixed: shader mixin not applying with DAPI loaded, crash with mixin debug active
- #1473 Refactored FeedbackManager, ImmediateModeRecorder, and GLStateManager to snapshot vertex array and buffer state during display list recording; renamed ClientArrayState to VertexAttribState; updated AngelicaRedirector with additional redirects; enhanced unit tests. - @mitchej123
- Added: VAO/VBO snapshotting during display list recording
- Removed: ClientArrayState class
- Fixed: armor stand item rendering (#1459)
- Closes #1459
- #1467 Enhanced PanoramaRenderer state management and fixed GLSM_ServerSideState_UnitTest assertion. - @mitchej123
- Fixed: panorama state cleanup
- #1464 Added AngelicaCylinder, AngelicaDisk, AngelicaPartialDisk, and AngelicaSphere to provide LWJGL2-compatible geometry functions; added EarlyRedirectorTransformer to handle GL calls in coremod-loaded classes; updated tweaker and AngelicaRedirector with new redirects. - @mitchej123
- Added: LWJGL2 Quadric-compatible classes, EarlyRedirectorTransformer, GL redirect entries
- Fixed: BetweenLands compatibility, GL coremod workaround
- #1442 Added test workaround in GLStateManager for Intel GPU compatibility. - @sisyphussy
- Added: Intel GPU test workaround
- Fixed: Intel driver tests
- #1440 Removed duplicate exclusion entries from AngelicaRedirector and CeleritasBlockTransform, and corrected the RFB plugin configuration file. - @Alexdoru
- Removed: duplicate transformer exclusions
- Fixed: RFB class exclusion rules
- #1437 Simplified ModStatus Backhand check, removed unnecessary InteractionHand shim, adjusted dynamic lights, fixed HandRenderer logic, and removed pointless iris$skipTranslucentHandsBackhand callback in ItemRenderer mixin. - @Alexdoru
- Removed: InteractionHand compat shim, redundant mixin callback
- Fixed: Backhand mod compatibility
- #1434 Modified AngelicaChunkBuildContext and MixinTextureAtlasSprite for mipmap compatibility. - @mitchej123
- Fixed: chunk build context issues, mipmap sprite handling
- #1414 Added missing resource cleanup in CeleritasWorldRenderer. - @mitchej123
- Fixed: memory leak
- #1413 Updated MixinGuiIngameForge_HUDCaching with additional rendering logic. - @mitchej123
- Fixed: holographic inventory rendering
- #1408 Added unknown blend state tracking and BufferBlendOverride handling from modern Iris in GLStateManager, RenderSystem, and blend state storage. - @mitchej123
- Added: unknown blend state support, BufferBlendOverride handling, blend state unit tests
- Fixed: texture rendering with Thaumcraft
- Closes #1397
- #1392 Changed ShadowRenderer to use renderViewEntity instead of thePlayer for shadow calculation. - @Caedis
- Fixed: shader shadows with freecam
- Closes Freecam#1
- #1390 Fixed FontProviderUnicode and BatchingFontRenderer to properly manage font renderer state instead of maintaining corrupted global state. - @DeathFuel
- Fixed: unicode font visibility in Asian languages
- Closes #1150
- #1386 Updated sign culling logic in TileEntityRenderBoundsRegistry and MixinTileEntity to properly account for rendering bounds. - @mitchej123
- Fixed: sign visibility culling
- #1379 Reduced logging in FontProviderCustom and refactored the implementation for clarity. - @DeathFuel
- Removed: unnecessary logging
- Fixed: Log spam with custom fonts
- Closes #1375
- #1377 Fixed MixinTextureAtlasSprite to handle null cases in texture animation when speedupAnimations is disabled. - @mitchej123
- #1370 Added PFAA Geologica block IDs to AngelicaConfig BlockCrackFix whitelist to prevent texture coordinate issues similar to fix #1161. - @Teteros
- Fixed: PFAA Geologica blocks rendering bugs
- Closes #524
- #1356 Updated method descriptors in MixinSkyProviderCelestial_ShaderCompat to match new NTM:Space method signatures. - @kotmatross28729
- Fixed: NTM:Space compatibility with updated version
- #1355 Added bounds check in RenderSystem.clearBufferSubData to prevent invalid buffer operations. - @mitchej123
- Fixed: clearBufferSubData crash
- #1349 Modified DisplayListManager to prevent double-rendering of nested display lists. - @sisyphussy
- Fixed: nested display lists rendering twice
- #1347 Modified MixinRenderManager to reset item material IDs for arrow rendering to prevent them from inheriting the parent item's visual properties. - @Eclipse-Sol
- Fixed: arrows inheriting incorrect material IDs
- #1346 Added end portal feature flag, updated shader program builder and multiple pipeline classes to handle end portal rendering with shader compatibility layers. - @mitchej123
- Added: end portal feature flag, end portal shader support
- Fixed: End portal rendering with shaders
- #1343 Added support for GLSL #version 120, moved config loading earlier to avoid race conditions, and updated shader transformers to handle additional shader variants. - @mitchej123
- Added: GLSL 1.2 version support, EntityPatcher transformer
- Fixed: Shader pack loading compatibility
- #1342 Removed redundant resource refresh in FontStrategist that caused a race condition with BLS initialization. - @DeathFuel
- Removed: redundant resource refresh call
- Fixed: Crash with BLS on startup
- Closes #1271
- #1334 Modified BlockOrientation to correct East-West ordering in CTM bottom face UV mapping when unflipped option is used. - @leagris
- Fixed: Bottom face CTM texture UV connection
- #1332 Added null check in ModdedBiomeDetector. - @mitchej123
- Fixed: NullPointerException in ModdedBiomeDetector
- #1330 Changed shadow rendering in ShadowRenderer and Camera compatibility layer to use entity position instead of camera position for shadow calculations. - @mitchej123
- Fixed: Tile entity shadows detached in third-person view
- Closes #1233
- #1325 Fixed rendering order or state management in AngelicaRedirector for HUD caching. - @sisyphussy
- Fixed: HUD flickering
- #1320 Added IChunkTileEntityMapHolder and ConcurrentTileEntityMap with ReentrantReadWriteLock; deferred tile entity invalidations to main thread; gated map operations with thread safety guards. - @mitchej123
- Added: ConcurrentTileEntityMap, chunk thread safety
- Fixed: chunk tile entity thread safety
- #1317 Modified AngelicaChunkBuildContext to use proper blockAccess reference on main thread. - @mitchej123
- Fixed: main thread block access
- #1315 Fixed CurrentRenderedItemID tracking; added arbitrary entity class targeting in shaders; fixed shader compilation without world0 target; corrected buffer binding for entity pickup effects in MixinEntityPickupFX and related mixins. - @Eclipse-Sol
- Added: entity class targeting in shaders
- Fixed: item ID rendering, worldless shaders, entity pickup buffer binding
- #1307 Corrected ItemMaterialHelper to properly track the rendered item ID for ItemBlocks. - @mitchej123
- Fixed: ItemBlock ID rendering
- #1306 Updated emissive check in AngelicaChunkBuildContext to only include getMixedBrightnessForBlock; removed redundant LightDataCache logic. - @mitchej123
- Removed: redundant light cache logic
- Fixed: lighting on blocks near emissives
- #1304 Corrected buffer management in CeleritasTerrainPipeline, DeferredWorldRenderingPipeline, and ShaderPackScreen. - @mitchej123
- Fixed: buffer handling
- #1298 Added mixin to MixinRendererLivingEntity to properly handle entity material state in shader pipeline. - @Eclipse-Sol
- Added: entity material handling
- Fixed: entity material handling
- #1296 Corrected quad cull face computation in AngelicaChunkBuildContext to not reuse light face; use FlatLightPipeline for blocks without smooth lighting; cache quad flags in VertexArrayQuadView instead of recomputing on each getFlags() call. - @embeddedt
- Fixed: grass plant shadow rendering, quad lighting for non-axis-aligned blocks
- #1294 Added proper framebuffer cleanup in GlFramebuffer, improved DeferredWorldRenderingPipeline disposal logic, ensured FinalPassRenderer resources are released; fixed method name mapping (func_153184_g -> func_153174_h). - @mitchej123
- Fixed: Shader compilation VRAM leak
- Closes #827
- #1286 Added DriverCompatabilityCheck class with NVIDIA-specific workarounds, integrated into GLStateManager initialization. - @mitchej123
- Added: NVIDIA driver workarounds
- Fixed: NVIDIA driver compatibility
- #1278 Updated MixinRenderGlobal to properly allocate display lists during chunk rendering, preventing hand renderer from being clobbered during shader reload. - @mitchej123
- Fixed: Shader reload rendering corruption
- #1275 Added GL_TEXTURE_2D workaround in MixinSkyProviderCelestial_ShaderCompat and created fallback mixin for MixinSkyProviderLaytheSunset to fix shader compatibility regression. - @kotmatross28729
- Added: Shader compatibility for Laythe sunset
- Fixed: NTM:Space sunset rendering with shaders
- #1273 Added synchronization in ClientProxy and CeleritasSetup to ensure proper initialization ordering, updated MixinRenderGlobal to serialize critical operations. - @mitchej123
- Fixed: Race condition in setup
- #1265 Extended GLStateManager to implement glCallLists method stub that was previously missing, preventing NoSuchMethodError. - @mitchej123
- Added: glCallLists GL API support
- Fixed: glCallLists crash
- Closes #1263
- #1264 Updated dependencies in dependencies.gradle to fix macOS F3 key press handling. - @mitchej123
- Fixed: macOS F3 debug menu crash
- Closes #1256
- #1251 Fixed DisplayListManager matrix generation on pop, improved AngelicaChunkBuilderMeshingTask matrix stack handling, and updated gtnhgradle to 2.0.13 for better dependency resolution. - @mitchej123
- Fixed: Invisible block rendering, Dependency resolution
- #1248 Updated dependency versions in dependencies.gradle to fix macOS J8 compatibility. - @mitchej123
- Fixed: macOS startup crash
- Closes #1245
- #1247 Enhanced BatchingFontRenderer glyph replacement logic and FontConfig to correctly identify which glyphs can be substituted, preventing invalid BMP variant fallbacks. - @DeathFuel
- Fixed: Large character text rendering, Glyph replacement bug
- Closes #1239
- #1243 Improved ShaderTransformer to properly handle GLSL 120 in/out/varying declarations, fixing shader compilation for legacy shader syntax. - @mitchej123
- Fixed: GLSL 120 shader rendering, Sildurs/BSL shaderpack compatibility
- Closes #1242
- #1218 Added GraphicsEnvironment.isHeadless() check in FontStrategist and FontProviderCustom; FontConfigScreen now displays warning when no fonts are available. - @DeathFuel
- Added: headless mode font handling, font availability notification
- Fixed: font initialization crash on headless systems
- #1216 Adjusted BatchingFontRenderer to properly handle text bounds when custom fonts are enabled. - @DeathFuel
- Fixed: text cutoff with custom fonts
- Closes #1214
- #1198 Refactored TextureInfoCache state management in GLStateManager, fixed DSA implementations, added extensive server-side state unit tests, and improved uniform handling in CommonUniforms. - @mitchej123
- Added: server-side state unit tests
- Fixed: texture cache synchronization issues
- #1196 Modified BlockEntry parsing to split on comma without requiring preceding space, allowing entries like 'farmland:1, 2, 3, 4, 5, 6' to parse as intended. - @Eclipse-Sol
- Fixed: block metadata parsing with commas
- #1193 Removed isCachingEnabled() check in TextureInfoCache to ensure consistent cache deletion behavior across all threads, matching TextureTracker and PBRTextureManager. - @sisyphussy
- Fixed: white rectangle inventory items on world join
- Closes #538
- #1192 Removed remap=false annotation from MixinGuiIngameForge to allow proper mixin remapping in non-dev environments. - @mist475
- Fixed: mixin debug mode crash
- #1189 Restructured CTMUtils locking strategy to use a single lock for the entire class rather than distributed locks across inner objects; made TileOverrideIterator synchronization private. - @guusw
- Fixed: deadlock in CTM utilities
- #1184 Fixed RenderSystem shader boot sequence and enhanced DSA implementations in DSAARB and related classes; refactored TextureInfo caching logic. - @mitchej123
- Fixed: shader rendering pipeline creation failure
- Closes #1181
- #1178 Fixed improper byte-to-int casts in FontProviderUnicode using AND calculations to match Mojang's MC 1.9 approach. - @Creeper-banner
- Fixed: text rendering after certain characters
- #1161 Updated AngelicaConfig and MixinRenderBlocks_CrackFix to reference both BlockOres and GTBlockOre class names to handle both pre- and post-refactor GT versions. - @kotmatross28729
- Fixed: Z-fighting on GT ores across GT versions
- Closes #1158
- #1159 Corrected AttributeTransformer to properly detect OpenGL compatibility profiles. - @mitchej123
- Fixed: OpenGL profile detection
- #1152 Added glClear(GL_DEPTH_BUFFER_BIT) command recording in DisplayListManager and related rendering classes to properly clear depth during display list execution. - @mitchej123
- Added: Depth clear command support
- Fixed: AE2 Network Visualizer crash
- Closes #1151
- #1148 Modified BatchingFontRenderer and FontProvider classes to handle GT5 custom glyphs through GTNHLib, fixed text scaling issues and added corrective offsets for custom font rendering. - @DeathFuel
- Added: Custom glyph handling configuration
- Removed: FontStrategist class
- Fixed: Custom font text rendering, Subscript character rendering
- Closes #1062
- #1132 Modified PBRType to properly handle file paths containing colons that are used in texture metadata, fixing path parsing in AtlasPBRLoader. - @qhris
- Fixed: PBR texture loading with metadata
- #1131 Modified MixinRenderBlockFluid to prevent world reference retention in the mixin. - @Alexdoru
- Removed: World reference retention in RenderBlockFluid
- Fixed: Memory leak in fluid rendering
- #1125 Reverted MixinRenderGlobal_ItemRenderDist to restore item rendering behavior for nearby items. - @Alexdoru
- Removed: Item render distance limitation
- Fixed: Item visibility when close to player
- #1119 Added DragonAPI exclusions to NOTFINE_NO_CUSTOM_ITEM_TEXTURES and MCPATCHER_FORGE_CUSTOM_ITEM_TEXTURES mixin lists in TargetedMod configuration. - @MalTeeez
- Added: DragonAPI mixin exclusions
- Fixed: Mixin compatibility with DragonAPI
- #1113 Updated AngelicaConfig to reference GTBlockOre instead of BlockOres and changed config key to blockCrackFixRenderPassWhitelist_ to overwrite existing configs. - @kotmatross28729
- Fixed: GT ore class reference after GT5U refactor
- #1110 Modified GLStateManager to capture texture and color state in display lists, ensuring GL state changes are properly recorded. Added OpenGL debugging tools. - @sisyphussy
- Added: OpenGL debugging utilities
- Fixed: Display list rendering state capture, BuildCraft pipe transparency issue
- Closes #864
- #1109 Modified RenderStars.java to fall back to display lists when VBOs are unavailable, providing an alternative rendering path for incompatible hardware. - @mitchej123
- Fixed: Star rendering on non-VBO systems
- #1105 Set maxShiftBy to 2 in mixins.angelica.early.json to suppress bytecode transformation warnings. - @ALongStringOfNumbers
- Fixed: mixin log warnings
- #1091 Fixed OpenGL state leakage in BatchingFontRenderer by properly managing texture units, shader programs, and client-side vertex arrays during font rendering. - @klorman
- Fixed: entity/item texture and lighting corruption with shaders and name tags
Performance
- #2044 Modified
CTMUtilsto null thread-local data instead of removing it from the pool, reducing allocation churn during block rendering. - @boubou19- Fixed: CTM rendering memory allocations
- #2029 Modified
TileLoaderto compute total texture atlas sprite size once at initialization and update it incrementally as sprites are added or replaced, avoiding redundant full-scan calculations. - @boubou19- Fixed: CTM tile loading performance
- #1988 Wrapped string concatenation in
glCallListdebug output behind a debug flag check inGLStateManagerto avoid allocation overhead when debugging is disabled. - @boubou19- Fixed: Memory allocation overhead from debug strings
- #1971 Refactors VAOManager and GLStateManager to eliminate redundant nested loops in EBO index management, adds VAOManagerEboIndexTest to verify correctness. - @mitchej123
- Added: EBO index unit test
- Fixed: VAO manager quadratic complexity
- #1970 Adds state caching and unit tests (GLSM_PushPop_UnitTest) for frequently-accessed GL state. - @mitchej123
- Added: GL state caching, push/pop unit tests
- Fixed: redundant GL state queries
- #1964 Adds BlockRenderListManager to cache item frame geometry, reducing redundant mesh generation. Implements MixinRenderItemFrame to integrate caching into render pipeline. - @Algent
- Added: item frame geometry caching system
- Fixed: item frame rendering performance
- #1900 Added early return in CloudRenderer to skip mesh building when cloud rendering is disabled. - @mitchej123
- Fixed: unnecessary cloud mesh building
- #1811 Implemented dirty-tracking in
CompatUniformManager,GLStateManager,LightModelState,LightState, andMaterialStateto skip redundant GPU uploads. Added comprehensive unit tests for dirty tracking. - @mitchej123- Added: dirty-tracking system for uniforms and state, GLSMCoreExtension test framework, GLSM_DirtyTracking_UnitTest, ProgramUniformTrackingTest
- Fixed: excessive GPU memory uploads
- #1805 Changed
EmissiveTextureAutoloader.resourceExiststo checkITexturePackdirectly instead of traversing resource manager internals, with fallback to original implementation for compatibility. - @tiffit- Added: direct ITexturePack resource checking
- Fixed: startup performance for emissive texture loading
- #1795 Removed redundant
registerIconscall inMixinTextureMapMCPF mixin class that was not needed for CTM functionality. - @tiffit- Removed: registerIcons call in MixinTextureMap
- Fixed: startup performance
- #1794 Implemented lazy initialization patterns in
CompatShaderTransformer,CompatUniformManager,GLStateManager, andShaderManagerto reduce unnecessary computation at startup. - @mitchej123 - #1750 Refactored DisplayListManager to prebake transforms for better draw merging, removed ITessellatorData interface, migrated to new GlyphReplacements map in FontRenderer, and optimized CommandBuffer pipeline. - @sisyphussy
- Removed: ITessellatorData interface, CommandBufferBuilder, TransformOptimizer, CommandBuffer, CommandBufferProcessor
- Fixed: display list edge cases, tessellator merging edge cases
- #1730 Created BlockRenderListManager and ItemRenderListManager to cache block item renders in display lists; integrated into MixinItemRenderer and MixinRenderBlocks. - @sisyphussy
- Added: cached block item renderer, BlockRenderListManager, ItemRenderListManager
- #1718 Added disableDSA configuration flag in GLStateManager and RenderSystem; added Intel GPU detection in GLSMInitConfig to automatically disable DSA on Intel hardware. - @sisyphussy
- Added: Intel GPU detection, DSA disable configuration option
- Fixed: Intel GPU performance regression
- #1612 Replaced mutable Supplier instances with immutable variants across uniform holder classes (DynamicLocationalUniformHolder, Vector2IntegerJomlUniform, etc.) to reduce garbage collection pressure. - @mitchej123
- #1515 Refactored OrphanStreamingBuffer and TessellatorStreamingDrawer; new StreamingUploader implementation; Sodium UI updated with streaming options. - @sisyphussy
- Added: StreamingUploader
- Removed: OrphanStreamingBuffer (replaced)
- #1476 MixinEntity now defers initialization of entity lighting maps until first access rather than constructing them upfront. - @mitchej123
- #1471 Replaced spin-wait FPS limiter with sleep-based limiter derived from MangoHUD, achieving stable frame pacing on Java 8 and Java 25. Removed the now-unnecessary FPS limiter toggle option and its translations. - @ah-OOG-ah
- Added: sleep-based FPS limiting
- Removed: FPS limiter toggle option, related translations
- Fixed: CPU usage with FPS limiting
- #1447 Refactored BatchingFontRenderer to improve performance, updated shader uniforms in fontFilter.vsh, and added new dependency. - @sisyphussy
- Added: font renderer optimizations
- Fixed: font renderer performance (#1446)
- Closes #1446
- #1438 Optimized RenderPassHelper to avoid wrapper object allocation by using primitive operations directly. - @Alexdoru
- Fixed: autoboxing overhead
- #1433 CeleritasBlockTransformer now scans for 6 strings instead of 1881; AngelicaRedirector switched from prefix matching to exact matching, removed expensive
classNode.isOriginal()check, and added missing GL constant entries. Both changes reduce class inspection overhead during bytecode transformation. - @danyadev- Added: shouldTransform optimization, missing GL constant entries
- Removed: expensive classNode.isOriginal() check
- Fixed: startup performance
- #1432 Added MixinFramebuffer to use vertex buffer objects instead of streamed vertices for framebuffer rendering, reducing GPU synchronization stalls. Updated AngelicaConfig and registered new mixin. - @sisyphussy
- Added: VBO-based framebuffer rendering, configuration option
- Fixed: frame rendering stalls
- #1420 Removed ClassConstantPoolParser usage from block transformer, allowing direct transformation of all classes which is faster than the dynamic parsing check. - @Alexdoru
- Removed: ClassConstantPoolParser checks
- #1416 Optimized AngelicaRedirector and SodiumBlockTransform for better performance during bytecode redirection. - @Alexdoru
- #1393 Converted CTMUtils.getBlockIcon dependencies to thread-local storage to eliminate lock contention among worker threads, reducing CPU time by approximately 90%. - @copi143
- Added: thread-local caching in CTMUtils
- #1321 Eliminated duplicate infinite bounds check in CeleritasWorldRenderer. - @mitchej123
- Removed: redundant bounds check
- #1319 Added early exit conditions in DynamicLights to avoid getBlock calls when no dynamic lights exist or light level is 0; optimized mixin call sites. - @mitchej123
- #1314 Modified ClonedChunkSection to eagerly create client tile entities in fillChunk; replaced HashMap with Object2ObjectOpenHashMap; iterate tile entities directly instead of scanning all blocks. - @mitchej123
- Added: eager tile entity creation
- #1309 Added ITileEntityBoundingBoxCache interface and TileEntityRenderBoundsRegistry to cache AABB computations; modified MixinTileEntity to use cached bounds. - @mitchej123
- Added: AABB caching system, TileEntityRenderBoundsRegistry
- #1213 Optimized SodiumWorldRenderer and GbufferPrograms to set defaults once per TE (tile entity) rendering pass instead of once per entity. - @mitchej123
- Fixed: FPS drop with Iris enabled
- Closes #1212
- #1191 Parallelized shader loading in Iris pipeline; updated glsl-transformation-lib dependency and refactored shader transformers (AttributeTransformer, CompatibilityTransformer, etc.) to use newer Transformer API. - @mitchej123
- Added: parallel shader transformation
- #1170 Removed glNormal recording from CommandBuffer, CommandRecorder, and DisplayListManager since normals are already baked into VBOs. - @mitchej123
- Removed: Normal vector command recording
- Fixed: FPS performance regression
- Closes #1165
- #1141 Added DisplayListManager with display list compilation, replaced VBO optimizations with display list optimization, optimized GLAllocation with fastutil primitives, fixed DSA usage and mixin conflicts, optimized push/pop attribute state tracking. - @mitchej123
- Added: Display list compilation system, DisplayListManager, CommandBufferBuilder, CompiledFormatBuffer, CompiledLineBuffer, FormatBuffer, GLDebug utilities
- Removed: Previous VBO optimization approach
- Fixed: DSA proxy texture handling, CIT mixin conflict
- #1123 Removed redundant display list creation in CloudRenderer and added conditional logic to only update cloud texture when color changes. - @sisyphussy
- Removed: Unnecessary display list creation
- #1103 Fixed framebuffer leak on WorldEvent.Load, replaced glBlitFramebuffer with shared depth attachment, replaced Tessellator with VAO/VBO in HUDCaching.java. Reported ~10% FPS improvement on integrated GPUs. - @sisyphussy
- Fixed: VRAM leak on world load, HUD rendering performance
- #1084 Offloaded chunk rendering jobs requiring main thread blocking into separate worker threads. Increased main thread render task queue limit from 1 to 16. Modified ChunkBuilder and related render task classes. - @Sopel97
- Added: separate worker threads for blocking render tasks
- Fixed: render worker thread blocking on main thread tasks
Removals
- #1839 Removed MixinItemRenderer hand animation forcing code as it duplicated functionality already provided by Hodgepodge. - @Eclipse-Sol
- Removed: forced hand animation mixin
Internal / Refactor
- #2051 Restructured dynamic lights config GUI by adding dedicated filter and option page classes, simplifying
DynamicLightsOptionPagesand reorganizing entity filter logic. - @mitchej123- Added: DynamicLightsEntityFilter, DynamicLightsEntityScreen, SubScreenOption
- Removed: EntityLightConfigStorage
- #2024 Created
TileEntityMarkerTransformto mark tiles during bytecode transformation, updatedCeleritasBlockTransformerandRFBCeleritasBlockTransformerto use marker annotation approach, replacedTileEntityRenderBoundsRegistryreflection with interface markers. - @mitchej123- Added: TileEntityMarkerTransform, Interface markers for tile properties
- Removed: TileEntityRenderBoundsRegistry, Reflection-based detection, OverridesMethodTest
- Fixed: DragonAPI crash with tile entity detection
- #1983 Deletes unreachable glyph width clamp modifier from MixinFontRenderer-the getCharWidth method was fully replaced by @Inject in a prior PR, so this constant patch never executes. - @Eldrinn-Elantey
- Removed: dead getCharWidth ModifyConstant
- #1858 Merged VertexAttribState into VAOManager to centralize VAO management; implemented lazy attribute allocation; consolidated per-VAO state into a single Map; disabled blockCrackFix by default. Improved FFP (fixed-function pipeline) shader management and recording. - @sisyphussy
- Added: unified VAOManager design
- Removed: VertexAttribState (merged into VAOManager), blockCrackFix enabled by default
- Fixed: ArchitectureCraft visual seams
- Closes GTNH#25137
- #1770 Moved IsbrhTessellatorAbuseTransformer instantiation from tweaker to proper FML/RFB transformer registration, fixing class loader parent issues. - @Alexdoru
- Added: IsbrhTessellatorAbuseTransformer in transformers package
- Removed: transformer instantiation in AngelicaLateTweaker
- #1560 Deleted OpenGLDebugging class, removed direct GL calls from multiple classes, and added NoDirectGLCallsTest to prevent direct GL usage in the codebase. All rendering must now use GLStateManager or RenderBackend. - @mitchej123
- Added: NoDirectGLCallsTest architecture test
- Removed: OpenGLDebugging class, Direct GL API calls
- #1527 GLSM extracted to glsm/ subproject with own Gradle configuration; EventBus added as dependency; state change events refactored to use EventBus; Iris and Minecraft coupling reduced; various GLSM and recording bugs fixed. - @mitchej123
- Added: GLSM subproject, EventBus integration, CommandBufferBuilder
- Removed: legacy GLSM-Minecraft coupling
- Fixed: glsm/recording bugs
- #1455 Simplified CeleritasBlockTransform logic, reduced duplication in RFBCeleritasBlockTransformer, and refactored CeleritasBlockTransformer for better organization. - @danyadev
- #1385 Swapped vanilla ClippingHelper with JOML equivalents via mixins and added an extension interface. - @mitchej123
- Added: ClippingHelperExt interface, JOML-based clipping mixins
- #1360 Replaced CapturingTessellator with DirectTessellator, removed legacy buffer classes (FormatBuffer, LineBuffer, CompiledPrimitiveBuffers), optimized display list compilation to automatically convert GL_QUADS to GL_TRIANGLES with EBO rendering, added VBO draw command support. - @sisyphussy
- Added: DirectTessellator implementation, VBO draw commands in display lists
- Removed: CapturingTessellator, FormatBuffer, LineBuffer, CompiledPrimitiveBuffers, DrawRange related classes
- Fixed: display list transform issues
- #1297 Migrated OpenGLHelper call sites to use GLStateManager directly; removed MixinOpenGlHelper and updated call redirections in AngelicaRedirector and multiple render mixins. - @mitchej123
- Removed: OpenGLHelper dependency
- #1208 Relocated MixinRenderGlobal shader logic from sodium mixins to dedicated shaders mixin package and removed duplicate code. - @mitchej123
- Removed: duplicate mixin in sodium module
- #1207 Changed RenderSystem to route 8 render calls through GLSM instead of making direct OpenGL calls. - @mitchej123
- #1200 Rewrote DisplayListManager state handling to avoid push/pop during compilation, added relative matrix transform tracking, implemented proper matrix/draw barriers for flush synchronization, and refactored AccumulatedDraw classes. - @mitchej123
- Added: relative matrix transform tracking, draw barriers
- Fixed: display list rendering issues
- #1186 Replaced catch(Throwable) with catch(Exception) in 16 files across reflection compatibility, texture rendering, shader utilities, and MCPatcher modules. - @glowredman
- #1093 Added more VAO test cases to GLSM_VAO_UnitTest.java to verify glClientActiveTexture independence from bound VAO state. - @sisyphussy
- Added: additional VAO unit tests
- #1018 Split AngelicaRedirector into separate transformer classes for FML and RFB loading paths, moving shared logic from SodiumBlockTransform.java. - @Alexdoru
- #842 Removed
BufferWriterand associated*QuadWriterclasses, updatedBlockTestto use GTNHLib model API, and updated Gradle wrapper and dependencies to match GTNHLib changes. - @ah-OOG-ah- Removed: BufferWriter, ItemVBOQuadWriter, PositionColorTextureQuadWriter, PositionQuadWriter, PositionTextureColorQuadWriter, PositionTextureQuadWriter, ModeledBlock interface
Documentation
- #1864 Added AI_POLICY.md documenting contribution guidelines and .github/PULL_REQUEST_TEMPLATE.md for consistent PR submissions. - @MalTeeez
- Added: AI contribution policy, PR template
- #1802 Added explanatory comments in
GLStateManagerto document implementation rationale. - @mitchej123- Added: documentation comment
- #1706 Deleted CTM.MD guide file and associated images. - @VortexSo4
- Removed: CTM guide documentation, CTM tutorial images
- #1667 Added CTM.md documentation file with visual examples and added optional WorldEdit dependency. - @VortexSo4
- Added: CTM documentation guide, CTM reference images
Chores
- #1986 Bumped Gradle and 3ify dependency versions to resolve linter failures during build. - @ah-OOG-ah
- Fixed: Linter crashes
- #1937 Fixed typo in .github/PULL_REQUEST_TEMPLATE.md. - @tiffit
- Fixed: spelling error in PR template
- #1893 Updated README.MD and AngelicaMod version detection strings to reflect updated GTNHLib requirements. - @mitchej123
- #1867 Added announce-release.sh script and release-tags.yml workflow for automated release announcements. - @mitchej123
- Added: release announcement workflow, release announcement script
- #1865 Bumped glsl-transformation-lib and buildscript versions in dependencies.gradle and settings.gradle.kts. - @mitchej123
- #1791 Added test configuration to build.gradle.kts files and corrected texture cache and VAO tests to use proper array comparison. - @mitchej123
- Added: JVMDG warning suppression in tests
- Fixed: failing unit tests
- #1409 Cleaned up ProgramId by removing resolved TODO. - @Eclipse-Sol
- Removed: TODO comment
- #1201 Modified GLSM_PushPop_UnitTest to work correctly on Nvidia GPUs. - @mitchej123
- #1194 Added GLSM_TextureInfoCache_UnitTest class with test coverage for texture cache operations. - @mitchej123
- Added: unit test for texture cache
- #1147 Bumped GTNHLib dependency, enabled Jabel for tests, replaced Integer usage with primitives, simplified JOML matrix identity checks. - @mitchej123
- Removed: Integer wrapper usage
- Fixed: Iris disabled crash, JOML matrix checks
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@mitchej123 (378), @Eclipse-Sol (54), @sisyphussy (39), @Alexdoru (25), @DeathFuel (20), @Caedis (17), @DarkShadow44 (16), @kotmatross28729 (14), @MalTeeez (13), @tiffit (11), @ah-OOG-ah (10), @Dream-Master (9), @VortexSo4 (8), @danyadev (7), @embeddedt (6), @Cleptomania (5), @SpacEagle17 (5), @Kai-Z-JP (4), @koolkrafter5 (4), @wlhlm (4), @Auynonymous (3), @boubou19 (3), @copilot-pull-request-reviewer (3), @jss2a98aj (3), @mist475 (3), @Nana-Sakura (3), @RecursivePineapple (3), @Ruling-0 (3), @UltraProdigy (3), @ABKQPO (2), @ALongStringOfNumbers (2), @alppp (2), @Apis035 (2), @brandyyn (2), @copi143 (2), @eigenraven (2), @Eldrinn-Elantey (2), @KAMKEEL (2), @Kremnari (2), @kurrycat2004 (2), @Midnight145 (2), @NealDeal34 (2), @Ranzuu (2), @Yoshy2002 (2), @12411234 (1), @Algent (1), @BallOfEnergy1 (1), @branan (1), @Chitak985 (1), @chrombread (1), @Creeper-banner (1), @CRIMSTAL (1), @czqwq (1), @glektarssza (1), @glowredman (1), @GribanovIvan (1), @guusw (1), @Jakfut (1), @JohnButlerThird (1), @klorman (1), @Kogepan229 (1), @Kokekabe-Madoha (1), @Kynake (1), @lc-1337 (1), @leagris (1), @MassAnarchyy (1), @MellowArpeggiation (1), @PLASMAchicken (1), @qhris (1), @RainVaporeon (1), @RedNicStone (1), @Sopel97 (1), @SuperSoupr (1), @Teteros (1), @tuodekun (1), @Wokafishh (1), @XLin0mu (1), @YannickMG (1)