Changelog
Modern UI 3.12.0.2
NeoForge Extension 1.21.1
- (1.21.1 only) Disable blur effect by default when OptiFine is installed
- (1.21.1 only) Fix coordinates in layer blitting
- Add complete version of Still Alive, the Portal ending song
- Add bootstrap option
modernui_mc_skipGLPromotion
to skip GL promotion - Always skip GL promotion on macOS
- Add modified version of Inter font "Inter Frozen Medium" and its native italic font as default
- Add in-game changelogs to Home UI
- Add bootstrap options:
arc3d_context_useStagingBuffers
to enable staging buffers in OpenGL, default is false, previously truearc3d_context_allowGLSPIRV
to use SPIR-V in OpenGL, compiled by Arc3D shader compiler, default is false
- (Forge/NeoForge only) Initialize UI manager and UI thread earlier
- Add a separate option "Additional Blur Effect" to blur vanilla screens, default is false
- Fix threading issue in layer blitting, which may cause crash when resizing window
- (1.21.1+, NeoForge only) Always do GL promotion if EARLY_WINDOW_CONTROL is disabled
- Use private logger instead of framework logger
- Add configs to custom "ding" sound and volume
- Update localization to match vanilla language data
- Add "Reset to Default" to context menu in Preferences UI, to reset a config entry to its default value
- Add back view configs and add some new view configs
- The entire Center UI is reworked, a great number of UI/UX improvements and bug fixes
- Provide an abstraction of config system
Forge Extension 1.21.1
- Equivalent to NeoForge version, except where noted
Fabric Extension 1.21.1
- Functionally equivalent to NeoForge version, except where noted
Modern Text Engine 1.21.1
- Add config for bitmap horizontal offset
- (1.21.4+ only) Add support for no shadow text (i.e. shadow_color=0)
- Emit no lines for empty strings when computing line breaks to match vanilla behavior
- Make StandardGlyphInfo return exact advance instead of ceiling, matching vanilla TrueTypeProvider behavior. This might improve the rendering of the AE2 guidebook
- For line wrapping of formatted text, allow emitting no lines to match vanilla behavior, fixing the issue where an empty tooltip is sometimes visible.
- Fix crash with obfuscated style on large bitmap fonts
Core Framework
- Fix disappearing transitions caused by removing views in batches cannot be seen
- Tweak edge absorption in NestedScrollView
- Delay TextBlob initialization of ShapedText until draw time
- Add paint parameter for leading/trailing margins
- Merge TrailingMarginSpan with LeadingMarginSpan, also fix a text layout bug
- Optimize many text processing methods
- Fix StyleSpan is not cumulative
- Move LogWriter to internal
- Migrate to SLF4J, remove Log4j dependency
- Add filled text field style
- Add measure cache
- Add convenient methods for specifying styles
- Add thread-safe methods to change themes in context
- Change AdapterView.OnItemSelectedListener to functional interface
- Fully configurable view configuration
- Update scroller to calculate physical coefficients using ppi
- Make CharacterStyle cloneable, also fix TextPaint.density
- More methods in Color, and allow creating instances
- Update default fragment SFX transitions
- Allow shallow copy of Bitmap and Image as shared owners
- Add TabLayout and styles
- Improve widget scrolling mechanism
- Add tag system to View
- Add MotionEasingUtils for common bezier interpolators
- Add RTL support and fix bugs for ViewPager
- Improvements and fixes for ViewPager
- Fix hotspot point not dispatched to children
- Fix LinearLayout divider layout bug in RTL direction
- Add option to enable SPIR-V in OpenGL backend, but disable by default
- NVIDIA driver will compile SPIR-V back to into GLSL in OpenGL, and the disassembler takes up at least 40MB of additional RAM usage
- Use rounding for font metrics
- Rounding seems to produce a more accurate layout, so the ceiling is no longer used unless there are internal changes in the JDK
- Fix view pager touch slop
- Update color mappings for all buttons
- Not showing long click tooltip when there's hover tooltip
- Add icon button styles
- Fix two bugs in font register
- Should lookup in FontManager to use native bold/italic fonts
- To ensure thread-safety, lock the whole register method (actually a JDK bug)
- Improve tooltip show/hide logic when tooltip text is changed
- Add shadow alpha configuration to ViewGroup
- Add ComposeShader to composite two layers
- Add copyWithLocalMatrix for gradient shaders
- Use an accurate method to detect whether Bidi is needed
- Matching ShapedText and MeasuredText behavior. This is 20% slower than the previous one, but is fast enough.
- Optimize image shader constructor, add copyWithLocalMatrix
- Add new slider styles and animation control
- Expose clearFocusInternal method to internal code
- Expose setOptionalIconsVisible method
- Remove unnecessary ThreadLocal usage
- Add View lighting and shadow casting system
- Optimize line breaking performance
- Add Drawable dirty bounds
- Update dropdown style
- Add menu item icon style and update menu item layout
- Add new checkbox style
- Add new text field and spinner styles
- Add the drawable tint methods to TextView
- Move TextStyle from Paint to TextPaint subclass
- Add builtin icons and replace legacy code
- Add new draw methods to Canvas API
- Renew RippleDrawable with masks and animations
- Add Outline class and compute Drawable outline
- Disable edge AA for ImageDrawable by default
- Change font_size_granularity to 0.25
- Enable subpixel positioning for text rendering
- Sync with latest Arc3D
- Add indeterminate state to checkbox, a tri-state checkbox
- Update subset logic for (Rounded)ImageDrawable and move subset to constant state
- Change default reference density DPI to 96
- Add on/off tooltip text for CheckableImageButton, and optimize
- Add ArrayAdapter.getContext()
- Allow nested radio groups to work, deprecate RelativeRadioGroup
- Add on/off text to switch, and optimize
- Add toggle button
- Enhance RadioGroup, so that it can work on all checkable views
- Add Checkable2 interface for checkable views with a callback
- Make CompoundButton always have checkable state to sync with CheckableImageButton
- Add checkable image button
- Add elevated button style
- Adjust default button size
- Move modulateColor to ColorStateList as a public method
- Adjust tooltip padding
- Add InsetDrawable
- Allow ShapeDrawable to draw rounded rectangles with per-corner radius
- Add methods to draw rounded rectangles with different corner radii to Canvas
- Temporarily disable popup anchor aligning to work around a bug
- Add ClipDrawable
- Add AnimationDrawable for frame-by-frame animations
- Add themed resource cache
- Add theme styles
- Add dropdown styles
- Add styles for popup menus
- Add seek bar styles and other improvements
- Add progress bar styles (determinate and indeterminate)
- Full functionality and fixes for ProgressBar
- Update text appearance of menu item
- Add radio button and switch styles
- Make EdgeEffect accept Context to retrieve theme color
- Add TextAppearance class and methods to apply typography
- Add many buttons styles
- Add many system theme values, based on M3 Expressive
- Add attributes/styleables for most UI components
- Rework the TypedValue class
- Add methods to retrieve attributes and styles in batch
- Add base methods for retrieving attributes
- Add ResourceId, StringView, ThemeKey
- Introduce a new Resources and Theme system
- Merge with ICU Bidi for MeasuredText
- Add fast path for BoringLayout.drawText() for all alignments
- Add toString() for animator classes
- Remove assertions for kotlin compile tasks
- Add RoundedImageDrawable (always keeping aspect ratio)
- Remove Paint.getShader() and simplify ImageDrawable
- Update scrollbar colors
- Update toast and tooltip styles
- Update popup menu styles
- Add new slider style
- No longer use pointing hand cursor for buttons (only for hyperlinks now)
- Update SeekBar to respect thumbOffset and support split track
- Add new drop-down style
- Update drop-down transition animation
- Change default layout for ArrayAdapter
- Change default selector for ListView
- Disable default transition for windows (rework needed)
- Add text padding for Switch
- Add custom clip bounds for View
- Add new switch thumb drawable
- Add Switch, deprecate SwitchButton
- Add two cubic Bezier interpolator
- Add button tint blend mode
- Make ShapeDrawable always skip stroking when the color is transparent
- Add new radio button drawable
- Add SystemTheme
- Make ValueAnimator work without values
- Support line spacing addition/multiplier for text Layout
- No longer using Caffeine for text layout caching, remove Caffeine dependency
- Fix AnimationMatrix clear
- Make View.getMatrix() return non-null
- Add partial view invalidation, dirty region accumulation
- Delete obsolete GLSL shaders
- Add RippleDrawable (allowing analytic mask)
- Add Bezier time interpolator
- Add experimental support for Windows native window border (no title bar)
Markflow Extension
The old Markdown extension is completely deprecated and replaced by the new Markflow
- Renew markdown theme & styling
- Fix heading break style when wrapping
- Update API notice for Markflow
- Markflow initial version
Arc3D Graphics Engine
- Update benchmark, shader source, and dependency version
- ContextOptions logger defaults to null
- Remove instance usage of Color
- Disable runtime constant BIG_ENDIAN since LWJGL does not support big endian machines
- Rename Pixels to PixelRef
- Rename Path.recycle() to Path.release()
- Remove the old usage of UniqueID
- Rework some classes
- Optimize TaskList and more
- Fully decouple core and sketch package
- TextureQueryLod support should default to false
- Remove helper methods for drawing round rects
- Rework PathIterable and PathIterator, add Shape interface
- Rename SharedResourceCache to GlobalResourceCache
- Move 2D rendering API to sketch package
- Optimize and fix text metrics computation
- No longer make Blender and ColorFilter ref-counted
- Many improvements on high-quality text rendering
- Add Rect2f.makeInfiniteInverted() for branchless bounds union
- Update load factor for multimap
- Delete a lot of old code
- Add drawEllipse to Canvas
- Add AnalyticComplexBox geometry step, for complex AA rounded rectangles
- Trying to use Contract on read-only parameters
- Fix constant value retrieval for vector splats
- Add isOpaque for more shaders
- Merge Color4fShader with ColorShader
- Allow creating GL programs without fragment shaders (for depth-only pass)
- Add cover bounds step to handle non-AA fill and scissor fill
- Simplify LinkedListMultimap and make it small-footprint
- Add experimental drawEdgeAAQuad and drawBlurredRRect to Canvas
- ResourceCache: move budgeted and shareable to resource creation
- Strengthen FragmentStage initialization
- Add analytic blurred box geometry step
- Add modes for makeWithLocalMatrix, allow pre-concat, post-concat, replacement
- Optimize Vertices color array memcopy, move the swizzling to GPU
- Add RRectShader and implementation
- More methods to the RRect class
- Leak ref count of some wrapper-like effect objects to the underlying objects
- Allow some Shader objects to be trivially ref-counted
- Add option to enable SPIR-V in OpenGL backend
- Enable SPIR-V in OpenGL backend
- Fix vertex array setup prior to OpenGL 4.3
- Add per-edge AA quad geometry step
- Add option to use staging buffers in OpenGL, and default to false (previously is true)
- Rewrite shaders from GLSL to AkSL (Arc3D shading language)
- Fix sizeof(IndexType) calculation
- Fix blend shaders bugs
- Make StrikeDesc immutable by default
- Full support for subpixel positioning fonts
- Add methods to pack subpixel info into glyph ID
- Migrate to jspecify
Arc3D Shader Compiler
- Rename some classes in compiler package
- No longer use 'packed' as a variable name
- Prior to GLSL ES 3.00, 'packed' is a reserved keyword. However, even if we use versions 3.00 and above, some drivers still consider it a keyword.
- Add some intrinsics to SPIR-V codegen
- Add TreeWriter to visit and modify the AST
- Rework TreeVisitor and AST node accept
- Use Context object everywhere instead of ShaderCompiler object
- Now accept only String input, due to immutability and compressed strings
- Remove short/half types in favor of min16int/min16float types
- Full support for GLSL codegen in OpenGL/ES backend
Files
ModernUI-Forge-1.21.1-3.12.0.2-universal.jar(23.93 MiB) Primary Download
Details
Licensed LGPL-3.0-or-later
Published 2 years ago
Updated 15 hours ago