Bugün PC oyunları hakkında gördüğümüz en sık sorulan sorulardan birini ele alıyoruz: Saniyede kaç kareye ihtiyacınız var? Monitörlerinizin maksimum yenileme hızıyla aynı kare hızında çalışıyorsanız, 60 FPS 60 Hz monitörde veya oyunların monitörünüzün gösterebileceğinden çok daha yüksek bir kare hızında çalıştırmanın bir yararı var mı? 500 FPS?

Bu soruyu cevaplamak için, GPU ve Görüntüle gözbebeklerinize çerçeveler göndermek ve Vsync gibi teknolojilerin nasıl işlediğini görmek için birlikte çalışın.

Ancak sonuç olarak, oyunları monitörünüzün yenileme hızının çok üstünde, aşırı yüksek kare hızlarında çalıştırmak, algılanan daha düşük giriş gecikmesi ile daha duyarlı bir oyun deneyimine yol açacaktır. Sonuna kadar beklemek istemeyenler için sorunun cevabı bu. Şimdi nedenini konuşalım.

Editörün Notu: Bu özellik başlangıçta 2 Ağustos 2018'de yayınlandı. O zamanki gibi bugün de alakalı ve güncel, bu yüzden #ThrowbackThursday girişimimizin bir parçası olarak çarptık.

Diyelim ki bir izlemek 60 Hz sabit yenileme hızında. Başka bir deyişle, monitör her 1/60th saniyede veya her 16,7 ms'de bir. Bir oyunu çalıştırırken, GPU'nun her kareyi tam olarak 16,7 milisaniyede oluşturabileceğine dair bir garanti yoktur. Bazen 20ms sürebilir, bazen 15ms sürebilir, bazen 8ms sürebilir. GPU'da oyun oynamanın değişen doğası budur.

Bu değişen oluşturma oranıyla, oluşturulan her çerçevenin monitöre nasıl geçirileceğine dair bir seçenek vardır. Yeni çerçeveyi tamamen oluşturulduğu anda ekrana geçirebilir, genellikle oyunu çalıştırmak olarak bilinir “Vsync” veya dikey senkronizasyon kapalı, veya “Vsync açık” olarak bilinen yeni çerçeveyi göndermeden önce ekranın yenilenmeye hazır olmasını bekleyebilir.

Vsync kapalı

İlk yöntemi kullanarak Vsync kapalı, yırtılmaya neden olur. Bunun nedeni bir ekranın görüntünün tamamını anında güncelleyememesi, bunun yerine satır başı, genellikle ekranın üstünden altına doğru güncellenmesidir. Bu işlem sırasında GPU'dan yeni bir çerçeve hazır hale gelebilir ve Vsync'i kullanmadığımız için çerçeve hemen ekrana gönderilir. Sonuç olarak, yenilemenin ortasında, monitör yeni veriler alıyor ve ekrandaki satırların geri kalanını bu yeni verilerle güncelliyor. Ardından, ekranın üst yarısının bir önceki kareden, alt yarısının yeni, yeni kullanılabilir çerçeveden olduğu bir görüntü kalır.

yırtılma

Görüntülenen içeriğe bağlı olarak, bir yenilemede yeni ve eski kareler arasındaki bu ayrım, eski ve yeni kareler arasında gözyaşı veya görünür bir çizgi olarak kendini gösterir. Genellikle bir kare ve bir sonraki arasında büyük bir farkın olduğu hızlı hareket eden sahnelerde en belirgindir.

Vsync kapalı yırtılmaya yol açarken, GPU ve ekran arasında düşük gecikme süresi için, oluşturulduğu anda ekrana bir çerçeve gönderme avantajına sahiptir. Daha sonra aklınızda bulundurun.

Vsync açık

Bir görüntüyü görüntülemenin alternatif yolu Vsync açıktır. Burada, GPU'nun yeni çerçeveyi hemen ekrana göndermesi yerine, oluşturulan her çerçeveyi bir tampona karıştırır. İlk tampon şu anda üzerinde çalışılan çerçeveyi saklamak için kullanılır ve ikinci tampon ekranın göstermekte olduğu çerçeveyi saklamak için kullanılır. Yenileme sırasında hiçbir noktada ikinci arabellek güncellenmez, bu nedenle ekran yalnızca tamamen oluşturulmuş bir çerçeveden verileri gösterir ve sonuç olarak yenileme işleminin ortasında bir güncellemeden kopmazsınız.

Vsync açık, daha yakından bakış

İkinci ara belleğin güncellendiği tek nokta yenilemeler arasındadır. Bunun olmasını sağlamak için GPU, bir çerçeve oluşturmayı tamamladıktan sonra ekran yenilenmek üzere olana kadar bekler. Daha sonra arabellekleri karıştırır, yeni bir çerçeve oluşturmaya başlar ve işlem tekrarlanır. Bazen bir çerçeve ekrana ulaşmadan önce birden fazla arabellek içerebilir, ancak bu Vsync'in nasıl çalıştığının genel özüdür.

GPU'nuz bir çerçeve oluşturmak için çok yavaş olduğunda ... kekemelik olur

