2026-04-08 20:31:14 +09:00
..
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00
2026-04-08 20:31:14 +09:00

LUT Cycler — 설명서

최초 작성: 2026-04-06 대상 버전: Unity URP (Universal Render Pipeline)


개요

Volume의 Color Lookup (LUT) 텍스처를 빠르게 탐색·비교·즐겨찾기 할 수 있는 에디터 도구 및 런타임 컴포넌트 세트.

  • 에디터 모드: LUT Browser 윈도우에서 썸네일 클릭으로 즉시 Volume에 적용
  • 플레이 모드: 스크롤 휠(또는 방향키)로 LUT 순환
  • 즐겨찾기: 마음에 드는 LUT를 ★ 표시로 저장, 필터링

폴더 구조

Assets/YAMO/LutCycler/
├── LUTs/                          ← LUT 텍스처 파일을 여기에 배치
├── Prefabs/
│   ├── LUT Controller.prefab      ← 씬에 드롭해서 사용하는 프리팹
│   └── LUT_Profile.asset          ← Volume이 참조하는 VolumeProfile
├── Scripts/
│   └── LutCycler.cs               ← 런타임 컴포넌트
└── Editor/
    └── LutBrowserWindow.cs        ← 에디터 전용 창

의존성 및 환경 요건

항목 내용
렌더 파이프라인 URP (Universal Render Pipeline)
Input System New Input System 패키지 필요 (UnityEngine.InputSystem)
Unity 최소 버전 2021.x 이상 권장
네임스페이스 YAMO.LutCycler (런타임), YAMO.LutCycler.Editor (에디터)

주의: Input System 패키지가 설치되어 있지 않으면 런타임에서 InvalidOperationException이 발생한다. Package Manager → Input System 설치 후 Player Settings의 Active Input Handling을 Input System Package (New) 또는 Both로 설정할 것.


파일별 설계 및 역할

Scripts/LutCycler.cs

런타임 MonoBehaviour. Volume 컴포넌트와 함께 동작한다.

인스펙터 필드

필드 설명
lutTextures 순환할 LUT 텍스처 목록
currentIndex 현재 적용 중인 인덱스 (읽기 참고용)
favorites 즐겨찾기한 텍스처 목록
useScrollWheel 스크롤 휠로 순환 (기본 ON)
useArrowKeys 좌우 방향키로 순환 (기본 OFF)

주요 공개 메서드

메서드 설명
CycleNext() 다음 LUT로 이동
CyclePrevious() 이전 LUT로 이동
ApplyAt(int index) 특정 인덱스의 LUT 적용
ApplyCurrent() 현재 인덱스 LUT를 Volume에 강제 반영
ToggleFavorite(Texture2D) 즐겨찾기 추가/제거 토글
IsFavorite(Texture2D) 즐겨찾기 여부 반환
GetCurrentTexture() 현재 LUT 텍스처 반환
GetCurrentIndex() 현재 인덱스 반환

컨텍스트 메뉴 (인스펙터 우클릭)

  • Load LUTs from FolderAssets/YAMO/LutCycler/LUTs 폴더에서 텍스처 자동 로드
  • Clear Favorites — 즐겨찾기 전체 초기화

내부 동작 흐름

Awake → Volume에서 ColorLookup 참조 획득
Start → ApplyCurrent() 호출 (0번 LUT 적용)
Update → 입력 감지 → CycleNext / CyclePrevious
       → ApplyCurrent() → EnsureColorLookup() → ColorLookup.texture.value 갱신

Input System 분기 처리

#if ENABLE_INPUT_SYSTEM 컴파일 심볼로 New/Old Input System을 자동 분기. New Input System 사용 시 Mouse.current.scroll, Keyboard.current API를 사용.


Editor/LutBrowserWindow.cs

에디터 전용 EditorWindow. 메뉴 YAMO 아래에 등록된다.

메뉴 항목

메뉴 동작
YAMO/LUT Browser LUT Browser 윈도우 열기
YAMO/Create LUT Controller 씬에 LUT Controller GameObject 생성 및 프리팹 저장

