1P by GN⁺ 3일전 | ★ favorite | 댓글 1개
  • MacBook에서 전체 화면 게임 실행 시, 대부분의 게임이 디스플레이 노치 문제로 인해 흐릿하게 렌더링됨
  • 시스템의 해상도 선택 메커니즘이 노치 영역을 고려하지 않아, 잘못된 출력 영역 선택을 야기함
  • 16:10 해상도 선택이 임시 방편이지만, 근본적으로 Apple의 API 설계 및 안내 부족이 원인임
  • 대표적 게임들(Shadow of the Tomb Raider, No Man’s Sky 등)에서 문제 재현됨; 일부 최신 게임(Cyberpunk 2077)은 정상 처리
  • Apple이 HIG 및 API 업데이트로 개발자 지침과 지원 개선 필요함

Problem: 맥 전체 화면 게임에서의 흐릿한 렌더링 원인

  • 이 문제는 2023년 9월부터 FB13375033 이슈로 Apple에 제출되어 있음
  • MacBook 디스플레이에서 게임을 전체 화면으로 실행하는 경우, 대부분의 게임이 노치(notch) 영역을 제대로 고려하지 않아 렌더링 오류가 발생함
  • 많은 게임이 시스템에서 지원하는 해상도 목록을 받아 그 중 첫 번째(전체 디스플레이 영역 해상도)를 선택하지만, 실제로 AppKit에서 사용할 수 있는 전체 화면 영역은 노치 아래에 제한됨
  • 게임이 전체 디스플레이 해상도로 출력할 경우, 실제 그릴 수 있는 영역이 더 작으므로 프레임이 세로로 압축되고 블러 처리 문제로 이어짐

맥 디스플레이의 영역 구조

  • 맥 노치 디스플레이에는 세 가지 주요 영역이 있음
    • 전체 디스플레이 경계(노치와 메뉴 포함)
    • Safe area(노치 아래)
    • AppKit에서 활용 가능한 전체 화면 영역(메뉴바 아래)
  • CGDisplayCopyAllDisplayModes 함수가 반환하는 해상도 목록에는 전체 디스플레이 해상도메뉴바 아래 해상도(주로 16:10 비율) 가 혼재되어 있음
  • 대부분의 게임이 목록의 첫 항목(전체 화면 영역)을 사용하여 부정확한 출력을 함
  • 예시: Shadow of the Tomb Raider는 기본적으로 전체 디스플레이 해상도(3456x2234)로 시작하지만, 실제로 그릴 수 있는 영역은 3456x2160임(74픽셀 차이로 인해 화면이 압축되고 흐릿하게 렌더링됨)

Solution: 올바른 해상도 선택 및 임시 회피방안

  • 사용자: Mac 노치 디스플레이에서 전체 화면 게임 실행 시, 16:10 해상도를 직접 선택하는 것이 중요함(게임이 자동으로 맞추지 않음)
  • 개발자: NSScreen의 safeAreaInsets 속성을 이용하여 해상도 목록을 조금 더 정교하게 필터링 필요
    • Safe area 기준에 부합하는 해상도만 걸러내는 알고리듬을 코드로 제공(4:3 등 일부 해상도가 과하게 필터링되는 부작용 있음)
    • 본질적으로는 Apple 차원의 개선이 필요함

Affected Games: 대표적 영향 게임 및 처리 현황

  • Shadow of the Tomb Raider, Control Ultimate Edition, No Man’s Sky, Riven, Stray 등 대부분이 잘못된 해상도 기본값으로 인해 압축 및 블러 렌더링 현상
    • Control: 자체적으로 해상도를 임의로 지정하지만 실제 Mac 해상도와 맞지 않음
    • No Man’s Sky: 올바르지 않은 비율과 safe area, non safe area 해상도를 모두 제공함
    • Riven, Stray: 압축된 해상도로 렌더링 디폴트 적용
  • Cyberpunk 2077은 16:10 비율로 정상 해상도를 선택(내부 필터링 방식 미공개)
  • World of Warcraft: 레거시 API로 노치까지 그릴 수 있어 전체 해상도 적용이 정상임

What Apple could do: Apple의 대처 필요성

  • HIG(Human Interface Guidelines) 문서에 노치 디스플레이 관련 해상도 처리와 안내 추가 필요
  • AppKit/Cocoa에서 해상도 필터링을 손쉽게 할 수 있도록 CGDisplayMode 업데이트 요구
  • 게임 최적화 전용 새 API 설계 필요(해상도 리스트 및 보일러플레이트 해소)
  • 개발자에게는 해상도 질의 대신 자체 해상도 목록을 산출하거나 “렌더 스케일” 방식 사용 권장 고려
  • 이러한 개선 적용 시, Apple의 공식 문서와 샘플 코드 업데이트 병행 필요
