- Change default typeface/font loading behavior
- Add option to replace vanilla blur effect with Modern UI for optimization
- Allow setting blur radius to 0 to disable blur
- Add MinecraftSurfaceView to handle raw rendering calls
- Ensure that all (native/GPU) resources are closed when the game exits
- Slightly improve the Center UI
- Fix a random crash when opening/closing UI frequently
- Rework tooltip rendering
- Add white noise to shadow
- Add dithering to gradient colors
- Use L1 norm instead of L2 norm for coverage antialiasing
- Change shadow approximation method
- Change default border radius and shadow alpha
- Add new conditions for adding the extra space below tooltip title line
- If the first three lines of the tooltip have different styles, we consider the first line as the title
- Reduce the saturation of default tooltip colors
- Allow using arrow keys to manually scroll the tooltip
- Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs
- Optimize blur effect
- Use texelFetch instead of texture
- Remove the additional blit pass and render target because we work around a Minecraft bug
- Try to cache the shader program and temporary render target for blurring, and handle errors
- Apply blur effect to the screen background instead of the world, just like Minecraft 1.21
- Migrate to new rendering pipeline
- Equivalent to NeoForge version
- Functionally equivalent to NeoForge version
- Add compatibility for bitmap fonts with custom text shader
- Enable linear metrics and disable font hinting by default
- Add config to change the minimum pixel density for SDF text
- Fix some possible bugs on text rendering
- Optimize text rendering
- Add texture cleanup to FontResourceManager
- Simplify text layout rendering code
- Use Math.round for aligning pixels
- Fix glyph info for FontSet compatibility
- Rework and optimize bitmap font rendering
- Try to stitch bitmap font into atlas
- Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics
- Saturate glyph metrics for bitmap font
- Fix hashCode and equals for correct de-duplication
- Adjust lod bias for normal text shader
- Adjust bitmap font to match vanilla behavior
- Adjust glyph advance calculation
- Adjust Unicode font loading behavior
- Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set
- Fix text layout bug when finding style transitions
- Allow caching the missing glyph to atlas
- Adopt full text rendering technology from core framework
- Fix line breaker that may output no lines and keep consistency with vanilla behavior
- This fix a bug with IBE Editor
- Fix text strike cache invalidation for FontSet compatibility
- This fix a bug with Create
- Add text layout dump in advanced options
- Add a command for debugging line breaker
- Add methods for debugging text engine
- Work around AMD driver bug before GCN 1
- Change the initial size of A8 font atlas to 2048x2048
- Fix crash when compacting font atlas
- Enable linear text by default, increase layout cache limit
- Delete render thread executor
- Delete old text rendering code
- Add GradientDrawable that draw shapes with gradient colors
- Update/fix ShapeDrawable with latest rendering pipeline
- Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode
- Rework ImageDrawable.setSrcRect() method
- Update ImageDrawable with antialias, dither, filter, and tile modes
- Add setter/getter to change blend mode for edge effect
- Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP
- Fix Matrix.mapRect()
- Fix EdgeEffect centerX
- Improve text rendering
- Add AngularGradient API and implementation
- Add RadialGradient API and implementation
- Add LinearGradient API and implementation
- Add GradientShader API and implementation
- Add new draw methods to Canvas class
- Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN
- Add ColorFilter class that can be installed on Paint
- Refactor Image class and fix Image.close() issue
- Refactor Paint class
- Add ImageShader class
- Add Shader class that can be installed on Paint
- Add TextView.setTextSize() that specifies a unit, default is sp
- Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas
- Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0
- Deprecate Canvas.saveLayer() for future layer compositor and render tree
- No changes
- No changes
- Remove old usage of Image.getSurfaceFlags
- Add Image.getUniqueID() and static methods to create raster images
- Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas
- Fix Matrix.mapRect() is not correct
- Fix compiler error
- Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially
- Optimize matrix computation for text ops
- Replace Matrix4 in rendering code with Matrix
- Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix
- Fix TextBlobBuilder offsets not reset after build
- Add RoundRect flatten methods
- Improve NoPixelsDevice clip tracking, remove ConservativeClip
- Add DrawAtlas.purge() to free unused pages
- Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods
- Allow DrawAtlas to perform an immediate compact
- Rename some classes and methods
- Change the default uniform buffer block size to 32KB
- Fix color array copy in Vertices::makeCopy
- Fix persistent mapping check in GLBuffer
- Temporarily enable RGB texture in OpenGL
- Try to share vertex array objects in OpenGL backend
- Expose resource cleanup API, also cleanup framebuffer cache and strike cache
- Review ResourceCache, fix some legacy issues
- Add support for alpha-only images, add missing Shaders shader implementation
- Purge framebuffers immediately after one attachment was destroyed
- Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0
- Improve texture and renderbuffer creation
- Deprecate old Device methods
- Fix OpenGL 3.3 and GLSL 330 compatibility
- Finalize BoundsManager, add samples
- Add plus_clamped, minus, and minus_clamped blend info
- Remove 01 coverage in non-aa case
- Add blend equation in GL backend
- Mark old code as deprecated
- Implement basic functionality for final blender, enable dual source blending
- Fully implement BakedTextBlob and TextBlobCache for text rendering
- Fix blend shader doesn't compile
- Add TextBlob as an immutable container for glyph rendering
- Rework FramebufferDesc, add FramebufferCache to manage framebuffers
- Basically implement texture copy task, implement Surface.onNewImageSnapshot()
- Add factory method to create Surface
- Implement Device management
- Invalidate atlases if RC.snap() failed
- Fix several threading issues for OpenGL backend
- Handle ColorFilter properly
- Add BlendModeShader
- Fix color space transformation on paint's solid color
- Add primitive color blending and color space transform
- Add blending with shader and paint's alpha
- Fix color space transformation on BlendModeColorFilter
- Add implementation of BlendModeShader and BlendModeColorFilter
- Remove Geometry interface
- Add Vertices class and Vertices step to drawVertices
- Add shader implementation for 42 blend modes
- Fix arg name for uniforms that start with no mangle prefix
- Add StaticBufferManager and Buffer-to-Buffer copy task
- Fix ImageUploadTask bug
- Implement remaining important Canvas methods
- Add and implement new Canvas methods in Device
- Fix depth is perspective-correct; the depth should be preserved, then multiply it by w.
- Fix bugs on arc shader with square end
- Finish methods to create and draw GlyphRuns
- Add method to set Matrix elements
- Fix Matrix4.hashCode() for negative zero
- Add Geometry.getBounds() to compute bounds
- Improve ClipStack to compute several bounds
- Fix stroke inflation radius computation for inner and outer stroke
- Optimize draw when it does not depend on dst
- Fix several issues on Device
- Implement the creation of AtlasSubRuns
- Add method to compute res scales if matrix has perspective
- Fix AnalyticSimpleBoxStep instance data type
- Add method to draw pie and chord, optimize shaders
- Add rendering with three cap types of stroke arcs initially
- Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color
- Fix ScalerContext_JDK does not return a reliable glyph bounds
- Fix DrawAtlas assertion and GlyphAtlasManager row stride
- Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc
- Improve finite check and non-invertible matrix
- Add RendererProvider to manage GeometryRenderers
- Finish implementation of atlas management for draw ops and glyph atlas
- Calculate the Path byte size when generating Glyph in Strike
- Implement Strike, StrikeCache, and ScalerContext basically
- Add Paint.setPathEffect(), add missing javadoc in Font
- Add Path.transform(), add PathIterator.getFillRule()
- Add GPU dithering implementation (no texture lookup)
- Fix GLCaps.FormatInfo for RGB565
- Update Paint and related classes
- Make Blender and ColorFilter strictly ref-counted
- Add Shader.isConstant()
- Fix Canvas.drawCircle()
- Add Paint.setColor4f()
- Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values
- Remove Paint's SmoothWidth, MaskFilter and ImageFilter
- Add PathEffect skeleton class
- Fix several hashCode implementation for negative zeros
- Update Paint.nothingToDraw() for more blend modes
- Add more methods to RoundRect
- Update Surface, Canvas, and related classes
- Add Stroke, PathIterable, update PathStroker
- Optimize shaders
- Use short-circuit for transfer function
- Use texelFetch for cubic shader, remove invImageSize uniform
- Add perspective correction for local matrix shader
- Extract color space transform from image shaders
- Ensure subset sampling does not use mipmaps
- Implement bicubic and strict subset sampling
- Change AnalyticSimpleBoxStep to use L1 norm
- Fix bug on GLImageDesc.equals()
- Fix bug on uniform block layout
- Change Paint constants and SamplingOptions, adding classes for text rendering
- Done depth stencil work, fix several bugs
- Add flipY and unorm clamp for PixelUtils
- Implement LinearGradient, RadialGradient, AngularGradient
- Fix bugs on ImageShader.makeSubset()
- Fix bugs on premul & unpremul in some classes
- Improve ColorSpace transform, add PixelUtils.convertPixels()
- Add new ColorSpace transform shader
- Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc
- Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3
- Make Paint, PaintParams, and Draw classes closeable
- Fix TextureTracker; rename gradient shaders
- Optimize box shader
- Accumulated updates on fragment effects and shading pipeline
- Implement simple pixel upload using image-to-image copy
- Add new Shader and ColorFilter classes
- Rename PixelMap to Pixmap, PixelRef to Pixels
- Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy
- Remove the offset parameter of Buffer.unmap()
- Finish AnalyticSimpleBoxStep
- Allow implicit conversion between numerics
- Add DepthStencilSettings and BoundsManager, limit the number of geometry steps
- Optimize vertex writer and uniform writer, optimize uniform data deduplication
- Basically complete the Granite Renderer
- Add geometry projection, solid color simplification
- Finish RenderPassTask execution Fix scissor origin, initial scissor setup
- Complete DrawPass's texture sampler binding
- Add TextureDataGatherer, texture sampler binding and tracker
- Add UniformDataGatherer and UniformDataCache
- Fix Matrix4.store()
- Add framebuffer creation and some tests
- Some work on new PipelineBuilder
- Update Buffer, GLBuffer, persistent mapping and so on
- Accumulative updates for new renderer
- Add method for updating clip draws
- Update ClipStack
- Improve vertex specification and buffer binding
- Rename the project from 'Arc 3D' to 'Arc3D'
- Commit all accumulative updates
- Change BlendMode.apply() to static methods
- Accumulative updates for the new pipeline
- Attempt to refactor pipeline
- Add more classes for new pipeline
- Add frexp & ldexp impl
- Some attempts on pipeline
- Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture
- Add Image and Framebuffer creation, add reusable framebuffers
- Refactor GpuResource class hierarchy
- Support GL_CONTEXT_LOST
- Tons of work on Engine and OpenGL backend, not listed
- Add pre-defined extensions to compile options
- A lot of work on abstraction between GL3 and GLES3
- Initially add GLInterface for both OpenGL & OpenGL ES support
- Add std140/std430 layout qualifiers, add include directive parsing
- Abandon usage of GLSL ARB extensions that core in later versions
- Fix GLCaps crash for some capabilities
- Fix some bugs in preprocessing
- Other improvements
- Add new preprocessing methods, allow sub-range source
- Add StringLiteral grammar, fix Whitespace grammar
- Add FatalError to terminate compiler
- Add identifier name length check (1024 at most)
- Add benchmark between Arc3D and shaderc (glslang)
- Update Lexer
- Add directive grammar
- Add 'using' grammar for type aliases
- Add newline token, fix block comment grammar
- Do not use new word breaker in command mode
- Add preferences navigation to mods config button
- Improve PreferencesFragment
- Add API to allow back to previous screen, allow passing a ScreenCallback
- Add API to create MuiScreen
- Add Segoe UI Symbol to default fallback list
- Fix issue with TrueType Collection registration
- Add font registration config to register additional fonts
- Add modifiers to ACTION_SCROLL event
- Add showing layout bounds
- Add adaptive tooltip colors
- Renew tooltip rendering
- Create rendertype_modern_tooltip shader
- Interpolate color bilinearly in sRGB space
- Better shadow effect, add shadow opacity
- Add corner radius config
- Adjust auto scrolling velocity
- Fix bugs on exact positioning with some mods
- Fix a rare crash on config reloading due to thread-safety
- Apply blur effect only to screens that have default background (configurable)
- Do not use Overwrite for calculateScale
- Fix startup crash on server and datagen
- Fix EditBox deletion undo not working
- Refactor project structure and bootstrap
- Remove ScreenCallback capability
- Others are equivalent to NeoForge version
- Fix tooltip compatibility with Sodium
- Others are functionally equivalent to NeoForge version
- Change logging level for font loading, enhance onFontRegistered thread-safety
- Add new default font behaviors and rule set, allowing regexes to match fonts
- Adjust text renderer alpha threshold from 1 to 2 (0-255)
- Fix only a very small set of characters can be used for obfuscated rendering
- Use Latin1 for FastCharSet
- Fix a rare crash on text engine due to batch rendering and display mode changes
- Add Markdown preview
- Use vanilla border style for modern tooltip (when rounded = false)
- Add font names for registered fonts, add JetBrains Mono
- Update to Emoji 15.1, remove Emoji 15 workaround
- Add auto scroll when tooltip is out of screen
- Add shadow effect for tooltip
- Add developer mode config to Preferences GUI
- Hide Advanced Options and Dev when not in developer mode
- Adjust default font behavior to be locale-sensitive
- Tweak fallback font loading behavior (now it accepts font files)
- Move destroy() method so that the game won't crash in forced tick after the window closes
- Handle glowing sign where text color is black
- Update Traditional Chinese - notlin4
- Port to NeoForge
- Remove ScreenCallback capability
- Others are equivalent to Forge version
- Enhance tooltip compatibility with Sodium (when rounded = false)
- Add tooltip line wrapping for Fabric
- Add tooltip center title and title break for Fabric
- Others are functionally equivalent to Forge version
- Add Untranslated Items integration
- Fix useComponentCache not working at all
- Fix force unicode font not working after game restart
- Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen)
- Fix validation errors
- Add font atlas compact
- Add Iris shaders integration
- Schedule GUI Scale value listener on next tick
- Better text config category
- Change typeface loading behavior
- Restore cursor position for Emoji shortcode substitution
- Rework font manager to implement core Emoji rendering
- Add GPU driver bug workarounds bootstrap properties
- Improve text field undo/redo
- Add undo/redo for EditBox
- Add GUI Scale to Preferences
- Add batch input commit
- Update translations
- Implement grapheme break for all text fields
- Implement break iter for vanilla EditBox
- Add music player
- Increase window size for OpenGL version test, fix game freeze on Linux
- Update font resources and licenses
- Add tooltip border width config
- Fix format error when setting color opacity
- Remove unused assets
- Completely switch to Arc3D and abandon GL*Compat
- Auto clean up less used GPU resources
- Always generate text config
- Use jar-in-jar for caffeine and flexmark
- Update synchronization, improve render performance
- Disable MSAA by default, 0.176x VRAM usage than before, and faster
- Update to latest Arc3D and ModernUI
- Add GUI Scale slider for Fabric
- Fix mod logo on Fabric
- Others are functionally equivalent to Forge version
- Auto disable modern text shaders when Iris shaders are active
- Now follow vanilla's Force Unicode Font setting
- Fix compat with Loot Beams
- Fix compat with Debugify
- Fix compat with Curios
- Fix shadow offset Y for bitmap font
- Fix fist line rendering in sign edit GUI
- Add text layout command
- Remove text cache cleanup on parallel dispatch
- Dont draw text outline when 'modern text shaders in 3D' disabled
- Keep text shader preload consistent with vanilla UI shader preload
- Improve UniformScale text when GUI scale is less than 4
- Separate Arc 3D from core framework
- Optimize Matrix
- Optimize ImageStore
- Fix Image cleanup
- Add font atlas compact
- Fix emoji font color
- Add full Emoji font support to core framework
- Add Half (float16) type
- Move BinaryIO to Parcel
- Add ByteBuffer implementation for Parcelable
- Add commit batch input
- Fix per-cluster measure bug
- Fix track on rewind
- Rework on AudioSystem
- Move old ViewPager implementation to core framework
- Delay mipmaps regeneration for font atlas
- Fix and optimize SpanSet
- Decrease the default touchSlop value
- Completely remove GL*Compat classes, remove MSAA rendering
- Review bug on glfwWaitEventsTimeout
- Add CascadingMenuPopup presenter
- Remove IOException in readIntoNativeBuffer if >=2GB
- Fix compat with default render loop for OpenGL 3.3
- Optimize default bootstrap process
- Improve synchronization between UI thread and render thread
- Fragment now implements OnCreateContextMenuListener
- Fix saveLayer with alpha=0
- Add ContextMenuInfo
- Add ExpandableListView
- Fix ShapeDrawable line thickness
- Disable MSAA by default, and reduce the number of off-screen targets
- Remove the limit on the number of families in FontCollection
- Other small fixes and improvements
- Fix validation errors
- Add DriverBugWorkarounds
- Change to LinkedListMultimap
- Use HashMap for resource cache
- Better handling dirty OpenGL context states
- Add Blend constants
- Refactor Engine API
- Add Pixmap
- Fix GpuBufferPool
- Add SDF rectangle geometry processor
- Add NVIDIA driver bug workaround, when binding index buffer using DSA
- Add compat with OpenGL 3.3 upload pixels
- Add copyImage implementation, change Surface hierarchy
- Add Matrix.mapPoints and Matrix.getMin/MaxScale
- Add shear, map and I/O methods for Matrix
- Fix and optimize Matrix#invert
- Re-implement Matrix functions
- Fully implement ClipStack functions
- Other small fixes and improvements
- Change the crash with TipTheScales to warning
- Remove bitwise AND in shaders
- Remove bitwise AND in shaders
- Functionally equivalent to Forge version but removed some features
- Only override Font's StringSplitter
- Re-architect for platform abstraction
- Change step size for master volume multiplier option to 0.01
- Prevent Action Center from being opened when a screen with shouldCloseOnEsc=false is opened
- Request window attention when "Ding" is enabled
- Functionally equivalent to Forge version but removed some features
- No change
- Add OptiFine-like zoom
- Add master volume multiplier on window blur or minimized
- Add framerate limit on window blur or minimized
- Add hot reload of the default typeface list
- Add font selection list and open file dialog
- Separate old font family config into preferred one and fallbacks
- Fix ASCII digit input in Arabic
- Add tooltip center alignment
- Add tooltip title break
- Improve extra spacing below tooltip title
- Add config to switch between rounded rect or normal rect for tooltip border
- Add config for exact tooltip positioning
- Add maximized borderless mode
- Improve fullscreen borderless on Windows
- Update default config
- Fix crash on setting opacity to 0
- Fix possible crash in parsing color string
- Add Fragments into crash report
- Add more advanced options
- Add fake italic support for bitmap fonts
- Add device font size computation in 2D
- Add SDF text control in 2D
- Add cache lifespan config back
- Optimize cache performance
- Add config for async text layout
- Fix text engine not fully disabled
- Fix memory leakage when reloading resources
- Add smart SDF text control
- Fix polygon offset issues
- Fix possible crash on populateDefaultFonts
- Add line break style config
- Add line break word style config
- Fix shadow offset for bitmap fonts
- Add redirect of UniformFont
- Add tooltips for some options
- Add in-game option for background opacity
- Use bootstrap.properties instead of bootstrap file
- Add dynamic tooltip border colors and presets
- Block NUL char for input method
- Add config to control component cache
- Add default font behavior to control whether to use default font
- Add SpaceFont for compatibility
- Add position alignment for direct mask drawing
- Add StandardFontSet for better mod compatibility
- Make color emoji work in font itemization rather than brute force
- Enhance and optimize text layout engine
- Only compute the required information
- Make text layout asynchronous
- Mix layout processor into LayoutCore to increase cache hit
- Adjust paragraph layout lifespan
- Reduce performance and memory impact
- Remove fast digit replacement
- Make obfuscated style work with bitmap fonts
- Adjust EditBox highlight color
- Fix crash on dedicated server
- Fix possible startup crash
- Add ContainerDrawHelper
- Fix EditBox selection highlight
- Fix per-glyph rendering for compatibility
- Fix obfuscated text crash in world using SDF
- Port to 1.20
- Port to 1.20
- Add config to use vanilla font for convenience
- Remove tooltip fade-in animation
- Port to 1.19.4
- Add slider control for preferences
- Fix UI screenshot not un-premultiplied
- Don't allow soft launching due to OpenGL 3.3 support
- Fix GUI scale pinned after game restart
- Add CenterFragment2
- Remove noise from gaussian blur shader
- Remove deprecated configs
- Make SDF work as long as in 3D or non-translation matrix
- Make SDF work with 32pt font size at least
- Remove alignPixels due to font hinting
- Replace 8x outline with SDF stroke
- Fix compatibility for Create display board
- Change Twemoji 14 to Google Noto Color Emoji 15
- Fix text rendered as emoji without VS-16 (0xFE0F)
- Combine IamCal (Slack) shortcodes with JoyPixels (Discord) and Google
- Adjust GUI scale algorithm
- Adjust tooltip border width
- Add distance field text to 3D world
- Fix total advance of layout is never pixel-aligned
- Fix TTF loading in vanilla resource packs
- Adjust texture sharpening factor
- Fix distance-to-edge anti-aliasing is gamma correct
- Support capability for fragments and screens
- Fix incorrect color blending for tooltip
- Fix GUI scale is always auto after restart
- Fix black screen with blur effect
- Add glow wave effect
- Fix line breaking for obfuscated chars
- Remove enchantment font hack
- Support vanilla bitmap font in replacement run
- Support vanilla bitmap font as font family
- Support vanilla font declaration
- Adjust text decoration thickness
- Reduce unnecessary native memory usage in vanilla
- Make font resource reloading work async
- Optimize ChatFormatting.getByCode to O(1)
- Optimize layout caching strategy
- Add font set to layout key
- Adjust analytic anti-aliasing to screen-space
- Improve font collection itemization
- Update shaders to a modern version
- Change the background blur from 4-pass box blur to 2-pass gaussian blur with lod and noise
- Improve config reloading and action center UI
- Fix crash on dedicated server (though you shouldn't install on server)
- Add config to disable slider GUI scale
- Update GUI scale algorithm
- Add sharpen font atlases
- Change blend mode for glowing text
- Use indexed rendering for glyph meshes
- Add sharpen textures for all shaders
- Always use premultiplied alpha for builtin renderer
- Add I18n compat characters
- Add new API and remove server dependency
- Change registration and network to internal
- Support for OptiFine 1.19.2
- Migrate to MC & Forge 1.19.2
- Add new glowing text effect
- Add deferred rendering to improve performance
- Migrate to MC 1.19.2
- Compact font atlas generation
- Add support for creating window with the highest OpenGL it can
- Fix config reloading even if nothing changed
- Add debug stuff
- No updates
- Workaround SPACE tunneling event is not consumed in EditText
- Enhance GL caps error screen
- Add support for requesting OpenGL 4.6 or 4.5 core profile window avoiding GL caps errors
- No updates
- Internal changes
- Add debug stuff
- Add traditional Chinese support
- Add support for sign glowing text
- Add shadow offset and outline offset config
- Fix auto disable OptiFine fast render not working
- Add support for COMBINING ENCLOSING KEYCAP
- Fix index crash when EditBox contains formatting codes
- Internal changes
- Fix window mode sometimes didn't work correctly
- Fix tooltip BG or FG transparency sorting and write into depth buffer
- Enhance and smooth EditBox rendering
- Adjust alpha threshold from 1 to 2
- Fix NPE when font renders fast chars nothing
- Fix line feed ignored when using fast path of line breaking
- Fix text empty when using fast path of text breaking backwards
- Internal changes
- Make extensions backward compatible to OpenGL 3.3
- Add window mode config (like fullscreen borderless)
- Add config of ignoring GL errors
- Add GL error GUI and link directing
- Add right-to-left layout for modern tooltips
- Add in-game GUI for all new configs
- Add dump of memory info of all textures
- Fix tooltip shaking when rendering at bottom
- Dispatch generic pointer events
- Enable more configs to take effect in real-time without restarting
- Disable Minecraft render thread assertions
- Auto disable OptiFine fast render
- Make text engine backward compatible to OpenGL 3.3
- Add Slack and Discord Emoji shortcode support
- Add BiDi text line breaking with color Emoji support
- Add Unicode color Emoji support (Twemoji 14.0)
- Add pre mipmap generation for bitmaps
- Add bitmap replacement support for text layout
- Add Unicode line breaking algorithm
- Add Unicode text breaking algorithm
- Add Unicode grapheme cluster break algorithm
- Add substring conservative algorithm for line breaking
- Add config of color emoji and grayscale emoji
- Add config of BiDi text direction heuristic algorithm
- Add config of font anti-aliasing and precise metrics
- Add config of font base size and baseline shift
- Add config of rehash threshold and recycle time
- Add config of snapping to pixels for text layout
- Add config of fixing invalid surrogate pairs
- Add config of fast digit replacement
- Add Minecraft vanilla TTF font
- Add fast character replacement and optimize its generator
- Add super-sampling config and disable it by default
- Make BiDi text layout always in visual order
- Fix discontinuous style in continuous text layout
- Reduce the overhead of GL state changing
- Optimize the recycling logic of text layout nodes
- Optimize text layout and iteration performance
- Optimize lookup key and searching
- Refactor text layout engine
- Internal changes
- Enhance layout transition when closed
- Add support for custom OpenGL driver
- Fix GUI crash when disabled
- Enhance GL capability check
- Add server version
- Add tooltip anim duration config
- Add inventory pause
- Fix dedicated server startup
- Add font atlas dump
- Internal changes
- Add baseline config
- Add more obfuscated chars
- Enhance breaking multilayer text at a point
- Add font size config
- Internal changes
- Refactor the loader and improved compatibility
- Add buttons to disable text engine and extensions
- Add radial blur effect (beta)
- Port to 1.18.2 (1.18.1 works as well)
- Preload the engine and parallel cleaner
- Fix font blur when GUI scale is 1 or 2
- Fix obfuscated chars layout
- Internal changes
- Stop crashing if some mods failed to load
- Fix screen lifecycle and threading bugs
- Add DataSet utils
- Add more configs to Center UI
- Make all registries only in dev mode
- Quit UI thread safely
- No updates
- Improve documentation
- Add ReactiveX
- Add BlendMode and color blending
- Add TextView context menu
- Add clickable text styles
- Add Slide and Explode transition
- Add transition SFX to fragments
- Add FULL support for Transition framework
- Add int keys for DataSet
- Add standalone application bootstrap
- Add multithreaded event synchronizer
- Add ContextMenu popup
- Add Menus and Radio Buttons
- Add DropDownList and relevant components
- Add ListView and relevant components
- Add FULL support for ScrollView
- Add FULL support for Nested Scrolling
- Add triangle drawing operation
- Add new scrollbar features
- Add foreground layer to View
- Fix PointerIcon resolving
- Fix some RTL layout bugs
- Fix padding not working sometimes
- Fix inverse matrix
- Fix orthographic matrix
- Auto lose EditText focus
- New touch event handling
- Multithreading AnimationHandler
- Remove generic of animated values
- Add new features:
- Add RelativeRadioGroup
- Add FragmentResultListener
- Add ArrayAdapter
- Add PopupMenu
- Add Spinner
- Add MenuItemView
- Add ImageView
- Add EdgeEffect
- Add AnimatorSet
- Add PopupWindow
- Add CoordinatorLayout
- Add Filter
- Add HandlerThread
- Add ActionProvider
- Add ActionMode
- Add ContextMenu
- Add MenuItem
- Add SubMenu
- Add Menu
- Add Menus
- Add CharacterMap
- Add SparseBooleanMap
- Add EditText
- Add SoundEffects
- Add AdapterView
- Add VelocityTracker
- Add ValueAnimator
- Add Shapes
- Add StateListDrawable
- Add DrawableContainer
- Add ColorStateListDrawable
- Add ImageDrawable
- Add ColorDrawable
- Add Drawables
- Add StateListAnimator
- Add StateListColor
- Add StateSet
- Stabilize Forge API and components
- Add Center UI (Ctrl+K)
- Fix several transition and lifecycle bugs
- Add blur effect to screen background
- Fix vanilla tooltip text not rendering
- Add bootstrap config, OR 1 to disable
- Fix underline and strikethrough not rendering
- Close package
- Always linear sampling font textures
- Merge view alpha property and transitions
- Change paint properties
- Change gradient color ordering
- Add tree base for new render pipeline
- Update Libraries
- Log4j 2.14.1 -> 2.17.0
- caffeine 3.0.4 -> 3.0.5
- icu4j 69.1 -> 70.1
- LWJGL 3.2.2 -> 3.3.0
- Synchronize UI messages
- Update shaders and canvas pipeline
- Update high precision time source
- Add new event loop framework (Fast blocking) (Big Update)
- Native Main Thread
- Async Tasks
- ...
- Optimize bitmap I/O, add .jfif .jif detect
- Add Fragment (inherited from Module) full support (Big Update)
- Back Stack
- State Manager
- Special Effects
- Callback
- ...
- Add DataSet (Fast I/O and persistent storage)
- Add tree observer methods
- Add new movement method
- Add fast key-held linked list with removal support
- Add Lifecycle full support (Big Update)
- Live Data
- Observer
- ...
- Port to 1.18, remove deprecated methods
- Add destroy state to callback lifecycle
- Fix container not closed when backing
- Require Java 17, update libraries
- Add toast, toast manager and presenter
- Fix anticipate overshoot interpolator
- Expose thread scheduling methods
- Fix invisible state not working
- Fix null layouts not working
- Notify hierarchy changes to ViewGroup
- Add selected and activated states to View
- Update RelativeLayout
- Fix alpha blending between render targets
- Rename view scale usages
- Add number input filters
- Fix primitive array increment
- Add text color attributes
- Add listener setters
- Integrate multi-threading pipeline with Blaze3D
- Public stable APIs
- Check code style
- Fix single line text alignment and scrolling
- Add compound drawables to text view
- Fix background paddings and transitions
- Add cursor selection, movement/scrolling
- Update clipboard manager
- Add blinking cursor and selection rendering
- Add transformation method
- Add arrow key movement method
- Add cursor movement and text/word deletion
- Add text selection and movement
- Add key event dispatching
- Add pointer icon resolution
- Add focus system for view tree
- Fix transform with non-homogeneous vectors
- Update view root and view tree protocol
- Add layout transition for a view group
- Add alpha transition of a view layer
- Add child off-screen rendering targets
- Improve MSAA framebuffer and attachments
- Make animators cloneable
- Add replacement style
- Update new tooltip events
- Fix registry references
- Add network handler on netty thread
- Update network protocol
- Rename packages
- Fix external fonts cannot be loaded on Linux
- Add view paddings and RTL properties
- Update layout containers
- Update UI thread scheduling
- Enhance quadratic bezier shader
- Add DynamicLayout
- Add text methods
- Fix various bugs on text engine
- Add SpannableStringBuilder
- Fix bugs on LineBreaker
- Avoid allocating large arrays for getSpans
- Add GrowingArrayUtils
- Enhance tooltip rendering and add gradient effect
- Fix hex colors cannot be parsed
- Port to 1.17.1
- Port to 1.17.1, use OpenGL core profile
- Require Java 16
- Optimize packet dispatcher
- Add gradient color on screen background blurring
- Add new tooltip rendering based on the new engine
- Adjust the lifecycle of render system and text engine
- Fix smooth scrolling for vanilla/forge panels
- Modify network protocol algorithm
- Add efficient network channel
- Fix compatibility to several mods
- Add namespaced events to mod buses
- Support rendering and sampling with bitmap-like fonts
- Fix rendering with bold and italic styles
- Fix rendering with enchantment characters
- Improve typeface setting and font run algorithm
- Improve BiDi and style algorithms on text layouts
- Add new cache key on deep processed char sequences
- Add new layout cache system and tracker
- Add automatic resolution level switching
- Support continuous text layout from deep processors
- Support taking over text layout and caching from the source
- Optimize text and effect rendering pipeline
- Optimize formatting code resolver algorithm
- Optimize layout caching on text components and sequences
- Optimize rendering on multilayer styled text
- Introduce character style carrier for state injection
- Expand the scope of application of text engine
- Fix bidirectional text rendering with multiple styles
- Fix rendering with texts computed from fast digit algorithm
- Fix dirty font texture data on sprite borders
- Change the behavior on built-in font loading
- Improve experience bar text rendering
- Fix rendering with Thai and Bengali
- Finish StaticLayout for text pages
- Add recyclable span set and draw text command
- Add deferred calculation grapheme advance and full layout
- Fix various bugs for layout cache
- Add texture manager and image creation
- Add scaling image drawing and dimension
- Remove context selector
- Cleanup GLTexture usages in subclasses
- Add quadratic Bezier curve drawing
- Optimize OpenGL rendering pipeline for canvas
- Cleanup deprecated classes and code
- Optimize spannable string implementation
- Fix sample array allocating
- Add streaming ogg vorbis decoder and wave decoder
- Add audio tracks for 2D sound playback
- Add more text styles and effects
- Optimize layout cache, measured text and rendering
- Add new switch button widget
- Add visual audio spectrum
- Optimize view refresh mechanism
- Add touch event for mouse operations, add click listener
- Remove multiple pointers on event delivery, capture mouse
- Add fast fourier transform for spectrum analysis
- Optimize input event dispatching
- Introduce AudioManager based on OpenAL
- Apply 4x MSAA to UI framebuffer
- Add the base part for text lines
- Add memory calculation on measured text
- Add efficient layout cache for layout pieces
- Optimize glyph layout and rendering for text runs
- Optimize text rendering pipeline
- Add layout piece for the layout of a text run
- Add PMX model parser
- Add directions information for bidirectional text
- Optimize GlyphManager for glyph layouts and rendering
- Add new dynamic generation algorithm for font atlases
- Add new scrolling algorithm to the view system
- Support gradient color for geometries rendering
- Add new scroller for controlling 2D scrolling
- Add decomposable transformation
- Apply clipping to the view system
- Add quick reject against local clipping region
- Introduce new clipping system and stencil test
- Add drawables and host callbacks
- Cleanup forge canvas API and lifecycles
- Add automatic resizing for framebuffers
- Add local state switching on drawing commands
- Coordinate UI thread animation and drawing
- Optimize rendering for view hierarchy
- Drop support for Java 10 or below
- Add round lines and more drawing methods
- Add image drawing and recycle bitmaps
- Switch to multithreaded rendering
- Add automatic vertex array object generation
- Add vertex attributes and vertex buffer binding points
- Introduce GLCanvas and update shaders
- Introduce a new method to create shader programs
- Update to OpenGL 4.5 and Direct State Access
- Update core package structure
- Add MSAA framebuffer and renderbuffer objects
- Use cleaner to release native resources
- Support tab stops and base paragraph-level style
- Merge new animation API with the old one
- Add evaluator for custom interpolation algorithm
- Add more time interpolator(s)
- Add custom keyframe types and keyframe set
- Introduce new animation framework and state machine
- Add supported image formats and open dialog
- Add bitmap for decoding images into memory and exporting
- Add texture objects on client side
- Suppress unsupported clipboard contents
- Fix resource reading using native memory
- Optimize rotation about arbitrary axis
- Add efficient quaternion math for rotations
- Add efficient matrix/vector math for rendering
- Add Rect, Point, and their float forms
- Add the concept of UI thread that differs from render thread
- Abstract the API on the rendering pipeline
- Add platform components to operating system
- Add fragment shader to draw circular arcs
- Add paint for rendering geometries
- Update shaders to GLSL 430 core
- Add font metric calculation
- Separate text paint at different levels
- Add support for emoji code points
- Add application-level typeface and text locale
- Add itemization algorithm for font runs
- Add Unicode-based line breaker for text pages
- Add base measured text for text shaping
- Add object pools for recycling
- Enhance style run transitions for paragraph layout
- Add new BiDi analyzer for measuring paragraphs
- Add various text direction heuristic algorithm
- Add metric affecting styles
- Add character-level appearance styles
- Add support for Unicode grapheme cluster break
- Add texts with markup objects
- Add text package for high-level layouts
- Change coordinates to match window framebuffer
- Add lifecycle handler for screens
- Fix rendering on some graphics cards
- Fix first scroll bar dragging
- Broaden scrolling compatibility with other mods
- Tweak circular progress bar animation
- Expose additional HUD bars option
- Add platform window
- Add fast matrix calculation
- Update shaders to GLSL 430 core
- Improve filling and stroking of round rect shader
- Add filling and stroking of arc and circle shader
- Add circular progress bar for world loading screen
- Smooth scrolling for vanilla and forge scroll panels
- Several optimizations
- Fix lifecycle crash
- Warn old Java only once
- Fix enchantment characters
- Add text layouts, line breaker
- Broaden compatibility
- Support down to Java 8u51
- Improve digits alignment
- Optimize memory usage for text layout cache
- Fix font mipmap texture not reset after reusing
- Fix compatibility with ItemZoom
- Auto switch font resolution level
- Add grapheme cluster breaker
- Change to absolute coordinate system
- Improve experience bar rendering
- Improve gui scale setting
- Fix compatibility layer with vanilla
- Change project structure
- Add SFX when game loaded
- Configurable tooltip frame color
- Make font renderer reloadable at runtime
- Fix backslash path
- Fix tooltip matrix transformation
- Fix tooltip compatibilities
- Smooth tooltip rendering
- Add new tooltip style
- Fix crash with some java versions
- Fix crash when running data generator
- Update the network protocol
- Fix client crash due to parallel mod loading
- Add auto-shutdown for server
- Fix crash when forge event bus not started
- Fix crash on dedicated server
- Fix ingame GUI rendering with no texture in some case
- Fix font renderer not override some mods (like InventoryHud)
- Add input event handling
- Add signature
- Fix sometimes crash when caching digit texture
- (2.2.3.67) (2020-11-17)
- Fix rendering when an invalid formatting code applied
- (2.2.2.66) (2020-11-16)
- Fix rendering with space character
- Fix rendering with Thai
- Add support for external fonts
- Expose built-in blacklist
- Port to 1.16.3
- Fix IReorderingProcessor generator
- Fix empty layout node not being considered
- Fix blur effect with pumpkins on the head
- Fix animation time disruption between frames
- Fix animation timer on game paused
- Optimize blur shader
- Add OpenGL capabilities check
- Make text caching work asynchronously
- Add support for IReorderingProcessor
- Fix font renderer see through type
- Add ultra-high definition for font rendering
- Fix text position texture out of limit bounds
- Fix empty text node can't be processed
- Adjust text render layer, avoid performance loss
- Fix text color background rendering
- Fix invalid text formatting codes not being removed
- Require Forge 32.0.93+
- Rewrite text processing, fix text formatting
- Remove vanilla bidi analysis for every text in every frame
- Fix fragmentary bidirectional text layout (mixed LTR RTL)
- Fix vanilla's Arabic letters shaping (start, middle, end)
- Fix Devanagari (Hindi etc) and other characters rendering
- Fix text effect rendering and render type
- Fix text width measuring, trimming
- Optimize text rendering on RAM and FPS
- Adjust the alignment accuracy of the digit rendering
- Reduce the requirement of OpenGL 4.6 to OpenGL 4.3
- Improve the text layout accuracy of font renderer
- Improve the size and advance accuracy of glyph
- Improve the alignment accuracy of digit rendering
- Improve the rule of font priority to use
- Use grayscale pixels to store font textures to reduce memory usage
- Use render nodes for text rendering to improve performance
- Support higher level mipmap for font textures
- Support vanilla text styles and components
- Add font size style to text component
- Add more configs for font renderer
- Add more configs for blur effect and background opacity
- Fix search bar crash
- Fix server crash on start
- Fix keyboard listener auto lose focus, and integrated in module
- Fix widget relocate method
- Fix pause only main menu screen logic
- Fix scroll controller minimum precision
- Fix not disable keyboard listener repeat mode when gui closed
- Change layout editor shortcut key
- Update icon textures
- Reimplement double-click event, make it work in resource packs GUI
- Adjust status changing behaviour (API broken)
- Fix multi-page scroll panel page bug
- Fix animation chain crash
- Fix scroll window total height bug
- Add layout editing GUI
- Add feathered rect shader
- Add two-way expandable box area
- Add config to set whether enable lib only mode
- Add config to set whether enable blurring effect
- Add echo char to text field
- Fix font renderer render type not switched properly
- Fix special render face culling of font renderer
- Fix characters not display / layout properly (extremely confused) while game is paused
- Fix characters get dislocated (combined with other chars) when a new texture mapping started
- Add new methods to animation, and fix button brightness bug
- Add config to set whether allow drawing font with shadow
- Add config to set whether pause game when any screen is open
- Add multi-page scroll panel
- Add clip to canvas
Add mipmap support for mui font renderer
Fix render type of mui font renderer
Fix crash with optifine connected textures
Make font renderer work globally in game
Fix compatibility with OptiFine 1.15.2 HD U G1 pre14+
Add almost all optifine settings in iteratable form
Add scroll panel, a light-weighted scroll window
Require Forge 31.1.63+
Fix text icon button, default module in
Fix number input field, max long
Fix slided toggle button, default on status
Fix dynamic button press
Rework animations
Rework all widgets
Rework all implementations
Add button sounds
Add developer mode
Fix ingame menu opened before load complete
Fix wrong font renderer calling
Fix background alpha reset incorrectly
Keep MUI screens / modules instance when using vanilla's parent screen system, also fixed container screen
Add gui background alpha gradient
Fix compatibility with vanilla and container screen
Make "reset keys" button in Controls into an icon button for cleaner look
Fix client container won't be closed
Fix switch child module can't be called by root module constructor
Fix text icon button won't light up when was called by constructor
Add russian localization (by vanja-san)
Fix API compatibility
Fix wrong displacement while following texturedGlyph in scroll window
Improve and perfect the KeyBinding search function
Make rounded frame render more smooth
Add new text field
Add search bar to Controls GUI, allows to search key or name
Add show KeyBinding conflicts function
Rework drawing system, and use new canvas system now
Add new widgets
Add new shaders
Bug fixes and UI tweaks
Code reduction, clean-up and optimization
Reduce resources size
Add rounded rectangle shaders
Make transition animation more smooth
Add transition animation
Add java version detection
Initial Release