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);
왜 HSV/HSL 대신 OKLab인가?
표준 색 공간은 지각적 균일성에 대해 거짓말합니다. 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 | 균등 간격의 3색상 (120도 간격) |
| Analogous | 3 | 인접 색상 (30도 간격) |
| Split-Complementary | 3 | 보색을 둘로 분할 (150도와 210도) |
| Tetradic | 4 | 2개의 보색 쌍 (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 lerp의 나란히 비교.
클릭/드래그로 인터랙티브 슬라이스. Lock Lightness와 Lock Chroma 모드.
가뭇 클리핑 표시기, WCAG 대비 표시, 지각적 델타 메트릭.
Palette Builder
Window > DAWG Tools > OKLab Palette Builder
hex 입력과 가뭇 경고가 포함된 OKLCH 슬라이더. 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.