다음에 올 것을 만들어가는 기술에 대한 심층 기사.

스큐어모피즘 데스크톱은 농담이 아닌 렌더링 문제다

DEsk 같은 스큐어모피즘 Wayland 데스크톱은 플랫 UI가 겪지 않는 GPU 부담을 집니다. 레이 트레이싱 데스크톱의 실제 비용을 짚어봅니다.

한 개의 램프로 밝혀진 레이 트레이싱 나무 책상. 빛나는 종이 시트와 우체통이 놓여 있다.
데스크톱 전체가 하나의 조명 아래 놓인 장면이 되면, 컴포지터는 원하든 말든 게임 엔진이 됩니다.

여기 양쪽 진영 모두를 짜증나게 할 주장이 있습니다. 스큐어모피즘이 사라진 이유는 사용자가 싫어해서가 아니라 비쌌기 때문입니다. 픽셀, GPU 사이클, 디자이너 공수 모두에서요. 플랫 디자인은 미학이 아니라 경제성에서 이겼습니다. 요즘 화제가 된 DEsk는 Linux용 본격 스큐어모피즘 Wayland 데스크톱으로, 창이 레이 트레이싱된 월넛 책상 위의 종이 시트처럼 보입니다. 이 프로젝트는 몇 년 만에 이 가설을 처음으로 제대로 시험하는 사례인데, 결과가 아주 명확합니다. 방 전체가 책상 램프 하나로 빛난다고 결정하는 순간, GNOME Shell보다는 게임 엔진에 훨씬 가까운 렌더링 구조를 떠안게 됩니다.

스큐어모피즘 데스크톱이 실제로 렌더링해야 하는 것

플랫 디자인은 렌더러에게 너그럽습니다. Mutter나 KWin 같은 최신 컴포지터는 대부분의 시간을 텍스처 합성에 씁니다. 애플리케이션이 버퍼를 넘기면 쿼드를 그리고, 둥근 모서리 셰이더와 드롭 섀도우를 살짝 적용하면 끝입니다. 최근 10년 안에 나온 GPU라면 프레임 전체 비용이 사실상 공짜이고, 간단한 변환만으로 어떤 해상도에도 확장됩니다. 플랫 UI가 자리 잡은 이유가 바로 이것입니다.

스큐어모피즘은 이 계약을 전부 깨뜨립니다. 디자인 언어가 “이 창은 섬유와 두께가 있고 모서리가 접힌 크림색 종이 시트다”라고 말하는 순간, 다음이 필요해집니다:

  • 재질 셰이딩 — 종이는 단순한 색이 아니라 섬유 질감이 있는 서브서피스 느낌의 확산 반응입니다. 채우기 사각형이 아니라 픽셀 단위 연산이 필요합니다.
  • 일관된 조명 — 장면의 모든 객체는 빛이 어디서 오는지에 동의해야 합니다. 책상 램프 하나라면, 실시간 창 콘텐츠를 포함한 모든 요소가 참여하는 그림자 맵(또는 레이 쿼리)이 하나 필요합니다.
  • 접촉 그림자 — 책상 위에 “놓인” 창은 종이와 월넛이 맞닿는 지점에 환경 차폐가 있어야 합니다. 없으면 착시가 즉시 무너집니다.
  • 변형 — DEsk에서는 종이 모서리를 들어 뒷면을 보거나, 창을 닫을 때 공처럼 구겨 넣을 수 있습니다. 이는 크기 조절 애니메이션이 아니라 실시간 텍스처에 대한 정점 변위입니다.

이 중 개별적으로는 어렵지 않습니다. 게임 엔진은 수십 년 동안 이 작업을 해왔죠. 하지만 데스크톱 컴포지터에는 게임에 없는 제약이 있습니다. “종이 시트”의 내용은 최대 60fps로 갱신되는 임의의 애플리케이션 출력이고, 그 내용에 대해 미리 계산해 둘 수 있는 것이 거의 없습니다. 결국 실시간 영상 피드를 종이 위 잉크처럼 셰이딩하고 있는 셈입니다.

컴포지터는 게임 엔진이 된다

DEsk의 아키텍처 문서는 이 전환을 분명하게 설명합니다. 책상, 선반, 콘솔, 우체통으로 이루어진 방은 GLES 3 기반으로 GPU에서 레이 트레이싱되며, GPU가 없으면 CPU 트레이서로 대체됩니다. 결과는 화면 크기별로 캐시됩니다. 이 한 문장에 전체 엔지니어링 전략이 들어 있고, 이것이 이 문제를 제대로 푸는 유일한 현실적인 방법이라 풀어볼 가치가 있습니다.

