OKLab Color Inspector Pro
基于Bjorn Ottosson的OKLab色彩空间的Unity感知色彩。 无浑浊中间点、暗化无色相偏移、均匀亮度阶梯。 CSS Color Level 4和Figma背后的同一色彩科学。
快速入门
一条using语句,零设置。在任何渲染管线中工作。
using DawgTools.OKLab; using UnityEngine; // Perceptually uniform lerp (no muddy midpoints) Color midpoint = OKLabColor.LerpOKLab(Color.red, Color.green, 0.5f); // Darken without hue shift Color darker = OKLabColor.AdjustLightness(myColor, -0.15f); // WCAG contrast check float ratio = OKLabColor.WcagContrastRatio(textColor, bgColor); bool passesAA = ratio >= 4.5f; // Auto-pick readable text color Color text = OKLabColor.BestTextColor(backgroundColor); // Generate palette from one accent color Color[] harmony = OKLabPalette.GenerateHarmony(accent, HarmonyMode.Triadic);
为什么选择OKLab而不是HSV/HSL?
标准色彩空间在感知均匀性上说谎。OKLab不会。
| 问题 | HSV/HSL | OKLab |
|---|---|---|
| 蓝色加深偏向紫色 | Yes | No |
| 相同L值的黄色和蓝色看起来一样亮 | Yes | No |
| 红到绿的插值产生浑浊的棕色 | Yes | No |
| 50%亮度随色相剧烈变化 | Yes | No |
核心API - OKLabColor
静态类。所有方法都是无副作用的纯函数。
色彩空间转换
| 方法 | 描述 |
|---|---|
RGBToOKLab(Color) | RGB转OKLab (L, a, b) |
OKLabToRGB(L, a, b) | OKLab转RGB |
OKLabToRGBSafe(L, a, b) | 带色域钳制转换(保持在sRGB内) |
插值
| 方法 | 描述 |
|---|---|
LerpOKLab(Color a, Color b, float t) | 感知均匀插值 |
LerpLinearRGB(Color a, Color b, float t) | 线性光RGB插值 |
调整
| 方法 | 描述 |
|---|---|
AdjustLightness(Color, float delta) | 改变明度,保持色相 |
AdjustChroma(Color, float delta) | 改变饱和度,保持色相和明度 |
GetLightness(Color) | 获取OKLab明度 (0-1) |
GetChroma(Color) | 获取OKLab彩度 |
GetHue(Color) | 获取色相角度 (0-360) |
无障碍
| 方法 | 描述 |
|---|---|
WcagContrastRatio(Color fg, Color bg) | WCAG 2.1亮度对比度比 |
WcagRelativeLuminance(Color) | 按WCAG规范的相对亮度 |
BestTextColor(Color bg) | 返回黑色或白色以获得最佳可读性 |
PerceptualDelta(Color a, Color b) | 感知距离(OKLab中的delta E) |
EnsureMinDelta(Color, Color, float) | 二分搜索确保最小间隔 |
调色板API - OKLabPalette
从单一强调色构建和谐配色、渐变和完整UI主题。
和谐配色生成
| 模式 | 颜色数 | 描述 |
|---|---|---|
| Complementary | 2 | 色相轮上的对面 (180度) |
| Triadic | 3 | 三个等距色相 (120度间隔) |
| Analogous | 3 | 相邻色相 (30度间隔) |
| Split-Complementary | 3 | 互补色分为两个 (150和210度) |
| Tetradic | 4 | 两对互补色 (90度间隔) |
渐变生成
| 方法 | 描述 |
|---|---|
GenerateRamp(Color a, Color b, steps, BlendConstraint) | 带约束的颜色混合(Free、ConstantHue、ConstantChroma、ConstantLightness) |
GenerateLightnessRamp(Color, steps) | 恒定色相和彩度的暗到亮渐变 |
HueRotate(Color, float degrees) | 恒定明度和彩度下旋转色相 |
编辑器工具
Color Inspector
Window > DAWG Tools > OKLab Color Inspector
Gamma RGB vs Linear RGB vs OKLab插值的并排对比。
点击/拖拽交互式切片。锁定明度和锁定彩度模式。
色域裁剪指示器、WCAG对比度显示、感知差异指标。
Palette Builder
Window > DAWG Tools > OKLab Palette Builder
OKLCH滑块带hex输入和色域警告。Build标签(手动)、Generate标签
(harmony/ramp/UI theme), Ship tab (WCAG validation matrix, distance warnings).
Export to .hex, .gpl, C# snippet, or ScriptableObject.
一键UI主题生成
输入单一强调色,获取包含背景、表面、文本、边框和强调变体的完整10色UI主题。 自动生成亮色和暗色两种变体。 WCAG自动修复通过二分搜索调整颜色以满足AA对比度要求。
安装
// Unity Package Manager > Add package from disk // Navigate to package.json and select it // Then import the demo scene: // Package Manager > OKLab Color Inspector PRO > Samples > Import
Requires Unity 2021.3 LTS or newer. 无外部依赖. Works with Built-in, URP, and HDRP render pipelines.