Vsync ile ilgili iki sorun var. İlk olarak, GPU oluşturma hızınız ekranın yenileme hızına yetişemeyecek kadar yavaşsa - 60 Hz ekranda yalnızca 40 FPS'de renderleme yeteneğine sahip olduğunu varsayalım - GPU, başlangıcı karşılamak için zamanında tam bir çerçeve oluşturmayacaktır. böylece ekran tekrarlanır. Bu, bazı kareler yalnızca bir kez gösterilirken, diğerleri iki kez görüntülendiğinden kekemeliğe neden olur.

Vsync açık: 60Hz ekran, 200 FPS

İkinci sorun, GPU'nuz çok hızlı olduğunda ve yenileme hızı aralığı içinde kolayca bir çerçeve oluşturabildiğinde ortaya çıkar. Diyelim ki, 16,7 ms yenileme penceresine sahip 60 Hz ekran kullanmanız dışında, her 5 ms'de yeni bir çerçeve oluşturarak 200 FPS'de oluşturulabilir.

Vsync açıkken, GPU'nuz 5 ms'de görüntülenecek bir sonraki kareyi tamamlayacak, daha sonra çerçeveyi monitörde görüntülenecek ikinci arabelleğe göndermeden ve bir sonraki kareye başlamadan önce 11,7 ms bekleyecektir. Bu nedenle, alacağınız en yüksek kare hızı Vsync açıkken, GPU aslında yenileme hızından daha hızlı oluşturulmayacak şekilde 'kilitlendi' için monitörünüzün yenileme hızıyla eşleşir.

Şimdi bu noktada çok fazla kafa karışıklığı var.

Sıklıkla “GPU'yu Vsync kullanarak monitörünüzün yenilenmesine kilitlemek harikadır, çünkü yenileme hızından daha hızlı çıkarsa, bu kareler boşa harcanır çünkü monitör bunları gösteremez ve elde ettiğim tek şey yırtılır”. Birçok insan Vsync'i kullanmaktan güç tasarrufuna işaret ediyor; GPU'nuzun çok fazla çalışmasına gerek yoktur, monitörün yenileme hızından daha yüksek kare hızlarında çalışmanın bir faydası yoktur, bu nedenle kilitli bir FPS'de çalıştırın ve biraz güç tasarrufu yapın.

İnsanların neden bu sonuca varacağını görebiliriz ve orada bazı doğruluk parçaları vardır, ancak genel olarak doğru değildir. Bunun nedeni, girdilerin işlendiği zamanı hesaba katmamanız ve bu girdilerin ekranda gerçekleşmesi için ne kadar sürdüğünüzdür.

Vsync giriş dahil

Durumun neden böyle olduğunu açıklamak için, şemadaki Vsync'e bakalım, ancak şemayı, genellikle her 1 ms'de toplanan farenizden ve klavyenizden gelen girişle kaplayın. Aynı örneği, 60 Hz ekranla 200 FPS'de görüntüleme yeteneğine sahip bir GPU'muzun olduğu yerde de kullanalım.

Vsync ve basit bir arabellek sistemi ile, bu basitleştirilmiş açıklamada GPU, 0 girişinde bu girişi alır almaz fare girişinize karşılık gelen bir çerçeve oluşturmaya başlar. Daha sonra çerçeveyi işlemek 5 ms sürer ve daha fazla bekler 11.7 ekran tamponuna göndermeden önce ms.

Ardından ekran, oluşturulacak kareyi almak ve ekranı bu bilgilerle satır satır fiziksel olarak güncellemek için biraz zaman alır.

Vsync giriş dahil

En iyi senaryoda bile, girişinizle ekranın bu girişin sonuçlarını size göstermeye başlayabileceği zaman arasında en az 16,7 ms'lik bir gecikmeye bakıyoruz.

Ekran giriş gecikmesinde, CPU işlem süresinde vb. Çarpanlara ayırırken, giriş ve ekran yenileme arasındaki gecikme 50ms'den fazla olabilir.

Vsync kapalı giriş dahil, 60Hz ekran, 200 FPS

Şimdi Vsync kapalı diyagramına bakalım. GPU, ekranın ne zaman yenileneceğine bakılmaksızın sürekli olarak görüntü verir ve girişinizi eksiksiz bir çerçeveye dönüştürmek için 5 ms sürer. Ekran daha sonra bu karenin yalnızca bir parçası olsa da hemen yeni kareyi görüntülemeye başlayabilir. Sonuç, oyuna girişiniz arasındaki gecikmedir ve ekran bu girişin sonuçlarını göstermeye başladığında, 16.7ms'den sadece 5ms'ye düşer. Ve gerçek dünya uygulamalarında ek tamponlar olmayacak; bu kadar hızlı, ayrıca monitörünüzün giriş gecikmesi.

Ve işte avantaj elde edeceğiniz yer burası. Bu örnekte, 60 Hz monitörde Vsync kapalıyken 200 FPS'de çalıştırmak, giriş gecikmesini 5ms'ye düşürürken, Vsync açıkken bu gecikme daha fazla değilse en az 16.7ms'dir.

