수직 동기화 대기(V-Sync)에 대하여 설명이 명쾌하고 정리가 깔끔하게 잘 되어 있어 퍼 왔습니다. 평소 게임을 즐기면서 옵션 선택에서 가끔 혹은 자주 접하는 설정 항목인데 정확히 어떤 역할을 하는 것인지 알고 싶었는데 마침 좋은 설명글이 올라 왔더군요. ^^;
우리는 여태까지 수없이 많이 3D 옵션에 대한 이야기를 들었지만 정작 그것이 정확히 무엇인지는 모르고 있는 경우가 많습니다. 3D 옵션에는 여러가지가 있지만, 첫번째로 그중에서도 가장 중요한 수직 동기화 대기에 대하여 알아보도록 하겠습니다.
보통 3D 게임을 하다보면 수직 동기화 대기라는 옵션을 자주 보게 됩니다. 영어로는 Vertical Sync 또는 V-Sync라고 표시되어 있기도 하지요. [대기]라고 되어 있기 때문에 뭔가 느려지고 안좋아질꺼 같이 들리시나요? 하지만 이 옵션은 게임 화면의 품질을 결정하는데 중대한 영향을 미치게 됩니다. 이제부터 그 이유를 알아보도록 합시다.
먼저 수직 동기화 대기를 알려면 모니터에 대하여 알아야 합니다.
우리가 사용하는 모니터는 재생빈도가 있어서 초당 화면을 그리는 속도가 제한되어 있습니다. 모니터는 CRT의 경우 전자총이 화면 좌측상단에서부터 우측하단에까지 전자총이 한줄한줄 그리면서 화면을 그리게 됩니다. LCD의 경우에는 이미지 프로세서에 의하여 거의 동시에 화면이 전환되게 되지만, 액정이 전기 신호에 반응하는(움직이는) 시간이 필요하기 때문에 역시 재생빈도가 정해져 있습니다. LCD 모니터는 대부분 최대 75Hz로 제한되어 있죠.
아래 이미지에 보면 제가 쓰는 모니터의 재생빈도는 85Hz로 맞춰져 있군요.
초당 85번 완성된 화면을 그래낼 수 있다는 이야기가 됩니다. 해상도를 낮추면 전자총이 그려야 하는 픽셀수가 적어져서 재생빈도를 더욱 높일 수 있습니다. 제가 쓰는 LG CRT 모니터에서는 800x600 해상도에 최대 160Hz까지 지원을 하더군요. 1
모니터가 이렇게 능력이 제한되어 있기 때문에 사실 우리가 벤치마크에서 120 프레임이 나왔네 300 프레임이 나왔네 하는 것은 의미가 없습니다. 왜냐면 모니터가 초당 85장 밖에 그려내지 못하는데, 비디오 카드에서 300 프레임을 그려내면 뭐합니까, 실질적으로 모니터에 표시되는 화면은 85장(LCD는 75장) 밖에 안되는 것 입니다.
여기까지 읽으셨다면 수직 동기화 대기란 모니터에 성능에 맞게 비디오 카드의 작동 속도를 맞추는 것이구나라고 대충 감이 오실거라고 믿습니다. 하지만 왜 그렇게 해야 하는가... 그것에 더 중요한 비밀이 숨어 있습니다.
위의 그림은 NVIDIA의 설정 페이지에서 볼 수 있는 예제를 3프레임만 캡쳐한 모습 입니다. 1프레임->2프레임->3프레임으로 움직이면서 NVIDIA 로고가 움직이는 모습으로 보이게 되지요. 만화의 원리처럼 약간씩 모양이 다른 그림을 연속해서 그려서 보여주면 움직이는 것처럼 보이는 것 입니다.
그러면 무엇이 문제일까요? 예를 하나 들어보겠습니다. 모니터가 85Hz로 동작하여 초당 85장을 그리는데 비디오 카드가 초당 300장의 프레임을 만들어서 모니터에 보냈다고 예를 들어보겠습니다.
모니터가 1프레임을 그리고 있습니다. 그런데 비디오 카드는 벌써 2프레임을 다 그려서 모니터에 전송을 해버렸습니다. 모니터는 1프레임을 반쯤 그린 상태인데 벌써 비디오 카드에서 2프레임이 도착 해버렸으므로 나머지 반은 2프레임으로 그려냅니다. 결국 화면에 보이게 되는 내용은 아래와 같이 되어버리지요. 2
중간에 잘린 것처럼 보이는 이유는, 그 라인을 기준으로 윗쪽은 1프레임 정보가 그려진 것이고 아래쪽은 2프레임 정보가 그려진 것 입니다. 비디오 카드가 성능이 심하게 좋거나 모니터가 심하게 재생빈도가 낮아서 모니터가 1프레임 그리는 동안에 비디오 카드가 3프레임까지 그려냈다면 아래와 같이 잘린 부분이 두군데나 나타나게 됩니다.
수직 동기화 대기란 바로 이 현상을 막아주는 것 입니다. 우리는 모니터가 신호만 받는 것으로 알고 있지만, 모니터는 화면 상단에서 하단까지 한 화면이 다 그려지면 [내가 한 화면을 다 그렸으니 다음 페이지를 그릴 준비가 되었다]하고 비디오 카드에게 신호를 보내도록 되어 있습니다. 이 신호를 기다릴지 안 기다릴지 결정하는 것이 바로 [수직 동기화 대기] 옵션인 것이죠. 이 옵션을 ON 으로 설정하면 모니터에서 그릴 준비가 되었다는 신호가 올 때만 프레임 정보를 보내주기 때문에 모니터의 재생빈도 이상 프레임을 그리지 못합니다. 결국 전체 프레임도 모니터의 능력 만큼 밖에 나오지 않겠지요.
대신에 화면이 잘리는 현상이 안나타나기 때문에 훨씬 깔끔한 3D 품질을 얻을 수 있습니다. 말 그대로 프레임 수는 숫자 놀음에 불과한 것이고 품질로 비교하면 수직 동기화 대기를 켜는 것이 훨씬 우수한 품질의 이미지를 얻을 수 있는 것 입니다.
물론 가장 좋은 것은 모니터도 높은 재생빈도를 가지고 비디오 카드도 이 재생빈도 만큼 프레임을 그려내주는 것이 가장 좋습니다. 3
위 그림에서 보듯이 3D 옵션에 있는 수직 동기화 대기 옵션에서 [응용프로그램 제어]로 설정하면 응용프로그램이 내부 설정에 따라서 수직 동기화 여부를 결정하도록 할 수 있으며, [끄기]나 [켜키]를 통해서 강제로 수직 동기화 대기를 조절할 수 있습니다. 하지만 옵션에서 설정하는 정보는 OpenGL에서만 의미가 있고 Direct3D 기반으로 개발된 프로그램은 내부적으로 수직 동기화 옵션을 다시 끌 수 있도록 해놓았기 때문에 100% 적용되지는 않습니다.
이상으로 수직 동기화 대기에 대한 모든 내용을 마칩니다.
원본출처 : Parkoz
- 출처: http://www.parkoz.com/zboard/view.php?id=my_tips&page=1&sn1=&divpage=2&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=9306&cstart_page=0
수직 동기화 대기 (Vertical Sync or V-Sync)
우리는 여태까지 수없이 많이 3D 옵션에 대한 이야기를 들었지만 정작 그것이 정확히 무엇인지는 모르고 있는 경우가 많습니다. 3D 옵션에는 여러가지가 있지만, 첫번째로 그중에서도 가장 중요한 수직 동기화 대기에 대하여 알아보도록 하겠습니다.
보통 3D 게임을 하다보면 수직 동기화 대기라는 옵션을 자주 보게 됩니다. 영어로는 Vertical Sync 또는 V-Sync라고 표시되어 있기도 하지요. [대기]라고 되어 있기 때문에 뭔가 느려지고 안좋아질꺼 같이 들리시나요? 하지만 이 옵션은 게임 화면의 품질을 결정하는데 중대한 영향을 미치게 됩니다. 이제부터 그 이유를 알아보도록 합시다.
먼저 수직 동기화 대기를 알려면 모니터에 대하여 알아야 합니다.
우리가 사용하는 모니터는 재생빈도가 있어서 초당 화면을 그리는 속도가 제한되어 있습니다. 모니터는 CRT의 경우 전자총이 화면 좌측상단에서부터 우측하단에까지 전자총이 한줄한줄 그리면서 화면을 그리게 됩니다. LCD의 경우에는 이미지 프로세서에 의하여 거의 동시에 화면이 전환되게 되지만, 액정이 전기 신호에 반응하는(움직이는) 시간이 필요하기 때문에 역시 재생빈도가 정해져 있습니다. LCD 모니터는 대부분 최대 75Hz로 제한되어 있죠.
아래 이미지에 보면 제가 쓰는 모니터의 재생빈도는 85Hz로 맞춰져 있군요.
초당 85번 완성된 화면을 그래낼 수 있다는 이야기가 됩니다. 해상도를 낮추면 전자총이 그려야 하는 픽셀수가 적어져서 재생빈도를 더욱 높일 수 있습니다. 제가 쓰는 LG CRT 모니터에서는 800x600 해상도에 최대 160Hz까지 지원을 하더군요. 1
모니터가 이렇게 능력이 제한되어 있기 때문에 사실 우리가 벤치마크에서 120 프레임이 나왔네 300 프레임이 나왔네 하는 것은 의미가 없습니다. 왜냐면 모니터가 초당 85장 밖에 그려내지 못하는데, 비디오 카드에서 300 프레임을 그려내면 뭐합니까, 실질적으로 모니터에 표시되는 화면은 85장(LCD는 75장) 밖에 안되는 것 입니다.
여기까지 읽으셨다면 수직 동기화 대기란 모니터에 성능에 맞게 비디오 카드의 작동 속도를 맞추는 것이구나라고 대충 감이 오실거라고 믿습니다. 하지만 왜 그렇게 해야 하는가... 그것에 더 중요한 비밀이 숨어 있습니다.
위의 그림은 NVIDIA의 설정 페이지에서 볼 수 있는 예제를 3프레임만 캡쳐한 모습 입니다. 1프레임->2프레임->3프레임으로 움직이면서 NVIDIA 로고가 움직이는 모습으로 보이게 되지요. 만화의 원리처럼 약간씩 모양이 다른 그림을 연속해서 그려서 보여주면 움직이는 것처럼 보이는 것 입니다.
그러면 무엇이 문제일까요? 예를 하나 들어보겠습니다. 모니터가 85Hz로 동작하여 초당 85장을 그리는데 비디오 카드가 초당 300장의 프레임을 만들어서 모니터에 보냈다고 예를 들어보겠습니다.
모니터가 1프레임을 그리고 있습니다. 그런데 비디오 카드는 벌써 2프레임을 다 그려서 모니터에 전송을 해버렸습니다. 모니터는 1프레임을 반쯤 그린 상태인데 벌써 비디오 카드에서 2프레임이 도착 해버렸으므로 나머지 반은 2프레임으로 그려냅니다. 결국 화면에 보이게 되는 내용은 아래와 같이 되어버리지요. 2
중간에 잘린 것처럼 보이는 이유는, 그 라인을 기준으로 윗쪽은 1프레임 정보가 그려진 것이고 아래쪽은 2프레임 정보가 그려진 것 입니다. 비디오 카드가 성능이 심하게 좋거나 모니터가 심하게 재생빈도가 낮아서 모니터가 1프레임 그리는 동안에 비디오 카드가 3프레임까지 그려냈다면 아래와 같이 잘린 부분이 두군데나 나타나게 됩니다.
수직 동기화 대기란 바로 이 현상을 막아주는 것 입니다. 우리는 모니터가 신호만 받는 것으로 알고 있지만, 모니터는 화면 상단에서 하단까지 한 화면이 다 그려지면 [내가 한 화면을 다 그렸으니 다음 페이지를 그릴 준비가 되었다]하고 비디오 카드에게 신호를 보내도록 되어 있습니다. 이 신호를 기다릴지 안 기다릴지 결정하는 것이 바로 [수직 동기화 대기] 옵션인 것이죠. 이 옵션을 ON 으로 설정하면 모니터에서 그릴 준비가 되었다는 신호가 올 때만 프레임 정보를 보내주기 때문에 모니터의 재생빈도 이상 프레임을 그리지 못합니다. 결국 전체 프레임도 모니터의 능력 만큼 밖에 나오지 않겠지요.
대신에 화면이 잘리는 현상이 안나타나기 때문에 훨씬 깔끔한 3D 품질을 얻을 수 있습니다. 말 그대로 프레임 수는 숫자 놀음에 불과한 것이고 품질로 비교하면 수직 동기화 대기를 켜는 것이 훨씬 우수한 품질의 이미지를 얻을 수 있는 것 입니다.
물론 가장 좋은 것은 모니터도 높은 재생빈도를 가지고 비디오 카드도 이 재생빈도 만큼 프레임을 그려내주는 것이 가장 좋습니다. 3
위 그림에서 보듯이 3D 옵션에 있는 수직 동기화 대기 옵션에서 [응용프로그램 제어]로 설정하면 응용프로그램이 내부 설정에 따라서 수직 동기화 여부를 결정하도록 할 수 있으며, [끄기]나 [켜키]를 통해서 강제로 수직 동기화 대기를 조절할 수 있습니다. 하지만 옵션에서 설정하는 정보는 OpenGL에서만 의미가 있고 Direct3D 기반으로 개발된 프로그램은 내부적으로 수직 동기화 옵션을 다시 끌 수 있도록 해놓았기 때문에 100% 적용되지는 않습니다.
이상으로 수직 동기화 대기에 대한 모든 내용을 마칩니다.
원본출처 : Parkoz
- 출처: http://www.parkoz.com/zboard/view.php?id=my_tips&page=1&sn1=&divpage=2&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=9306&cstart_page=0
'컴퓨터 관련 > Windows' 카테고리의 다른 글
Windows 7: Internet Explorer 8 개관(Overview) (4) | 2009.01.13 |
---|---|
Windows 7: Action Center 개관(Overview) (0) | 2009.01.12 |
Windows 7, GPU 없이도 DirectX 가속화 제공 (0) | 2008.12.02 |
Windows 7 UI(사용자 인터페이스) 소개 (0) | 2008.10.29 |
Desktop Wallpaper Calendar: October 2008 (0) | 2008.10.03 |