핵심은 정적/동적 분리입니다. 방을 매 프레임 레이 트레이싱하는 것은 말도 안 됩니다. 평범한 패스 트레이서도 중급 하드웨어에서 프레임당 몇 초가 걸립니다. 하지만 방은 정적입니다. 책상은 움직이지 않고, 램프도 움직이지 않습니다. 그래서 로그인할 때 한 번만 트레이싱하고(“첫 로그인 때 방을 한 번 그립니다. GPU에서는 몇 초, GPU가 없으면 더 오래 걸립니다”), 방사 휘도(radiance)를 캐시한 뒤부터는 방을 그저 텍스처 배경으로 씁니다. 종이 창, 서랍, 우체통 속 편지 같은 동적 객체는 캐시된 장면에 맞춰 조명을 받으며 그 위에 순방향 렌더링됩니다.

// Sketch of the two-layer architecture a skeuomorphic shell converges on
struct frame {
// Layer 1: the room. Traced once at login, cached per output size.
texture room_cache;          // desk, shelf, post box, baked lamp light
// Layer 2: dynamic objects, forward-rendered each frame.
vector<object> paper_windows; // app buffers mapped onto paper quads
vector<object> drawer_items;
vector<object> notifications;
};
void render(frame *f) {
blit(f->room_cache);                       // one textured quad, nearly free
for (auto &o : f->paper_windows)
draw_paper(o);                         // fibre shader + fake AO + dog-ear
composite(f->drawer_items, f->notifications);
}

이는 우연이 아니라 1993년 Myst가 동작하던 방식과 정확히 같습니다. 사전 렌더링된 정적 장면 위에 동적 스프라이트를 합성하는 방식이죠. 여러 관찰자가 DEsk에서 “짙은 Myst 느낌”이 난다고 했는데, 그들의 말은 본인들이 생각한 것보다 더 정확합니다. 단순한 미적 친연성이 아니라 같은 렌더링 구조입니다. 비싼 전역 조명과 저렴한 합성이라는 같은 제약이 여전히 유효하기 때문에 같은 답에 도달한 것입니다. 역사 덕후인 저는 이게 정말 좋습니다. GPU는 30년 동안 발전했지만, “어떻게 데스크톱에 레이 트레이싱을 적용할까?”에 대한 정직한 답은 여전히 “하지 말고, 한 번만 트레이싱한 뒤 나머지는 적당히 속여라”입니다.

멀티 모니터 설계도 같은 실용주의를 보여줍니다. 화면마다 더 큰 방을 레이 트레이싱하는 대신, 추가 디스플레이에는 “책상 보드가 이어서 더 보이는” 식으로 표시됩니다. 정적 배경이 확장되고 캐시된 장면이 출력들 사이에서 상각됩니다. 세션 도중 화면을 뽑으면 창은 남은 화면으로 재부모 지정(reparent)됩니다. 단순하지만, 핫플러그 이벤트마다 다시 트레이싱해야 하는 진짜 어려운 문제를 피해 갑니다.

스큐어모피즘은 플랫 UI가 결코 부담하지 않는 방식으로 GPU에 세금을 매긴다

“무겁다”는 말은 이 스타일을 다룬 대부분의 논의에서 근거 없이 많은 역할을 하니, 이 세금이 정확히 무엇인지 구체적으로 짚어보겠습니다. 창 하나에 대해 플랫 컴포지터가 하는 일과 DEsk의 종이 메타포가 요구하는 일을 비교해 봅시다:

플랫: 클라이언트의 wl_buffer를 텍스처로 바인딩하고, 이를 샘플링하는 셰이더로 쿼드 하나를 그립니다. 필요하면 부호 거리 함수(SDF)로 모서리를 둥글리고, 저렴한 9탭 그림자를 적용합니다. 창당 비용은 픽셀당 몇 번의 텍스처 읽기이며, 전부 캐시 친화적인 영역에서 이루어집니다.

종이: 클라이언트 버퍼는 “잉크”일 뿐입니다. 그 아래에 종이 기저 레이어(섬유 텍스처, 가장자리 어둡게 처리, 두께 림)가 필요하고, 접힌 모서리는 자체 조명을 가진 별도의 접힘 지오메트리가 필요합니다. 장면에서 창의 위치에 따라 달라지는 책상과의 접촉 그림자도 필요하며, 방 캐시에 구워진 램프와 맞는 조명도 필요합니다. 사용자가 가장자리를 끌어 “종이를 더 뽑아낼” 때는 종이 쿼드가 콘텐츠와 독립적으로 리사이즈됩니다. 창 지오메트리와 표면 지오메트리를 분리한 셈인데, 일반적인 컴포지터는 이렇게 하지 않습니다.