Create LUT Controller 동작 순서

  1. Prefabs/LUT_Profile.asset이 없으면 새로 생성 (ColorLookup Override 포함)
  2. 씬에 LUT Controller GameObject 생성
  3. Volume 컴포넌트 추가 (isGlobal = true, profile = LUT_Profile)
  4. LutCycler 컴포넌트 추가 후 LoadFromFolder() 호출
  5. Prefabs/LUT Controller.prefab으로 저장

LUT Browser 윈도우 구성

[ ↻ Refresh ] [ 크기 슬라이더 ] [ ★ 즐겨찾기만 ] [ 검색창 ]   ← 툴바
[ 현재 LUT 이름 | 전체 N개 | ★ M개 ]                         ← 상태바
┌──────┐ ┌──────┐ ┌──────┐                                   ← 썸네일 그리드
│ 썸네일 │ │ 썸네일 │ │ 썸네일 │   (창 너비에 따라 열 수 자동 계산)
│ 이름 ☆│ │ 이름 ★│ │ 이름 ☆│
└──────┘ └──────┘ └──────┘

썸네일 카드 동작

  • 썸네일 클릭 → ApplyLutToScene() 호출
    • 플레이 모드: LutCycler.ApplyAt() 경유
    • 에디터 모드: VolumeProfile에 직접 Undo 기록 후 적용
  • ☆/★ 버튼 클릭 → LutCycler.ToggleFavorite() 호출
  • 현재 적용 중인 LUT는 파란 테두리로 강조
  • 즐겨찾기 LUT는 썸네일 좌상단에 오버레이

씬에 LutCycler가 없을 경우 상태바에 경고 표시. 썸네일 클릭 시 씬의 첫 번째 Volume에 직접 적용. 즐겨찾기 기능은 동작하지 않음.


사용 방법

초기 세팅

  1. Assets/YAMO/LutCycler/LUTs/ 폴더에 LUT 텍스처 파일 복사
  2. 유니티 메뉴 YAMO → Create LUT Controller 실행
    • 씬에 LUT Controller 오브젝트가 생성되고 프리팹으로 저장됨
    • LUTs 폴더의 텍스처가 자동으로 lutTextures 리스트에 등록됨
  3. 메뉴 YAMO → LUT Browser 로 브라우저 창 열기

LUT 탐색 (에디터 모드)

  • 브라우저 창에서 썸네일 클릭 → 씬 뷰에 즉시 반영
  • ↻ Refresh → LUTs 폴더 재스캔
  • 검색창에 이름 입력 → 필터링
  • 크기 슬라이더로 썸네일 크기 조절

LUT 순환 (플레이 모드)

  • 스크롤 휠 위/아래로 다음/이전 LUT 전환
  • 인스펙터에서 Use Arrow Keys 체크 시 좌우 방향키도 사용 가능
  • 현재 인덱스는 인스펙터 Current Index 필드에서 확인

즐겨찾기

  • 브라우저 창의 버튼 클릭으로 즐겨찾기 등록/해제
  • ★ 즐겨찾기만 토글로 즐겨찾기 LUT만 표시
  • 즐겨찾기 목록은 LutCycler 컴포넌트의 Favorites 리스트에 저장됨 (프리팹에 직렬화)
  • 인스펙터 우클릭 → Clear Favorites로 전체 초기화

LUT 텍스처 추가

  1. Assets/YAMO/LutCycler/LUTs/에 파일 복사
  2. 브라우저 창에서 ↻ Refresh 클릭 (브라우저 목록 갱신)
  3. LutCycler 인스펙터 우클릭 → Load LUTs from Folder (런타임 순환 목록 갱신)

유지보수 메모

  • LUT 폴더 경로를 변경하려면 LutCycler.csLoadFromFolder() 상수와 LutBrowserWindow.csLUT_FOLDER 상수를 함께 수정할 것.
  • 즐겨찾기 데이터는 LutCycler 컴포넌트에 직렬화된다. 프리팹을 삭제하면 즐겨찾기가 초기화되므로 주의.
  • VolumeProfile (LUT_Profile.asset)은 Create LUT Controller 실행 시 자동 생성된다. 이미 존재하면 재사용한다.
  • EditorStyles.toolbarLabel은 Unity에 존재하지 않는 스타일 — EditorStyles.miniLabel을 사용할 것.