AMD는 독자적인 디스플레이 동기화 기술인 프리싱크의 2세대 기술, 프리싱크 2를 발표했습니다. 프리싱크는 GPU가 출력하는 영상을 보다 부드럽게 표시하는 매커니즘이나, 프리싱크 2는 그것과 전혀 방향이 다릅니다. 프리싱크 2는 프리싱크 1을 대체하는 것이 아니며 프리싱크 2가 나온 이후에도 프리싱크 1은 여전히 계속 나온다고 하네요.
그럼 프리싱크 2란 무엇이냐, HDR(High Dynamic Range)에 관련된 기술입니다. 그럼 왜 프리싱크라는 이름을 계속 쓰느냐, GPU가 주도해서 GPU와 디스플레이 사이의 연결에 관련된 기술이란 점에서 컨셉이 같기 때문이라고 하네요.
현재 PS4와 Xbox Ons S가 HDR을 지원하며, 라데온과 지포스도 HDR 출력을 지원합니다. 현재 4K 해상도를 지원하는 최신 TV 중 상당수가 HDR을 쓸 수 있으며 가격도 많이 저렴해졌습니다. 그런데 이 HDR의 보급에서 문제가 되는 것이 2개입니다.
하나는 지연입니다. LCD 패널의 응답 속도가 아니라 입력된 영상 신호를 TV나 모니터의 영상 엔진에서 처리해 액정 패널에 표시될 때까지의 시간입니다. HDR 렌더링을 지원하는 게임 그래픽은 렌더링 단계에서 현실과 가까운 다이나믹 레인지에 맞춰 계산하고 이를 부동소수점 버퍼에 렌더링 결과로 출력합니다. 극단적인 경우 HDR 렌더링에선 태양빛이 비추는 게임 세계의 반사를 최대 몇 천만 nit로 그리진 않습니다. 이걸 HDR 렌더링 결과라고는 해도 그걸 그대로 디스플레이에 출력하진 않습니다.
게임의 그래픽 엔진에선 HDR 디스플레이에 맞춰 일종의 톤 맵핑 작업을 중간에 거쳐야 할 필요가 있습니다. 게임에서 특정 장면을 포착했을 때 영상이 어떻게 되는지를 처리하는 단계입니다. 예를 들어 10억nit의 강한 빛에서도 깊은 숲 속에 있다면 계조가 약간 어둡게 보정디 되야 할 것이며, 밝은 사막 아래에서 반사되는 모래는 밝게 보정해야 할 것입니다.
또 게임 그래픽 엔진에서 톤 맵핑을 마쳐도 그 결과를 HDR 디스플레이에 직접 출력하진 못합니다. 디스플레이의 HDR 스펙에 맞춰 HDMI 2.0a에 규격화된 HDR 영상 포맷인 HDR10 같은 포맷으로 바꿀 필요가 있습니다. 그게 위 이미지에 나온 HDR 트랜스포트입니다. 그러니까 HDR 렌더링은 HDR 트랜스포트를 비롯한 변환을 거쳐 HDR 디스플레이에 출력된다는 것이지요.
AMD가 지적하는 건, 현재 HDR 지원 디스플레이는 대부분이 HDR 10 포맷 영상 표시를 할 때, 디스플레이의 영상 엔진에서 패널 특징이나 백라이트 밝기를 감안해 표시하면서, 표시 처리에 불필요한 시간이 걸려 SDR 영상보다 지연이 커진다는 것입니다. 그것이 위 이미지 중간의 디스플레이 톤 맵핑 부분입니다. 이게 모든 TV/모니터가 다 그렇다는 건 아니지만 하여간 일부는 그렇습니다.
그래서 프리싱크 2는 TV나 디스플레이에서 수행하는 HDR 처리를 GPU가 맡음으로서, AMD가 디스플레이 톤 맵핑이라 부르는 처리 시간을 줄이겠다는 게 기본 컨셉입니다.
다만 게임 개발자 입장에선 다소 혼동이 있을 수 있습니다. 앞에서 설명할 때, 출력 대상 디스플레이의 HDR 지원 규격에 맞춰 HDMI 2.0a에서 규격화된 HDR 영상 포맷의 HDR10 포맷으로 바꾼다고 말했으나, 이것만으로 잘 표시되지 않는 경우도 있습니다. 왜냐하면 현재 HDR 지원 디스플레이의 스펙을 애플리케이션/게임 프로그램이 알아낼 방법이 없기 때문입니다.
그래서 현재 HDR 지원 게임은 HDR10 지원 UHD 블루레이라면 1000nit가 되니까 그 정도 디스플레이가 많다고 가정해서 처리하는 식입니다. 실제 HDR 지원 4K TV는 직하형 백라이트를 사용하는 상위 모델이 1000~1400nit, 엣지형 백라이트 OLED는 600~800nit입니다. 이런 TV에서 앞서 말한대로 1000nit를 염두에 둔 HDR 영상이라면 하얀색이 제대로 표시되지 않습니다.
게다가 이건 TV의 이야기고, TV가 400~500nit의 밝기가 나왔을 때 PC용 디스플레이는 250~350nit 정도로 나온 바 있습니다. 그래서 HDR 시대에선 게임 프로그램이 어떤 HDR 디스플레이가 연결됐는지를 알아내는 게 매우 중요한데, AMD는 프리싱크 2에서 디스플레이의 스펙을 게임 프로그램에 전달하는 구조를 포함했습니다.
프리싱크 2 지원 시스템에서 렌더링이나 영상 출력 흐림이 어떻게 되는지를 나타낸 슬라이드입니다. 여기에서 위쪽이 기존 방식, 아래가 프리싱크 2의 HDR 렌더링입니다. 프리싱크 2는 현재 16비트 부동소수점(FP16) 버퍼를 비룟한 주요 포맷 외에도 AMD GPU 특유의 10비트 부동소수점(7e3) 버퍼도 지원합니다.
게임 컨텐츠에 의존하게 되는 게임 톤 맵핑이 필요하다는 건 변하지 않습니다. 허나 HDR 영상 포맷으로 변환하는 HDR 트랜스포트, TV의 HDR 대응 처리인 디스플레이 톤 맵핑 단계가 프리싱크 2 트랜스포트 하나로 합쳐진다는 게 특징입니다. 프리싱크 2 트랜스포트는 게임 프로그램이 프리싱크 2 드라이버 API를 호출, 상호 연계해 디스플레이에 최적화된 HDR 영상을 만들어 나갑니다.
예를 들어 최고 휘도 1000nit의 HDR 지원 TV에 연결하고 그 정보를 프리싱크 2를 통해 게임 프로그램에 전달, 최고 밝기 1000nit에 맞춰 톤 맵핑을 실히합니다. 250~350nit의 PC를 위한 HDR 디스플레이라면 여기에 맞춰 HDR 톤 맵핑을 하게 됩니다. 여기서 중요한 건 프리싱크 2에서 얻는 정보가 밝기 외에도 색영역, 색공간이 있다는 겁니다.
그래서 현재 연결된 디스플레이가 sRGB보다 넓은 색영역인 DCI-P3를 지원하면, 이를 게임 프로그램에서 파악해 조명과 색상 계산을 DCI-P3에 맞춰 하게 됩니다. 또 극단적인 예시긴 하나, sRGB 색공간의 디스플레이인데 빨간색만 광색역인 경우 빨간색만 강렬하게 그려내는 것도 기술적으로 가능하다고 합니다. 즉 sRGB, DCI-P3, BT.2020 같은 색공간에 얽매이지 않고 최대한의 능력을 끌어낸다는 게 프리싱크 2의 진정한 특징이라고 합니다.
프리싱크 1을 지원하는 라데온 그래픽카드라면 프리싱크 2를 쓸 수 있습니다. 또 앞서 말한대로 프리싱크 1과 2는 기술 방향성이 다르기에 함께 공존하게 됩니다. 그리고 프리싱크 2는 이를 지원하는 디스플레이에서만 쓸 수 있습니다. 모니터 제조사에서 펌웨어 업데이트를 하던가 추가 대응을 해야만 합니다. 모니터가 프리싱크 1을 지원한다고 해서 프리싱크 2도 바로 사용 가능한 건 아닙니다.
거기에 프리싱크 2를 지원하는 애플리케이션에서만 쓸 수 있다는 것도 아쉬운 부분입니다. 자동으로 소프트웨어를 인식해 지원하는 건 아닙니다. 다만 게임처럼 프리싱크 2를 지원하는 애플리케이션과 윈도우 데스크탑처럼 프리싱크 2를 지원하지 않는 환경에서 표시를 전환할 때 자동으로 적절한 표시 모드를 맞춰줍니다.
현재 프리싱크 2가 지원하는 HDR은 HDR 10과 돌비 비전이며, HLG(Hybrid Log Gamma)는 지원하지 않습니다. 이를 쓰는 제품이 적기 때문이라고 하네요.
또 프리싱크 1은 vESA가 디스플레이포트 1.2a의 확장 스펙인 어댑티브 싱크로 채택했으나, 프리싱크 2도 그렇게 될지는 아직 알 수 없습니다.