왼쪽의 플랫 창 쿼드와 오른쪽의 종이, 그림자, 조명 레이어가 분해되어 펼쳐진 모습.
플랫 UI는 쿼드 하나지만, 종이 창은 재질, 그림자, 변형 가능한 지오메트리가 겹겹이 쌓인 구조입니다.

하지만 진짜 비용은 처리량이 아닙니다. 최신 GPU는 텍스처 레이어 몇 개 더 얹는 정도에는 눈 하나 깜짝하지 않습니다. 진짜 비용은 파이프라인 복잡도입니다. 플랫 컴포지터의 셰이더 예산은 세션 전체에 프로그램 한두 개 수준입니다. 스큐어모피즘 셸은 종이, 월넛, 황동, 유리(시계의 램프 렌즈), 천 등을 위한 작은 재질 시스템이 필요합니다. 각 재질은 셰이더 변형이고, 각 변형은 일부 드라이버에서 깨질 수 있으며, 모두 공유 램프 조명과 상호작용하므로 따로 작성할 수 없습니다. 이것이 Enlightenment와 GTK2의 클래식 테마 시대가 사라진 이유이고, 실무자들이 드는 가장 강력한 반론이기도 합니다. 윈도우 매니저는 쉬운 부분입니다. 모든 애플리케이션은 여전히 GTK나 Qt로 자기 콘텐츠를 그리며, 컴포지터 쪽에 아무리 월넛을 입혀도 libadwaita 앱이 실제 책상 위에 있는 것처럼 보이게 만들 수는 없습니다. DEsk는 이 문제를 부분적으로만 해결합니다. 클라이언트 측 장식 창도 “종이 위에 앉아” 있지만, 이 메타포는 앱을 변형하는 것이 아니라 앱을 감싸는 수준에 머뭅니다.

Wayland는 이 문제를 동시에 쉽게도, 어렵게도 만든다

이런 프로젝트가 2010년이 아니라 지금 존재하는 데에는 이유가 있습니다. Wayland의 핵심 아키텍처 베팅은 컴포지터가 프레임 전체를 소유하고, 모든 픽셀이 컴포지터를 거친다는 것입니다. 이것이 바로 스큐어모피즘 셸이 걸어야 할 베팅입니다. X11에서는 앱이 원하는 곳에 무엇이든 그릴 수 있었고, 최선의 선택은 컴포지팅 매니저가 필사적으로 창을 재부모 지정하며 잘 되기를 바라는 것이었습니다. Wayland에서는 셸이 깔끔하게 분리된 표면 버퍼를 받고, 그것을 어떻게 표시할지 완전한 자유를 가집니다. 변형 가능한 종이 시트에 접힌 모서리와 함께 표면을 매핑하고 싶다면, Wayland는 그것이 “불가능”이 아니라 “그냥 어려운” 수준이 된 최초의 디스플레이 시스템입니다.

하지만 Wayland는 청구서도 키웁니다. 데스크톱 환경은 렌더러가 아니라, 렌더러에 20년 치 프로토콜이 쌓인 것입니다. 레거시 앱을 위한 Xwayland, 입력기를 위한 IBus 브리지(DEsk는 책장 색인과 메모장에 타이핑하는 것을 지원합니다), 볼륨 조절을 위한 PipeWire, 밝기와 덮개 처리를 위한 logind, 시계의 미디어 페이지를 위한 MPRIS, 잠금 화면을 위한 PAM이 그렇습니다. 이 각각은 GNOME 같은 프로젝트에서 수백 명의 기여자가 나눠 맡는 통합 지점입니다. DEsk는 “직접 만드는 것과 빌려 쓰는 것”의 명확한 선을 긋고, 네트워킹, 블루투스, 프린팅, 그리고 다른 앱의 테마 설정은 기존 자유 소프트웨어에 맡깁니다. 이런 빌려 쓰기 전략이 작은 팀이 데스크톱 전체를 출시하는 유일한 방법이지만, 그 대가로 스큐어모피즘의 착시는 가장자리에서 갑자기 끊어집니다. Wi-Fi 설정은 누군가의 평평한 GTK 패널일 뿐입니다.