Ekran saniyede 200 karenin tamamını tam olarak gösteremese de, ekranın her 1/60 gösterdiğith Saniyeye çok daha yakın olan bir girdiden bir saniye üretilir.

Bu fenomen, elbette, yüksek yenileme monitörleri için de geçerlidir. Örneğin 144 Hz'de saniyede daha fazla kare görebileceksiniz, böylece genel olarak daha pürüzsüz ve daha duyarlı bir deneyim elde edeceksiniz. Ancak, Vsync açıkken 144 FPS yerine Vsync kapalı olarak 200 FPS'de çalıştırmak, size 5ms ve 7ms yukarı giriş gecikmesi arasında bir fark verecektir.

Milisaniye farklılıklardan bahsederken, muhtemelen oyunlarda bu farkı fark edip edemeyeceğinizi merak ediyorsunuz.

Oynadığınız oyunun türüne bağlı olarak, fark çok fark edilebilirden hiçbir fark yaratmayabilir. CS: GO gibi hızlı tempolu bir oyun, 60 Hz monitörde 400 FPS'de çalışıyor ve giriş gecikmesi en iyi 2.5ms civarında, aynı hareketleri 16.7ms ile 60 FPS'de çalıştırdığınızdan çok daha duyarlı hissedeceksiniz. gecikme (veya daha fazla).

Her iki durumda da ekran yalnızca saniyede 60 kez yeni bir çerçeve gösteriyor, bu nedenle 144 Hz veya 240 Hz ekranda olduğu gibi pürüzsüz hissetmeyecek. Ancak girdi gecikmesindeki fark çok büyük; 400 FPS'de çalıştırmak, girişlerinizi daha fazla olmasa bile yaklaşık 7 kat daha hızlı bir şekilde ekrana almanızı sağlar. Kendiniz deneyin ve yanıt verme hızındaki farkı hissetmek zorundasınız.

Ve biz bu açıklamayı hiçbir yerden çıkarmadık, aslında Nvidia Vsync'in giriş gecikmesi açısından sınırlarını biliyor, bu yüzden Hızlı Senkronizasyon (AMD'nin alternatifi denir Geliştirilmiş Senkronizasyon). Bu ekran senkronizasyon tekniği, her iki dünyanın en iyisini üreten Vsync açık ve Vsync kapalı kombinasyonlarına benzer.

Hızlı Senkronizasyon, son işlenen tampon olarak adlandırılan boru hattındaki Vsync'e ek bir tampon ekleyerek çalışır. Bu, GPU'nun arka tamponda yeni çerçeveler oluşturmaya devam etmesini ve tamamlandığında son oluşturulan arabelleğe geçmesini sağlar. Daha sonra bir ekran yenilemesinde, son oluşturulan arabellek ekranın eriştiği ön arabelleğe itilir.

Hızlı Senkronizasyon / Gelişmiş Senkronizasyon

Bunun yarattığı avantaj, GPU'nun, Vsync açık durumdaki gibi ekran yenilemesinin gerçekleşmesi için bir çerçeve tamamlandıktan sonra artık beklememesi. Bunun yerine, GPU kareleri oluşturmaya devam eder, böylece ekran yenileme döneminin başlangıcında bir kareye eriştiğinde, bu kare yenileme penceresine daha yakın bir şekilde oluşturulur. Bu giriş gecikmesini azaltır. Bununla birlikte, Vsync kapalı durumundan farklı olarak Fast Sync, çerçeveyi hemen ekrana itmek yerine her yenilemenin başında ekrana tamamlanmış bir çerçeve sunar ve yırtılmayı ortadan kaldıran bu tekniktir.

Hızlı Senkronizasyon yalnızca kare hızı ekranın yenileme hızından yüksek olduğunda işlevseldir, ancak yırtılmadan daha duyarlı bir oyun deneyimi sağlamayı başarır. Ve elbette AMD'nin Enhanced Sync adlı bir eşdeğeri var.

Umarım bu açıklayıcı, monitörünüzün maksimum yenileme hızının üzerinde bir oyun çalıştırmanın neden daha duyarlı bir oyun deneyimi sağladığına ve oyunları daha yüksek kare hızlarında çalıştırma yeteneğinin neden görünse bile her zaman bir avantaj olduğuna dair bazı sorularınızı temizleyecektir. monitörünüz bundan yararlanamaz.

Son bir not: aşağıdaki gibi uyarlanabilir senkronizasyon teknolojilerini tartışmadık G-Sync ve FreeSync burada ve bunun nedeni çoğunlukla uyarlamalı senkronizasyonun geçerli olmadığı maksimum yenilemenin üzerinde oyunlar yayınlamaktan bahsediyor olmamız. Orada birçok farklı senkronizasyon yöntemi var, ancak uyarlanabilir senkronizasyon, bahsettiğimiz Vsync ve Hızlı Senkronizasyondan çok farklı ve en azından bu tartışma için gerçekten önemli değil.

Daha fazla okuma
Alışveriş Kısayolları

Masthead kredisi: Fotoğraf: Jakob Owens