수직동기화
1. 개요
'''V'''ertical '''Sync'''hronization ('''V-sync''')
컴퓨터 디스플레이에서 그래픽 카드의 프레임 생성과 모니터의 프레임 출력 타이밍을 맞추도록 하는 설정. 아날로그 영상 신호에서 프레임 시작을 나타내는 신호의 이름에서 유래하였다. 흔히 게임의 비디오 옵션에서 자주 보이는 Vsync 옵션이 바로 수직동기화와 관련이 있다.
수직동기 신호는 디스플레이의 가장 마지막에서 발생하여 가장 위쪽에서 종료된다. 그 다음에는 디스플레이 화면의 왼쪽에서 오른쪽으로, 위에서 아래로 화면을 그리며 내려와서, 다시 화면의 맨 아래쪽에서 새로운 수직동기 신호를 발생시킨다. 여기까지가 주로 1/60 초가 걸리게 된다. 그래서 대부분의 게임도 여기에 맞춰 1/60초에 한번씩 데이터 계산하고 화면을 새로 그리게 된다.
텔레비전 게임기야 무조건 수직동기화가 기본이었기에 상관없는 이야기지만, 컴퓨터 게임의 경우엔 수직동기화를 켜는 것이 의미가 없는 경우가 많았다. 예전 CRT 모니터가 널리 쓰일 때는 모니터의 주사율이 60Hz를 한참 넘기는 것이 보통이었기 때문에[1] 수직동기화를 켜서 얻는 이익이 그리 크지 않았다. 오히려 수직동기화를 끄고 벤치마크를 돌려 초당 120프레임을 관측하며 성능부심을 갖는 일이 흔했을 정도. 그러나 현재와 같이 60Hz짜리 LCD를 주로 쓰는 상황에서는 이것을 사용해야만 찢김을 방지할 수 있는 경우가 많다.
예외적으로 60fps 이상으로 실행될 때 게임이 문제를 일으키는 경우[3] 이걸 방지하기 위해 120Hz 혹은 144Hz 게이밍 모니터를 사용하는데도 프레임을 60으로 제한하거나 1/2 수직동기화를 걸기도 한다. 모니터 자체적으로 60Hz 세팅이 있는 모니터도 있다. 운영체제 설정이나 게임 설정에서도 해상도 관련 옵션에서 주사율을 변경할 수 있다.
2. 장단점
전술했듯이 1/60초 단위로 수직동기를 대기하며 계산을 마치고 그림을 그린다. 그런데 만약 처리가 늦어져서 수직동기 신호를 놓치게 되면 게임은 다음번 수직동기 신호까지 또 다시 대기를 해야 한다. 그러면 그 프레임에서는 결국 두 배인 1/30초를 소비하게 되는 것이다. 이런 처리 지연이 계속 이어지게 된다면 결국 플레이어는 게임 자체가 느려지는 현상을 경험하게 된다. 이것이 바로 처리지연이다.
수직동기화의 장단점은 다음과 같다.
- 장점
- 단점
- 화면이 수직 동기 버퍼를 거쳐 나가는 과정에서 지연 시간이 생겨, 결과적으로 입력과 출력 사이에 딜레이가 생기게 되기 때문에 60프레임으로 갱신한다고 하더라도 민감한 사람들은 오히려 인풋랙 때문에 스트레스를 받을 수 있다. 그렇기 때문에 반응속도가 중요한 대전액션게임과 FPS 헤비유저들은 대부분 수직동기화를 끄는 경향이 있다.
- 기본적으로 고사양 게임은 성능 저하를 유발하는것이 보통이며, 수직동기화를 끄는 것이 성능 개선을 위한 권장 사항이다.[5] 성능부족으로 인해 60프레임에서 1,2프레임만 떨어져도 30프레임으로 바로 하락하는 현상이 나타난다. 대신 이렇게 수직동기화를 풀 경우 프레임 제한을 걸어야 하는 경우가 많다.
게임에 따라 다르지만, 대체로 컴퓨터 성능이 게임에 비해 넉넉하면 수직 동기화를 켜는 것을 추천한다.[6] 단, 반응속도가 중요한 FPS 게임, 특히 온라인 플레이 같은 경우는 옵션을 낮춰 그래픽 품질을 희생하더라도 최대 프레임을 확보하는 것이 중요하다. 아직도 서든어택을 CRT모니터로 서비스하는 PC방이 있을 정도지만 이미 LCD에서도 144Hz 이상 갱신이 가능한 시대가 열렸기에 민감한 사람이라면 이쪽으로 업그레이드를 권장한다.
3. 화면 찢김
화면 위아래가 사진을 잘라붙인 것처럼 어긋나는 현상. 티어링, 테어링이라고도 부르는데 찢김이라는 뜻의 영어 tearing을 발음대로 읽은 것이다.
현재의 디스플레이 장치는 모두 기본적으로 더블 버퍼, 즉 '''백버퍼'''와 '''프론트버퍼'''를 사용하여 백버퍼에 다음에 출력될 화면을 집어넣고 화면이 갱신될때 프론트 버퍼와 백버퍼를 바꿔치기 하여 백버퍼의 내용을 보여줌으로써 자연스러운 화면 전환을 이룬다. 이때 백버퍼에 화면을 넣고 있는동안 프론트 버퍼와의 전환이 이루어지면 출력되는 화면은 지금 넣고 있는것과 이전의 화면이 섞이게 되며 이것을 찢김이라고 한다. 이것을 제거하기 위한 기술이 수직동기화이다.
만약 수직동기가 되지 않은 상태에서 프레임의 생성을 프로그램에게 맡겨둔다면 정해진 시간 없이 프레임이 과다 혹은 과소 생성되게되어 한 화면에 동시에 2-3개의 화면이 그려지게 되는 경우가 발생하게 될 것이다. 이런 상황에서 화면이 좌에서 우로 흐른다면 서로 맞지 않는 그림들이 한 화면에 섞여져 나와 어긋나게 보여질 것이다.
찢김은 백버퍼에 쓰고 있는 화면과 이전 화면이 크게 다를때 쉽게 인지하게 되는데 주로 총싸움 게임에서 체감된다. FPS(초당 정지화상수) 수치가 높아지면 백버퍼에 쓰고있는 시간이 증대되므로 찢김 발생확률이 증가하게 되고 FPS수치가 낮아지면 발생확률은 낮아지지만 발생시 찢김 지속시간이 길어지고 화면간의 변화가 커지게 되므로 심하게 불편함을 느끼게 된다.
수직동기화를 통하여 찢김을 제거하지 않는다면 일반적으로 FPS수치가 모니터의 초당 갱신수와 일치할때, 60Hz 모니터가 일반적이므로 60fps일때 가장 불편함을 덜 느끼게 된다.
4. NTSC와 PAL
보통 디스플레이는 1/60 초로 화면을 경신하지만 유럽쪽에 사용되는 PAL 같은 경우에는 1/50 초로 화면을 경신한다. 그래서 과거에는 프로그램도 여기에 맞춰서 만들어야 할 필요가 있었다. 주로 1/60 초로 제작하고 6번에 한 번 그림을 그리지 않는 식으로 만들었는데, HD 방송 시대가 오면서 대부분 1/60 초의 신호를 갖고 있기 때문에 고려하지 않아도 되었다고. PAL 게임을 NTSC에서 돌리면 게임이 1.2배 빨라진다거나 하는 현상을 볼 수 있다.
5. 적응형 동기화
5.1. 개요
적응형 동기화(Adaptive Sync; 어댑티브 싱크)란 모니터와 비디오 소스가 가변적인(Adaptive) 싱크로 동작하는 것이다. CRT의 한계상 고정된 모니터의 주사율을 가질 수밖에 없었는데, 이 때문에 고정된 동기화(싱크)를 사용했어야 했고 CRT가 사실상 더 이상 사용되지 않는 오늘날에도 이를 계속 유지해 왔었다. 적응형 동기화란 이러한 구세대적인 제약에서 벗어나 모니터가 가변적인 주사율로 동작하는 것인데 비디오 소스가 화면이 바뀔 때만 화면을 보내 주고 모니터는 화면에 대한 정보를 수신할 때만 경신하는 형태가 된다. 즉 주객이 바뀌게 되는 셈이다.[7]
수직 동기화는 수직 동기된 프레임 수에서 떨어지면 강제로 프레임이 1/2로 낮아진다. 예를 들어 10ms마다 갱신되는 화면이 있다고 가정하자. 그러면 FPS는 100인데(1000(ms)/10(ms)=100(FPS)), 처리 지연이 걸려 11ms만에 다음 화면을 그리게 된다면, 10ms로 '동기화'가 되어 있는 출력부에서는 불완전한 해당 프레임을 내보내느니 그냥 내보내지 않는 것을 택한다. 그러면 전 프레임과 다음 프레임의 간격은 20ms가 되는데, 이 상황에서 FPS는 '''50'''(1000(ms)/20(ms)=50(FPS))이 되는 것. 그래서 끊김[8] 이 발생할 수 있는데, 적응형 동기화는 신호를 받는 모니터에서 화면을 가져오는 주기를 가변적으로 조절하여 그래픽카드가 화면이 완성될 때에만 화면을 갱신하게 하는 기법이다.
이러한 것은 상당한 장점이 많은데 모니터 동기화를 기다리다가 폐기되는 프레임이 없어지고, 전 프레임과 정확히 같은 프레임인 경우에 고정된 동기화는 동기화에 맞춰 무조건 새롭게 연산해서 이를 보내야 했으나 적응형 동기화인 경우는 프레임이 달라질 경우에만 송신해도 되기 때문에 추가 연산을 할 필요가 없어져 전력 효율이 높아진다. 그리고 비디오 소스가 화면을 (규격 범위 내에서) 자유롭게 송신할 수 있으면서도 실질적으로는 수직 동기화가 동작하는 것이기 때문에 찢김 현상도 없다. 또한 게임 플레이시 낮은 프레임으로 인해 발생되는 인풋랙도 줄게 된다.
동기화에 대해서 가장 민감한 것이 게임업계이기는 하나 이 기술은 단순히 게임을 벗어나 모바일, TV 등 다양한 영상분야에서 폭넓게 활용될 수 있는 기술이다.
5.2. FreeSync와 G-SYNC
AMD는 '''FreeSync'''라는 이름으로, NVIDIA는 '''G-SYNC'''라는 이름을 사용한다. 근본적인 방식은 비슷하지만 엄밀히는 다른데, 지싱크의 경우엔 모니터 자체에 별도의 하드웨어를 부착하여 조절하는 방식이지만 프리싱크 등의 경우엔 소프트웨어상으로 제어한다는 것이 특징. FreeSync는 VRR[9] 보다 낮은 프레임이 출력될 경우 모니터의 주사율을 최고값으로 고정시켜 출력하고[10] , G-SYNC는 VRR보다 낮은 프레임이 출력될 경우 '''강제로''' 프레임을 상승시킨다는 차이가 있다. 정확히 말하면 이전의 프레임을 그대로 복사해서 붙여넣어 늘리는 방식이다.
FreeSync는 모니터 주사율을 낮추기 때문에 찢김과 스터터링 현상이 다시 나타날 가능성이 있고 주사율이 떨어지니 인풋랙이 증가한다는 단점이 있다.[11] 결과적으론 모니터의 스펙을 좀 타는 편. 크로스파이어도 지원을 안 했다가 15.7 드라이버부터 지원하기 시작했다. 프리싱크의 경우는 기존에 있는 VESA 표준 기능을 활용하는 것이긴 하나 잘 사용되지 않는 기능이었기 때문에 이를 완벽히 지원하는 모니터가 사실상 없었다. 따라서 소프트웨어 방식이라고 하나 하드웨어 개선 없이 사용할 수 없는 한계가 있다. 이러한 면에서는 로열티를 제외하고는 G-SYNC와 비슷한 상황이라고 할 수 있다. 다만 VESA 표준이면서 로열티가 없거니와 전력 효율이 좋아지고 NVIDIA의 간섭에서 자유로운 등 다양한 장점이 많아서 HDMI 1.4a부터 적용되었으며 다양한 기업에서 모니터 뿐만 아니라 일반 TV 등에도 이 기능을 포함한 제품을 출시 예정이다.
또한 인텔이 그래픽카드 사업에 뛰어들면서 외장 뿐만 아니라 차세대 10nm CPU부터 내장 그래픽까지 프리싱크 지원을 천명했으므로 NVIDIA 유저들도 FreeSync 사용이 이론적으로 가능해질 수 있다. 그리고 '''19년 1월부터 NVIDIA 그래픽 드라이버를 최신으로 업데이트하면 VESA 표준의 Adaptive Sync 및 FreeSync 사용이 가능해졌다.'''[12][13] 다만 파스칼과 튜링 아키텍처 기반의 그래픽 카드에서만 작동한다. 물론 지금도 Radeon 외장형 그래픽 카드를 꽂아주면 가능하긴 하나 드라이버 지원도 부족하고 게임이 렌더링 그래픽 장치 선택 옵션이 있어야 한다. 2018년 전후에 출시한 게임들은 상당수가 지원하기 때문에 상황은 점점 나아지고 있지만, 내장 그래픽이 지원한다면 그냥 온보드 포트에 꽂아주면 끝이다.
G-SYNC는 FreeSync보다 대체적으로 나은 성능을 보여준다. NVIDIA가 정한 패널 기준을 맞춰야 되고 일정한 가이드라인이 잡혀있는 데다 모듈의 덕을 보기 때문인데, 다만 모니터 안에 G-SYNC의 모듈을 따로 탑재해야 하며, 모듈을 탑재할 때마다 엔비디아에게 라이센스 비용을 지불해야 하기 때문에 모니터의 가격이 상승한다. 이 때문에 FreeSync 모니터 대비 G-SYNC 모니터의 비율이 극악에 가까울 정도로 차이가 난다. 이유는 매우 간단한데 위에서 쓴 로열티가 없다는 장점 덕분에 국내 해외 할것 없이 '''모니터 제조사들이 G-SYNC 모니터 보다는 FreeSync 모니터를 더 많이 출시하기 때문'''이다. 현재 G-SYNC 모니터는 FreeSync 모니터와 가성비 싸움이 아예 안되는 수준까지 몰려있다.[14] 20만원 차이는 보급형 그래픽 카드 한장 차이이며, 그냥 상위 그래픽 카드로 업그레이드할 수 있는 가격이다.
[image]
출처
수직 동기화 ON일 경우 : 화면은 주기적으로 갱신되어 프레임은 유지되지만 화면이 갱신될 시점에 연산이 끝나지 않았다면 같은 화면을 뿌려주므로 랙이 발생한다. (이 순간 프레임은 1/2 로 볼 수 있다.)
[image]
출처
수직 동기화 OFF일 경우 : 랙이 발생해서 수직 동기화 OFF 했더니, 화면이 갱신되는 도중에 새로운 화면의 결과가 도착하여 화면이 찢어져버린다.
[image]
출처
G-SYNC : GPU가 연산이 끝나는 시점에만 화면을 갱신하므로, 랙도 없고 찢김도 없다.
[image]
출처
G-SYNC가 지원되는 모니터에 탑재되어 있는 G-SYNC 모듈.
6. 관련 기술
다음과 같은 특징을 보고 필요한 쪽을 선택하면 된다.
수직동기화 형태에 따른 입력 지연 시간의 변화는 다음 링크에서 확인할 수 있다.
Reduce Input Lag in PC Games: The Definitive Guide
[1] CRT 모니터의 감광체 특성 때문에 최초 85Hz 이상으로 맞추는 경우가 많았으며 고급 모니터와 그래픽 카드는 120Hz 이상도 지원했다. 60Hz로 맞추면 화면의 깜빡임 때문에 오히려 눈이 엄청나게 피로해졌다.[2] 홈케이드에 주사율이 75 Hz인 모니터를 물려 확인.[3] 게임이 주사율/60 배 속도로 실행된다거나 게임 내 특정 기능이 오작동한다거나 하는 등의 문제가 발생할 수 있다. 주로 콘솔 환경을 전제하고 만들어진 게임에서 이런 일이 잦다. 전자의 예가 오네찬바라 Z2: 카오스, 동물철권1로 120Hz에서 게임이 두 배 속도로 실행되기 때문에 정상적인 플레이가 불가능하다. EZ2AC 역시 주사율이 높은 모니터에서 UI 애니메이션의 속도가 비정상적으로 빨라지고, 곡 선택 제한시간이 짧아져 정상적인 플레이를 할 수 없다.[2] 후자의 예로는 스카이림이 있는데, 60fps를 초과하면 물리 엔진이 오작동을 일으켜 오브젝트가 제자리에서 부들부들 떨거나 사방으로 날아다니는 현상이 발생한다.[4] 단 프레임은 Glide가속 시 20fps대, D3D 가속일때는 한자릿수....[5] 속도가 느려지게 느끼는 것 말고도 심한 경우는 그래픽 카드 자체가 뻗어 버려서 리셋 말고는 답이 없는 경우가 생기기도 한다. 폴아웃 4의 경우 NVIDIA 사용자들 사이에서 이런 경우가 종종 발생하는데 이 경우는 오히려 NVIDIA 제어판에서 수직동기화 설정을 꺼야 해결되기도 한다.[6] 불안정한 70~90 프레임보다 수직 동기화 60 프레임이 훨씬 더 안정적이다. 프레임은 잘나오는데도 화면이 끊기는듯한 느낌이 든다면 수직동기화로 효과를 볼 수 있다.[7] 다만 적응형 싱크가 적용되는 주사율 구간이 있으며 보통 45~60 또는 45~120/144 사이에 돌아간다. 45 fps 밑으로는 답도 없는 셈이다.[8] 스터터링(stuttering)이라고 한다.[9] 허용되는 프레임[10] 단, Freesync 의 경우 LFC 라는 기술이 있는데 프레임이 VRR 범위 미만으로 떨어졌을 떄 주사율을 프레임의 x배 해서 계속 프리싱크가 작동이 되게 한다. 예: VRR 범위는 48 ~ 144hz 인데 프레임이 47fps 일 경우 주사율을 94hz 로 바꿔서 계속 프리싱크가 작동한다[11] 그래서 최상의 프리싱크 기술을 체험하기 위해서는 LFC가 있는 프리싱크 모니터를 사용하는 것을 AMD는 권장한다. 즉 fps가 VRR 미만으로 떨어지거나 VRR 범위 안에 있으면 프리싱크는 계속 작동이 되며, 계속 티어링과 스터더링을 잡게 하는 원리.[12] 정확히는 Adaptive Sync나 FreeSync 지원 모니터를 사용하고 있는 상태에서 드라이버를 업데이트하면 NVIDIA 제어판에서 G-SYNC 활성화가 가능해진다.[13] 사실 이건 FreeSync 지원이라기보다는 사실상 NVIDA만의 Adaptive Sync를 지원하는 것에 가깝다. NVIDIA는 이를 '''G-SYNC Compatible'''이라는 이름으로 발표했다. 프리싱크는 HDMI 포트에서도 이용이 가능하거니와 엔비디아 그래픽 카드로는 LFC를 사용할 수도 없으며, 따라서 모든 프리싱크 모니터와 호환되지는 않는다. 또한 일부 저가 모니터는 G-SYNC 호환 활성화을 위해 DP로 연결할 경우 HDR 기능이 사실상 무용지물이 되어 버려 결과적으로 'HDR'과 'G-SYNC 호환' 중 양자택일을 할 수 밖에 없는 상황에 놓이고 만다. 참고로 G-SYNC Compatible은 DisplayPort 1.2 이상의 단자에 연결했을 시에만 사용이 가능하다.[14] FreeSync의 경우 10만원대 보급형 모니터들만 되어도 탑재되어 있는 경우가 대부분이나, G-SYNC는 기본 50만원 정도에서 시작한다. 비싼만큼 이런 저런 기능이 많은 경우가 보통이지만 그걸 감안해도 가격차이가 너무 크기 때문에 가성비 면에서 밀릴 수밖에 없다. 이건 상기한 이유로 해외도 마찬가지라고 할 수 있다.[15] 동적 프레임제한의 경우 Radeonpro를 통해 라데온만 사용할 수 있으며, Radeonpro를 사용하면 동적 수직동기화라는 지포스의 적응형 수직동기화와 동일한 기능을 사용할 수 있다.