mob-sakai/UIEffect
54.3
Adequate · 12 October 2026
9.9k
lines of production code
C#
primary language
1
measurement over time
What this system is
This system is the UIEffect package for Unity, a library that applies visual filters and animations to UI elements. It provides a comprehensive shader architecture supporting effects like gradients, transitions, and soft masking across the Built-in, URP, and ShaderGraph render pipelines. The package includes runtime components for animating effects via Unity Timeline, a ScriptableObject-based preset system, and utilities for TextMeshPro integration and mesh modification.
How it got here
2024 — UIEffect v5 release and Unity 6 support
16 changes.
This period focused on the complete release of UIEffect v5, introducing a redesigned runtime with new components like UIEffectTweener and a ScriptableObject-based preset system. Significant work was dedicated to ensuring compatibility with Unity 6, including updated TextMeshPro shaders, ShaderGraph samples, and internal utility overhauls for performance and memory management.
2025 — Unity 6 and URP integration
7 changes.
This period focused on extending UIEffect compatibility with Unity 6, specifically adding ShaderGraph support for both the Built-in and Universal Render Pipelines. The work also introduced Timeline integration for animating effect properties and expanded the library with new built-in presets and comprehensive URP demo projects.
Features
Add Timeline integration for UIEffect properties
This change introduces support for animating UIEffect properties within Unity's Timeline system. It adds a base infrastructure in the \Base\ folder (including \UIEffectTimelineUtils\, \UIEffectColorClip\, and \UIEffectFloatClip\) and implements specific tracks for animating color, intensity, and other effect parameters such as \Color\, \DetailColor\, \EdgeColor\, \GradationIntensity\, and \TransitionRate\. Users can now keyframe these visual effects directly in the Timeline.
Packages/src/Runtime/Timeline · high confidence
Add option to exclude settings assets from player builds
Project settings assets can now be excluded from the built player via a new 'Preload Settings in Build' toggle. When disabled, the settings asset is removed from PlayerSettings.preloadedAssets during the build process and must be loaded manually (e.g., via Resources, AssetBundles, or Addressables), which can reduce build size and memory usage for settings that are not needed at runtime.
Packages/src/Runtime/Internal/ProjectSettings · high confidence
Add v4 compatible UI effect components and migration tools
This update introduces a set of legacy-compatible UI effect components (UIEffectV4, UIDissolve, UIShiny, UIHsvModifier, UIGradient, UIShadow, and UIFlip) alongside an editor utility that allows users to right-click these legacy components and convert them to the modern UIEffect component, automatically mapping settings like tone, color, and transition filters. It also includes an EffectPlayer helper for animating effects and enum converters to bridge old and new configuration systems, ensuring existing projects can upgrade their visual effects without losing their customizations.
Packages/src/Samples\~/v4 Compatible Components · high confidence
Added Addressable Assets system configuration and demo scenes
The project now includes the Unity Addressable Assets system configuration under \Assets/AddressableAssetsData\, establishing a default local group and built-in data groups with associated schemas and build scripts. Additionally, new demo scenes and scripts have been added under \Assets/Demos\, including an allocation test for UIEffect components and gradation tests to demonstrate visual effects.
Assets · high confidence
Added Shader Graph support for UIEffect in Unity 6 URP samples
The sample directory now includes a new \UniversalUIEffectSubTarget\ class and associated assets (a Shader Graph, Unity scene, and texture) that enable UIEffect to work with Unity's Shader Graph workflow in the Universal Render Pipeline. This adds a specific 'Canvas (UIEffect)' shader graph template to the Unity editor menu, allowing users to create URP canvas shaders that integrate UIEffect effects, with conditional compilation support for Unity 6000.4 and later versions.
Packages/src/Samples\~/ShaderGraph Support (Unity 6 URP)\~ · high confidence
Added UIEffect demo assets and samples
The demo package now includes sample assets for the UIEffect system, specifically a prefab demonstrating available visual filters (tone, color, sampling, transition, shadow, and gradation effects) and a CarterOne-Regular SDF font asset to support text-based demonstrations.
Packages/src/Samples\~/Demo · high confidence
Added URP-specific demo project and configuration
This change introduces a new URP (Universal Render Pipeline) demo project structure for UIEffect. It includes a dedicated demo scene (\DemosForURP.unity\) and a Timeline support scene (\Timeline Support.unity\) that demonstrate UIEffect components, including specific Timeline tracks for tweening and transition rates. The entry also adds the necessary URP project settings, such as a Universal Render Pipeline Asset, a Renderer Asset, and a Global Settings asset, alongside a NanoMonitor configuration for development profiling.
UIEffectURP · high confidence
Added demo scripts for UIEffect control and configuration
The demo sample now includes new C\# scripts to help users interact with and configure UI effects. UIEffect\_AvailableFilters allows toggling the enabled state of UIEffect and UIEffectTweener components within a canvas. UIEffect\_PatternAndEdge provides methods to adjust transition width, rotation, auto-play speed, edge width, and shiny effects across multiple UIEffect instances. UIEffect\_TweenerControler offers a runtime UI for controlling a single UIEffectTweener, including a seek bar for scrubbing through time, displaying status information, and adjusting wrap modes and play-on-enable behavior.
Packages/src/Samples\~/Demo/Scripts · high confidence
Added internal component and mesh extension utilities
This change introduces two new internal extension classes, ComponentExtensions and MeshExtensions, to the UIEffect package. ComponentExtensions provides helper methods for safely retrieving components (including compatibility shims for older Unity versions), searching hierarchies, and adding components to children, while MeshExtensions introduces an object pool for Mesh instances and utility methods to copy mesh data between Mesh and VertexHelper objects. These additions support internal rendering and component management logic without exposing new public APIs.
Packages/src/Runtime/Internal/Extensions · high confidence
Added sample folders for v4 compatible components
New sample folders have been added to the package to demonstrate v4 compatible components. This includes a 'Demo' folder and a 'v4 Compatible Components' folder, providing users with reference implementations for using the updated component versions.
Packages/src/Samples\~ · high confidence
Editor overhaul with Timeline support and new preset system
The Editor package has been completely redesigned, introducing a new ScriptableObject-based preset system that replaces the legacy prefab-based approach and includes a migration tool to convert existing presets. A new UIEffectTweener component is now supported with a dedicated inspector featuring an animation preview player, and the package adds full Unity Timeline integration for animating effect properties. The editor also now supports the SoftMaskForUGUI package by conditionally stripping shader variants when the package is absent, and introduces project-wide settings such as an HDR color picker option.
Packages/src/Editor · high confidence
Introduce UIEffect shader architecture with new visual features
The UIEffect package now includes a dedicated shader architecture consisting of a main shader (Hidden/UI/Default (UIEffect)) and a shared include file (UIEffect.cginc). This change adds support for a wide range of visual effects including color filters, sampling modes (blur, pixelation, edge detection), transition effects (fade, cutoff, shiny, pattern, blaze), edge modes (plain, shiny), detail filters, target color adjustments, and gradient modes (including radial gradients). It also introduces new properties for controlling intensity, color, glow, and speed for these effects, and adds support for the SoftMaskForUGUI package and TextMeshPro/Bitmap shaders.
Packages/src/Shaders · high confidence
Introduce proxy-based mesh modification utilities for UI effects
Added a new set of utility classes in the Runtime/Utilities folder to handle UI mesh modifications more robustly. This includes \GraphicProxy\ as a base for proxying graphic operations, \ImageProxy\ to correctly handle expand sizes for Filled Image types (specifically Radial360), \TmpProxy\ to manage TextMeshPro mesh updates and prevent conflicts with other mesh modifiers, and \ShadowUtil\ to implement shadow and mirror effects. These utilities also include \UIVertexUtil\ for vertex flipping, expansion, and bounding box calculations, providing a centralized and optimized way to apply visual effects to UI elements.
Packages/src/Runtime/Utilities · high confidence
New built-in UI effect presets added
The UIEffectPresets package now includes a set of new built-in preset assets, providing ready-to-use configurations for various visual effects. These new assets cover blend modes (Additive, Alpha Blend, Multiply, Multiply Additive, Soft Additive), color filters (Additive, Contrast, HSV Modifier, Multiply, Multiply Additive, Multiply Luminance, Replace, Subtractive), detail effects (Hologram, Soft Masking), and edge styles (Plain). Users can now apply these pre-configured effects directly to their UI elements without needing to manually adjust individual parameters.
Packages/src/UIEffectPresets · high confidence
ShaderGraph support for UIEffect in Unity 6 Built-in Render Pipeline
This update adds a new sample demonstrating how to integrate UIEffect with ShaderGraph in the Unity 6 Built-in Render Pipeline. It includes a custom sub-target (\BuiltInUIEffectSubTarget\) that configures the shader graph to support UIEffect features such as tone, color filtering, sampling, transitions, edges, and soft masking. The sample also provides a ready-to-use shader graph asset and a demo scene to illustrate the setup.
Packages/src/Samples\~/ShaderGraph Support (Unity 6 BuiltIn)\~ · high confidence
UIEffect and SoftMask support for TextMeshPro shaders
Added a suite of hidden shader variants for TextMeshPro (Bitmap, SDF, Mobile, Overlay, and SSD) that integrate with the UIEffect and SoftMaskForUGUI packages. These new shaders allow users to apply visual effects like color filters, transitions, and soft masking to TextMeshPro text elements, which were previously unsupported by these systems.
Packages/src/Samples\~/TextMeshPro Support\~ · high confidence
UIEffect package v5 source files and release infrastructure added
The \Packages/src\ directory now contains the complete source for UIEffect v5, including the runtime code, shaders, presets, and editor assets. This location also introduces the release automation configuration via \.releaserc.json\ (Semantic Release) and a comprehensive \CHANGELOG.md\ that documents the history from v5.0.0 through v5.11.7, covering bug fixes (e.g., memory leaks, shader variant registration, TMP support) and features (e.g., Xbox support, on-demand shader support). The \README.md\ provides installation instructions for UPM/OpenUPM and details the v5 architecture, including TextMeshPro, ShaderGraph, and SoftMaskForUGUI integrations.
Packages/src · high confidence
Behavioural changes
Add Unity 6-compatible TextMeshPro shaders for UIEffect and SoftMask
The sample package now includes a set of new hidden shaders (Bitmap, SDF, Mobile, Overlay, and SSD variants) specifically tailored for Unity 6. These shaders integrate the UIEffect and SoftMask-for-UGUI packages, enabling visual effects like gradients, transitions, and soft masking on TextMeshPro text. The changes also address Unity 6-specific rendering behaviors, such as proper gamma-to-linear color space conversion and stencil handling, ensuring effects render correctly in the new engine version.
Packages/src/Samples\~/TextMeshPro Support (Unity 6)\~ · high confidence
Internal utility infrastructure overhaul for performance and compatibility
The internal utilities in this package have been replaced with a new set of optimized components. A new \CgincPathSync\ asset postprocessor automatically fixes shader include paths when TextMeshPro resources are in non-default locations, preventing black block rendering issues. Performance is improved via a new \FastAction\ delegate system and a \FrameCache\ for temporary data, while \ObjectPool\ and \ObjectRepository\ provide efficient memory management for objects and materials. Compatibility with Unity 6.5+ and Unity 6.6+ is ensured through updated \Misc\ helpers that use \FindObjectsByType\ and handle domain reload settings, and a new \Logger\ system offers conditional, high-performance logging.
Packages/src/Runtime/Internal/Utilities · high confidence
Project initialization with updated demo scenes and build settings
The project has been initialized with new configuration files for minimal resource settings, the Scriptable Build Pipeline, and symbolic linkers to support development workflows. The Editor Build Settings have been updated to include new demo scenes (HotUpdate, UIEffect\_Tweener, UIEffect\_TextMeshProSupport, UIEffect\_PatternAndEdge, UIEffect\_TitleV5) and remove older ones, while also configuring Addressable Assets. The Unity Editor version has been bumped from 2020.3.48f1 to 2020.3.49f1.
ProjectSettings · high confidence
UIEffect v5.11.0 runtime overhaul with new components and features
The UIEffect runtime has been completely redesigned for v5.11.0, introducing a new \UIEffectTweener\ component for animating effect properties and a \UIEffectReplica\ component for duplicating effects across objects. The update adds extensive new effect capabilities, including \GradationMode\ variants (Angle, RadialGradient, Diagonal), \TransitionFilter\ patterns (Blaze, Pattern), \DetailFilter\ masking, and \EdgeMode\ with Shiny support. It also introduces a ScriptableObject-based preset system (\UIEffectPreset\), HDR color picker support in project settings, and improved TextMeshPro compatibility with specific shader variants for Unity 6 and ShaderGraph.
Packages/src/Runtime · high confidence
Updated demo sample textures and sprite atlas
The demo sample's texture assets have been updated and organized into a new \UIEffect\_Demo\ sprite atlas. This includes new or refreshed texture files for UI badges (Checked, Level, Police), a flat cornered icon, Unity-Chan character sprites, and showcase art, along with a scanline texture. The sprite atlas bundles these assets to optimize packing and rendering for the demo scene.
Packages/src/Samples\~/Demo/Textures · high confidence
Dependencies
UIEffect package updated to version 5.11.7
The com.coffee.ui-effect Unity package has been updated to version 5.11.7. This release includes samples for ShaderGraph support in Unity 6 (both Built-in and URP renderers) and TextMeshPro support, alongside the standard v4 compatible components.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 56 → 54 (-1.5)
- Rubric changed (rubric-2026.09.16 → rubric-2026.10.5) — scores are not directly comparable.
Lenses
- Code Health 80 → 62 (-18.0)
- Maturity 57 → 57 (-0.1)
- Readiness 63 → 63 (+0.0)
- Security 49 → 49 (+0.0)
Resolved (6)
- Confusing naming convention for similar operations. SetGradientKeys appears to set the global gradation gradient, while SetTransitionGradientKeys sets the transition-specific gradient. The naming 'Gradient' vs 'TransitionGradient' is inconsistent with the property naming (gradationMode vs transitionFilter) and makes it unclear if 'Gradient' implies a default or global state.
- Inconsistent naming for dirty flags. UIEffectBase uses 'SetVerticesDirty' and 'SetMaterialDirty', while UIEffectContext uses 'SetGradationDirty' and 'SetTransitionGradationDirty'. The context methods are more specific, but the base class methods are generic. This is acceptable but could be clearer if the base class methods were named to reflect they trigger a full rebuild.
- Redundant method signature in derived class. Similar to SetVerticesDirty, UIEffect re-exposes SetMaterialDirty() which is already defined in UIEffectBase.
- Redundant method signature in derived class. UIEffect inherits from UIEffectBase, which already exposes SetVerticesDirty(). The derived class re-exposes the exact same signature, creating unnecessary duplication in the public API surface.
- Redundant method signature in derived class. UIEffect re-exposes SetMaterialContextDirty() which is already defined in UIEffectBase.
- Same naming inconsistency as above for the array-based overload. The distinction between 'Gradient' and 'TransitionGradient' is not immediately obvious in the method name compared to the property names.
New (26)
- Duplicated block (10 lines × 3) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (15 lines × 2) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (15 lines × 3) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (17 lines × 5) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (19 lines × 3) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (25 lines × 2) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (29 lines × 3) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (31 lines × 3) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (32 lines × 2) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (40 lines × 2) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (5 lines × 2) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (50 lines × 3) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (8 lines × 2) (Packages/src/Runtime/Internal/Extensions/ComponentExtensions.cs)
- Duplicated block (8 lines × 5) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (9 lines × 5) (Packages/src/Runtime/UIEffect.cs)
- Duplicated block (9 lines × 6) (Packages/src/Runtime/UIEffect.cs)
- Hotspot: Packages/src/Runtime/UIEffect.cs (Packages/src/Runtime/UIEffect.cs)
- Hotspot: Packages/src/Runtime/UIEffectContext.cs (Packages/src/Runtime/UIEffectContext.cs)
- Inconsistent overloading pattern for LoadPreset. There are overloads for string and UIEffectPreset that accept an append boolean, but the UIEffect source overload does not have a corresponding append variant (only a non-append version exists). This creates an inconsistent API surface where some sources support merging/appending and others do not.
- Naming inconsistency between Gradient and GradientKey arrays. The API provides two distinct methods for setting gradients: one taking a Gradient object and another taking raw key arrays. While technically distinct, the naming SetGradientKeys for the array version is slightly misleading (it sets the gradient, not just keys), and the existence of two parallel methods for the same logical operation (setting a gradient) is confusing. Furthermore, SetTransitionGradientKeys mirrors this, but the distinction between 'Gradient' and 'Keys' is not clearly documented in the signature intent.
- …and 6 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
mob-sakai/UIEffect was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 12 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit ff824c234121cd6dde7038c8e8ca4904d7f4d7f3 — the exact code this score is about.
- Scored under rubric-2026.10.5 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fe8540b5da9b.