Motor nasıl çalışır
OLED Guard Pro bir ekran koruyucu değildir. Bilgisayarını kullanırken her frame'i, bağlı her ekranda işleyen, GPU üzerinde çalışan gerçek zamanlı bir video boru hattıdır. Bu sayfa teknik turdur.
Dört aşamalı boru hattı
1. Yakalama: Windows Graphics Capture / Desktop Duplication
Windows, DWM'in belirli bir ekran için oluşturduğu görüntüye GPU doku tutamacı veren iki API sunar: Windows Graphics Capture (WGC) ve DXGI Desktop Duplication. OLED Guard ikisini de destekler. Yakalama yöntemi ayarı Auto, WGC veya Desktop Duplication arasından seçim yapar; Auto, Windows 11'de WGC'yi seçer, diğer sistemlerde klasik yol olarak Desktop Duplication kullanılır. Mümkün olan yerde WGC tercih edilir, çünkü Desktop Duplication'ın karesiz kalabildiği tam ekran oyunların içinde bile frame'leri tam hızda teslim etmeye devam eder. Her iki durumda da güvendiğimiz özellikler geçerlidir:
- Yakalama GPU üzerinde çalışır. Frame buffer asla video belleğinden ayrılmaz.
- Her iki API de kenarlıksız tam ekran oyunların içinde (çoğu oyuncunun gerçekte oynadığı mod) çalışır. BitBlt veya PrintWindow gibi eski yaklaşımlar çalışmaz.
- HDR, çoklu monitör ve yüksek yenileme hızlı ekranlar, bizim özel bir şey yapmamıza gerek kalmadan desteklenir.
Grafik sürücüsü oturum ortasında sıfırlanırsa veya yakalama ölürse motor bunu fark eder ve sessizce durmak yerine boru hattını temiz bir şekilde yeniden başlatır.
2. Model: piksel başına maruziyet shader'ı
Bir piksel shader'ı, yakalanan her frame'i yerel çözünürlükte işler. Her piksel için şunu hesaplar:
luminance = dot(pixelRGB, vec3(0.2126, 0.7152, 0.0722));
delta = luminance * frameTime;
exposure[p] = exposure[p] + delta;
İki paralel geçiş de çalışır:
- Hareket zarfı. Ucuz bir zamansal yüksek geçiş: bu piksel son N frame'de ne kadar değişti? Hareketi yüksek olan piksellerin maruziyeti daha hızlı azalır, çünkü hareketli içerik yaşlanmayı tek bir noktada yoğunlaştırmaz.
- Kararlılık dedektörü. Hareket zarfı üzerinde bir alçak geçiş: değeri birçok frame boyunca kararlı kalan piksellerin “statik” olduğu işaretlenir ve bunlar koruma için aday olur.
Maruziyet histogramı GPU belleğinde çift tamponlanır. Sıcak yolda CPU'ya geri okuma yoktur.
3. Sunum: riski sürekli bir alana dönüştür
Maruziyet modeli, panel aşınmasının nerede biriktiğini söyler. Sunum aşaması ise bu riskin ekranda gerçekte nasıl belireceğine karar verir. v5'te bu, ayrı ayrı kaplama geçişlerinden oluşan bir yığın yerine tek bir sürekli alandır. İki düşük çözünürlüklü zamansal alandan oluşturulur:
- Doluluk, "korunabilir içerik kalıcı olarak burada mı?" sorusunu yanıtlar, böylece kısa bir parlak parlama karartmayı tetiklemez.
- Yoğunluk, "risk modeli burada ne kadar koruma istiyor?" sorusunu yanıtlar.
Görünür karartma, bu iki alanın çarpımıdır ve açıkça sıralanmış değiştiricilerle şekillendirilir: gerçek yüksek riskli tepe noktaları için anlık bir güvenlik çekirdeği, Game IQ öğrenilmiş HUD tabanı, statik bir tolerans süresi, dışlama dikdörtgenleri, isteğe bağlı vinyet kenar ağırlıklandırması ve mavi gürültü desen şekillendirmesi. Sunum, geçmişten ayrı tutulduğu için hareketli içerik, panelin gerçekte biriktirdiği maruziyeti silmeden bayat karartmayı serbest bırakabilir.
Manuel modda gücü ve şekillendirmeyi Katman sayfasından ayarlarsın. Otomatik Mod'da controller, canlı sinyal sınıflandırmasına (iş, oyun, video, boşta), piksel başına hareket zarfına ve dinamizm izine bakar ve modelin, bir algılanabilirlik bütçesine bağlı kalarak riski en aza indirdiğini söylediği bir yapılandırma seçer. Bunun gerçekleştiğini Advanced > Live Classifier göstergesinde izleyebilirsin.
4. Composite: DWM ön çarpımlı alfa
İkinci bir shader, seçilen katmanı şeffaf ve her zaman en üstte duran bir pencereye işler. Desktop Window Manager o pencereyi masaüstüne ön çarpımlı alfa kullanarak birleştirir: Windows'un kendi animasyonları için kullandığı yolun aynısı. Katmanın şu durumlarda doğru çalışmasının nedeni budur:
- SDR ve HDR modlarında,
- kenarlıksız tam ekran oyunlarda,
- değişken yenileme hızlı ekranlarda (G-Sync / FreeSync),
- çoklu monitör kurulumlarında,
- karışık DPI yapılandırmalarında.
Asıl harmanlamayı DWM yapar. Biz sadece bir frame sağlıyoruz.
Ekran başına, paralel olarak
Bağlı her ekran, boru hattının kendi kopyasını çalıştırır. Durum paylaşmazlar. Bir monitör değişikliği, bir hot-plug, bir çözünürlük değişikliği: motor bunu fark eder, etkilenen boru hattını bırakır ve diğerlerini rahatsız etmeden yeniden kurar.
CPU'da ne çalışır
CPU şunları yapar:
- başlangıçta shader derlemesi,
- ön ayarlar, yapılandırma ve React arayüzü,
- app-profile'ler için ön plan penceresi izleme,
- uygulama üzerinden parlaklığı değiştirdiğinde DDC/CI komutları.
CPU ekran içeriğini görmez. Frame'ler her zaman GPU belleğinde kalır.
Performans bütçesi
Orta seviye bir GPU'da 1440p / 144 Hz için temsili bir ölçüm:
| Aşama | Frame başına maliyet |
|---|---|
| Yakalama | ~ 0,4 ms |
| Model | ~ 0,3 ms |
| Composite | ~ 0,5 ms |
| Toplam | ~ 1,2 ms |
Bu, 16,6 ms / 60 Hz bütçesinin %7'sidir, ancak oyununun render yolunu bloke etmek yerine GPU tarafında çalışır, bu nedenle benchmark'larda gerçek zamana yansıyan etki tipik olarak %1'in altındadır. Daha yüksek çözünürlükler, daha yüksek yenileme hızları ve daha zayıf GPU'lar maliyeti ölçeklendirir; göreli şekil aynı kalır.
Bilerek dışarıda bırakılanlar
Birden fazla kez yeniden doğruladığımız birkaç tasarım kararı:
- Hücre tabanlı risk modeli yok. 32 × 32 karoları üzerinden akıl yürüten bir koruma katmanı prototiplenip terk edildi. Piksel başına modelleme fizik konusunda daha dürüsttür; sert karolar içerik sınırlarında merdiven artefaktları üretiyordu. v5 sunum alanı bilinçli olarak düşük çözünürlüklüdür, ancak sürekli olarak pürüzsüzleştirilir ve çapraz geçiş yapılır, böylece o sert karoların yaptığı gibi asla merdivenlenmez ve altta yatan risk modeli piksel başına kalır.
- CPU tarafında burn-in sezgileri yok. Motor “bu bir Discord kenar çubuğu” veya “bu bir YouTube logosu” diye tanımaya çalışmaz. Tanıma kırılgandır ve kötü yaşlanır. Maruziyet evrensel fiziksel niceliktir.
- Telemetri boru hattı yok. Piksel başına histogramlar asla makineni terk etmez. Tasarım gereği, bunları alan sunucularımız yoktur.
Motoru hareket halinde görmek istersen, masaüstü uygulamasındaki Gelişmiş motor sayfası canlı sınıflandırıcıyı, ayar başına otomatik denetleyici izlerini ve canlı sinyal şeridini 60 Hz'de gösterir.