Hacker News 의견
  • 나만 둥근 코너랑 노치가 있는 화면이 엄청 이상하게 느껴지는지 궁금함, 수십 년간 CRT 모니터의 애매한 기하학 때문에 고생하다가 드디어 완벽한 직사각형 디스플레이가 보편화됐는데, 이걸 다시 망치는 게 쿨해 보이려는 이유 때문이라는 게 아쉬움
    • 노치가 화면 영역을 빼앗는 바보 같은 게 아니라, 베젤이 줄어들면서 전체 화면 크기를 늘려주는 요소로 생각하면 됨, 그리고 노치 가까이 화면 코너가 오면, 노트북 외형이 둥글어서 화면도 꼭 같이 둥글어야 더 자연스러움, 사각형 화면이 둥근 노트북 귀퉁이에 있으면 이상해 보임, 하지만 상황에 따라 달라져서, Mac에서 비디오 재생 시엔 화면이 직사각형으로 바뀌고 노치 아래에서 재생됨, 실사용에선 더 큰 화면, 직장에선 둥근 코너, 메뉴바에 노치 들어가도 거슬리지 않음, 비디오와 게임 땐 직사각형 화면으로 바뀌는 식, 결국 다양한 장점과 유연함 때문에 꼭 나쁘게만 볼 필요 없는 부분임
    • 현재 기술로 가능한 선택지는 세 가지임, 1) 전면 카메라 없이 노베젤로 화면 최대화, 2) 전면 카메라 있지만 노베젤이라 화면이 5mm 짧아지고, 상단 5mm 영역은 아무 쓸모 없음, 3) 전면 카메라와 베젤/노치 조합에서, 가운데 '데드 스페이스'가 생기지만 옆 공간은 활용 가능, 그리고 대부분의 시간은 메뉴와 인디케이터가 상단에 떠있고 중간은 비어있으니, 노치 영역은 실제 앱 공간을 더 확보해주는 효과임, 게임도 #2, #3 방식 모두 데드 스페이스라 실제 차이 없음, 결국 노치는 실제 화면 가운데를 차지하는 게 아니라 좌우에 공간을 더해주는 셈임, 다만 해상도 리포팅 방식에는 문제 있다고 생각함 (앱에 전달하는 값이 실제와 다르면 혼란을 줌)
    • MacBook 노치 있는 모델을 사용 중인데 정말로 존재 자체가 잘 느껴지지 않음, MacBook 사용자들 대부분이 노치에 거의 신경 쓰지 않는 편임, 불만 가지는 분도 일부는 있지만 아주 소수임
    • 화면이 OLED인지 궁금함, 스마트폰은 다들 OLED임, 내 생각엔 노치는 사실 쓸모 없다고 보지만 어쨌든 전면 카메라 위치 때문에 필요함, OLED면 필요할 때마다 픽셀을 끄면 그냥 베젤처럼 보여서 기존 베젤 대안과 결국 비슷함
    • 나는 LCD에서 안티앨리어싱 없는 폰트가 더 보기 좋아서 선호했음, 픽셀의 각진 모서리가 깔끔하게 보이니까, 그런데도 많은 사람들이 부드러운 안티앨리어싱 효과를 선호함, 그게 CRT 느낌 때문인듯 함
  • World of Warcraft는 노치까지 고려해서 UI가 노치를 피해서 나오는 옵션이 있음, 내부적으로 C_UI에 safe region을 불러온 뒤, UIParent를 거기에 맞춰 조정해서 게임 화면은 전체를 다 쓰지만 UI는 노치 아래에 맞춰 조절함
    • WoW는 항상 macOS를 일류 플랫폼으로 잘 대해줬음, Blizzard가 최근 신작에서 macOS 지원을 중단한 건 정말 아쉬움
  • 이 상황은 Apple이 Mac의 게이밍에 신경을 안 쓴다는 사실을 보여줌, 나도 MBP, Mac Studio 등 엄청 투자했지만, 정작 하드웨어가 아니라 게이밍 소프트웨어의 한심한 관리로 한계가 생김, 그 배경에는 Apple이 Mac 게임에서 iOS처럼 30% 수수료를 못 챙기기 때문임, 결국 '겉으론 비금전적인 이유라 해도 모든 건 돈 때문'이라는 예전 선생님의 말이 떠오름
    • 진짜 더 큰 문제는 Apple의 문서화 수준이 너무 처참하다는 거임, 함수 시그니처 목록만 있는데 실제 활용법은 몇 년 전 WWDC 세션 찾아가봐야 하고, 거기 나온 게 맞는지도 애매함
    • Apple이 정말 게임에 신경 안 쓰는 건 맞지만, 노치 등 이런 문제 자체는 기술적으로 '마법 같은 추상화'를 제공한다고 하면서 일종의 모순이 생긴 결과임, 소프트웨어적으로 알아서 처리된다고 하는데, 실제로는 화면을 세밀하게 다루는 앱/게임은 다 따로 해킹/패치가 필요함, 매번 이런 식으로 기술적 한계와 추상화의 딜레마가 반복됨
    • Mac의 게임 시장에 신경 안 쓰는 건 게이밍이 본질적으로 마진이 낮은 비즈니스라는 인식 때문임, 일반적으로 게이머들은 하드웨어에 예민해서 부품 원가와 마진에 민감함(특히 SSD나 RAM 가격 등), Apple이 이윤을 높게 남기는 창작/엔터프라이즈 시장과는 완전히 다름
    • M3 Ultra Mac Studio를 쓰고 있음, $4,000 짜리 컴인데, StreamLabs로 뭐든 스트리밍 하려 하면(게임 안 켜도), 녹화가 끊기고 버벅거림, 이런 일이 왜 발생하는지 정말 이해가 안 감
    • Apple이 Mac에서 30%를 못 챙겨서 이런다는 주장은 설득력 없음, 왜냐면 기사의 대부분 Mac 게임이 App Store에 올라와 있어서 Apple은 수수료를 충분히 가져감, Control Ultimate Edition, Shadow of the Tomb Raider, Riven, Cyberpunk 2077 Ultimate, Stray 도 다 올라가 있음, 이건 Apple의 악의적 방해가 아니라 무능과 무관심에 가까움
  • WoW 같은 구식 게임은 CoreGraphics의 레거시 전체화면 API를 써서 노치 영역 안까지 자유롭게 그릴 수 있음, Mac에 대해 잘 모르는데, 게임이 노치까지 포함해서 전체화면을 그려서 몰입감을 높이다가도 UI와 게임플레이는 안전영역만 쓰는 게 맞지 않나 생각함, 별로 신경 안 쓰고 해상도만 임의로 잡아버리는 Control 같은 게임은 그냥 귀찮아서 그랬나 궁금함
    • 게임마다 방식은 다르지만, 노치 위 영역은 그냥 검정색이거나 접근 자체가 불가하게 처리됨(커서도 못 이동함), 화면 자체에서 해당 파트가 빠진 것처럼 동작함, M1 Air처럼 노치가 없을 때와 똑같다고 보면 됨
  • Apple만의 문제는 아님, Xbox 360에서도 2008년에 TV 오버스캔 이슈가 있었음, 해상도보다 작게 그려야 안전영역에 맞추는데, 개발할 땐 항상 따로 처리해야 했음, XNA에서 safe area rect를 제공한 덕에 좀 나아졌고 지금은 백버퍼 크기도 자유롭게 지정 가능, DLSS 등 쓸 때도 안전영역 1:1로 만드는 게 최선임, 결국 디스플레이 해상도와 렌더 해상도는 다를 수 있다는 걸 개발자가 명확히 인지해야 하고, wgpu, vulkan, AppKit, SDL, glfw 등 다양한 툴을 쓸 때도 마찬가지임
    • 본질적으로 너가 말한 건, 연산 자원을 아끼려고 일부러 화면을 더 작게 그리지만 결국 HDMI 출력할 땐 그대로 1080p로 다시 업스케일 되고, TV 오버스캔까지 겹치면서 오히려 문제가 심해질 수 있다는 거임, 사실 TV 오버스캔 문제는 커스텀 FoV랑 GUI 사이즈 조절 옵션만 있으면 해결 가능하니, 굳이 화면 자체를 줄일 필요 없다고 생각함
  • 이번 기사에서 흐릿하게 렌더링된 부분에만 집중한게 놀라움, 실제로는 마우스 포인터 위치까지도 영향을 받음, 게임마다 매번 OS 메뉴에 들어가서 전체화면을 노치 아래로 옮기도록 강제로 설정해야 함, 이런 건 전체 시스템 차원의 접근성 옵션이어야 하는데 그렇지 않은 게 의문임
  • 이 상황은 Mac의 게임 시장 규모를 잘 보여주는 사례임, 매우 작고 아쉬움
    • 실제로 Mac의 점유율은 Steam 하드웨어 설문 기준 1.88%에 불과함, Linux보다도 적음, 그래서 대부분의 개발자가 아예 신경을 안 씀
  • M3 MacBook Pro를 일부러 산 이유가 게임을 못 해서임, 사이버보안 석사를 위해 신뢰할만 한 노트북이 필요했고, 만약 Windows 기반 고성능 노트북을 샀다면 게임에 빠질 것 같아서 이런 선택을 함, 현재 기기는 전반적으로 훌륭하지만, 게임할 때 지나치게 과열되어서 걱정됨, 그래서 그냥 게임은 포기함
  • 이 사이트의 폰트는 몇몇 글자의 일부가 너무 얇음
    • 개인적으로 모든 글자 상단이 너무 얇다고 느낌, 실제로 잉크가 다 떨어진 프린터로 인쇄한 걸 읽는 기분임(Hacker News 전통대로 피드백 남김)
  • 기존 소프트웨어 안 깨고 이걸 고칠 방법이 궁금함, 리스트 재정렬?
    • Windows가 한 것처럼, 실행 중인 어플이 레거시 게임이면 OS 코드가 '거짓' 시스템 정보를 전달해서 화면이 잘 나오게 할 수 있음, 이런 식 접근이 Windows가 게임용 플랫폼으로 성공한 주요 원인이었음, 지금도 완전히 사라지진 않았지만 과거엔 이런 방식이 훨씬 더 흔했음