⏱ 1 min read
UI Glitch Shader
RGB Split · 텍스처 기반 UV 왜곡 · Mask 레이어 3단 조합으로 구현한 UI 글리치 셰이더

UI 글리치 셰이더
Implementation
- 01
RGB Split (색수차)
R·B 채널만 각 방향으로 오프셋 샘플 → G는 원본 유지. 오프셋 0이면 분기 없이 원본 그대로.
- 02
2. 이산 시간 스테핑 (끊기는 글리치 느낌)
floor로 시간을 계단형으로 잘라 UV가 뚝뚝 튀게 만듦 → 아날로그 테이프 글리치 느낌. - 03
3. 텍스처 × 텍스처 UV 왜곡
GlitchTexture(공간 패턴) × WiggleTexture(시간 변화) 조합 → 두 텍스처를 바꿔 끼우는 것만으로 전혀 다른 패턴.
- 04
4. 브랜치리스 Mask (Flip Blink + RGB Channel Cycle)
GPU 브랜치 없이 step/lerp 조합으로 처리.
#pragma target 2.0모바일 타겟이라 분기 비용 최소화.
Tradeoffs & Future Work
Tradeoffs
- 텍스처 샘플 최대 4회 (Main×3 + Glitch + Wiggle + Mask) — 단순 UI에는 과하므로 사용처 제한 필요
- discard가 있어 early-z 이득 없음 - 마스크가 0인 픽셀은 명시적 폐기 // 하지만 프로젝트 MSAA 미사용, FXAA 사용
Future Work
- Atlas 지원 — GlitchTexture / WiggleTexture를 Sprite Atlas에서 슬라이스해 쓸 수 있도록 ST 변환 추가