직접 시도해 보려는 분들을 위해 짚어두면, 방이 화면 크기별로 캐시되고 동적 레이어가 단순한 GLES 3 순방향 렌더링이므로 평상시 비용은 특별할 것이 없어야 합니다. 무거운 효과를 쓰는 일반적인 컴포지터 수준이 기대치입니다. 문제는 GPU가 없는 기기에서 로그인 시 트레이싱이 걸리는 시간(CPU 대체 경로는 있지만 느립니다)과, v0.1 베타 특유의 거친 부분입니다. 리뷰어들은 제어판의 전원 키처럼 상태를 가진 컨트롤에서 애니메이션이 일관되지 않다고 보고합니다. 스큐어모피즘 UI에서 이것은 단순한 외형 버그가 아닙니다. 키 돌리기 애니메이션이 잘못 동작하면, 기기가 실제로 꺼질지 알 수 없게 됩니다. 애니메이션이 곧 상태 표시기이기 때문에 스큐어모피즘은 애니메이션 정확성의 중요도를 높입니다. 플랫 디자인의 제대로 인정받지 못한 장점은, 토글 스위치가 그릴 수 있는 상태가 정확히 두 개뿐이고 그 사이가 없다는 점입니다.

우리는 왜 이런 방식으로 만들기를 멈췄나

표준 역사 서술은 스큐어모피즘을 목발로 봅니다. 사람들이 터치스크린을 배우도록 실제 같은 느낌의 메타포를 제공했고, 사용자가 자라자 가죽 스티치를 버렸다는 것입니다. 이 이야기는 대체로 틀렸고, DEsk가 유용한 이유는 실제 경제성을 드러내기 때문입니다. 스큐어모피즘은 두 가지가 동시에 일어나며 사라졌습니다. 하나는 Retina 디스플레이가 손으로 그린 텍스처가 덮어야 할 픽셀 수를 네 배로 늘린 것이고, 다른 하나는 모바일이 제한된 GPU에서 배터리를 아껴 쓰며 UI를 돌려야 했던 것입니다. 플랫 벡터 UI는 공짜로 확장되지만, 1x, 2x, 3x의 헤어라인 금속 텍스처는 그렇지 않습니다. 애플의 iOS 7 리디자인은 취향의 진화가 아니라 렌더링 예산을 대폭 줄인 것이었습니다. GPU 가속 터미널이 TTY 글리프 격자에서 전체 셰이더 파이프라인으로 어떻게 바뀌었는지 읽어보셨다면, 같은 거래를 반대쪽에서 보신 셈입니다. 앱 내부 콘텐츠에는 GPU를 자유롭게 쓰지만, 크롬 자체는 다이어트를 했습니다.

GPU와 무관한 더 깊은 이유도 있습니다. 일관성은 합성되지 않는다는 것입니다. 한 명의 디자이너는 멋진 물리적 메타포를 만들 수 있지만, 수천 명의 서드파티 개발자는 그러지 못합니다. 책장 메타포는 DEsk 자체 앱에서는 잘 작동합니다. 하지만 Firefox가 자체 플랫 회색 UI를 종이 위에 그리는 순간, 소품에 스크린샷을 테이프로 붙여놓은 것처럼 보입니다. Hacker News 스레드는 두 방향에서 이 점을 정확히 짚었습니다. 한 댓글러는 테마가 가능했던 GTK2 시절을 그리워했고, 다른 이는 최신 툴킷은 “테마를 거부하도록 설계된 것 같다”고 지적했습니다. 데스크톱은 책상이 될 수 있지만, 앱은 결코 그렇게 되지 않을 것입니다. 메타포는 새고, 테마 환경을 만들어 본 사람이라면 누구나 그 누수가 착시를 치명적으로 망가뜨린다는 것을 압니다. 이는 UX 안티패턴이 끈질기게 남는 이유와 같은 간극입니다. 표면은 고치기 쉽지만 생태계는 그렇지 않습니다.

반대 주장이 무너지는 지점

저는 스큐어모피즘이 경제성에서 졌다고 말했고, 그 생각은 지금도 같습니다. 하지만 정직하게 하려면 양보도 해야 하고, DEsk의 거친 부분이 그 근거를 제공합니다.

첫째, 일부 비용은 렌더링이 아니라 상호작용의 모호함에서 나옵니다. 물리적 메타포는 사용자의 실제 세계 기대를 빌려 쓰는데, 물리 세계에는 실행 취소가 없습니다. 창 닫기가 “뭉쳐서 던져지는 것”이라면, 처음 한 번은 귀엽지만 마흔 번째 잘못된 창을 반사적으로 닫을 때는 약간 놀랍습니다. 플랫 크롬의 추상성은 기능입니다. 작은 × 버튼은 공연이 아니라 약속입니다. 둘째, 상태성입니다. 물리적 객체는 항상 자기 모습과 일치해야 합니다. 멈춘 키 돌리기 애니메이션은 잘못된 전환이 아니라, 기기가 꺼질지에 대한 거짓말입니다. 스큐어모피즘 UI는 플랫 UI가 대충 넘어갈 수 있는 곳에서도 정확해야 하고, 애니메이션의 정확성은 QA 시간으로 보면 엄청나게 비쌉니다. 이는 UI가 분산 상태를 충실히 반영해야 하는 시스템을 출시해 본 사람이라면 뼈저리게 아는 부분입니다.

플랫 디자인의 제대로 인정받지 못한 장점은, 토글 스위치가 그릴 수 있는 상태가 정확히 두 개뿐이고 그 사이가 없다는 점입니다. 황동 열쇠는 상태가 무한히 많고, 그 상태 하나하나가 버그 리포트가 됩니다.

셋째, 접근성과 발견 가능성은 양방향으로 작용합니다. 여러 댓글러는 파일 시스템의 멘탈 모델을 만들어 본 적 없는 고령 사용자에게 실제 책상 메타포가 도움이 될 수 있다고 제안했습니다. 이들은 클릭할 곳을 통째로 외우고, 그것이 바뀌면 복구하지 못합니다. 플랫 UI에는 그들에게 “본질적인 논리가 없기” 때문입니다. 책상에는 논리가 있습니다. 편지는 우체통에, 문서는 종이에, 보관할 것은 서랍에 넣습니다. 이는 실제적인 주장이며, 향수라고 치부하는 것은 게으른 태도입니다. 하지만 같은 물리성이 다른 사용자에게는 기능을 숨깁니다. Super+D가 서랍을 연다는 것이나, 접힌 창을 서랍에 넣을 수 있다는 것을 어떻게 발견할까요? 물리적 어포던스는 물체가 손에 닿을 때 작동하지만, 키보드 단축키는 어느 쪽이든 순수하게 학습된 추상입니다.

빛나는 물리적 책상 오브젝트들과 상호작용하는 손: 편지, 열린 서랍, 열쇠.
책상에는 본질적인 논리가 있습니다. 편지는 우체통에 들어갑니다. 평평한 아이콘 격자는 결코 이런 논리를 주지 못합니다.

DEsk가 진짜로 겨냥하는 것

DEsk를 우리 모두 이제 레이 트레이싱된 책상에서 일해야 한다는 제안으로 읽는다면 실수입니다. 그런 일은 일어나지 않을 것이고, 처음에 말한 경제성은 여전히 유효합니다. 수십억 기기에 배포하는 플랫폼 벤더는 크롬에 픽셀 단위 재질 셰이더를 쓰고, 램프 조명을 손으로 조정하고, 애니메이션이 정확한 황동 열쇠를 만드는 여유를 가질 수 없습니다. 플랫 디자인은 다리에 콘크리트가 기본값인 것처럼, 시스템 소프트웨어의 올바른 기본값으로 남습니다.

DEsk가 실제로 보여주는 것은 Linux 데스크톱이 10년 동안 증명할 필요가 있었던 것입니다. 컴포지터 계층이 이제 하나의 매체가 될 만큼 표현력을 갖췄다는 것입니다. Wayland와 최신 GPU는 의지 있는 개발자 한 명에게도 사각형을 배치하는 수준을 넘어, 일관된 세계를 렌더링할 수 있는 충분한 여유를 가진 전체 프레임 캔버스를 줍니다. 과거 Myst 시대의 기법, 즉 비싼 빛을 구워 두고 동적 레이어를 순방향 렌더링하는 방식은 이것을 불가능하게 만들었던 성능 격차를 메웁니다. 누군가 만드는 세계가 향수 어린 월넛 책상이든, 한 댓글러가 꿈꿨던 노스트로모 조종실이든, 아무도 상상하지 못한 무엇이든, 그것은 취향의 문제입니다. 이 소식의 핵심은 그 기능이 생겼다는 점입니다.

컴퓨팅에는 계속 반복되는 패턴이 있습니다. 기술이 성숙하면 주류는 가장 저렴한 적절한 미학으로 수렴하고, 이후 취미가들이 비싼 미학을 하나의 공예로 재발견합니다. 기계식 키보드, 1비트 디더링 아트, 에뮬레이터의 CRT 셰이더가 그랬습니다. 스큐어모피즘 데스크톱이 그 다음 차례입니다. 무언가를 대체하지는 않을 겁니다. 다만 DEsk의 책상 램프 하나가 레이 트레이싱된 방 전체를 밝히는 것처럼, 우리에게 상기시켜 줄 겁니다. 평평한 회색 사각형은 처음부터 예산 결정이었고, 예산은 취향과 달리 논쟁할 수 있다는 것을요.