Babylon.js · XR
Performance constraints: XR kare bütçesi daha sıkıdır
Başlıkta «kısıt» derken yalnızca düşük donanımı kastetmiyoruz: XR'de kare süresi aşıldığında kullanıcı bunu hissettirir — baş dönmesi, görüntü kırpılması, takip gecikmesi. Bu sayfa masaüstü sahneyi taşımanın ötesinde çift görüntü, sabit kare süresi ve locomotion maliyetinin aynı bütçede toplanmasını sabitler.
Holodepth Three.js tarafında benzer uyarılar çoğu zaman renderer.info, düşük çözünürlük ve gölgelerin kapatılmasıyla anlatılır; burada Babylon.js bağlamında aynı fiziksel gerçeklik ( piksel × göz × süre) üzerinden düşünmeyi sürdürürüz — rakamlar projeden projeye değişir, bütçe mimarisi değişmez.
Özet: dört ölçüm
| Ölçüm | Ne sorar? | Belirti |
|---|---|---|
| Kare süresi | Hedef FPS altında mıyız? | Titreşim, bulanık hareket telafisi. |
| Dolgu | Piksel başına maliyet? | Isınma, düşük pil ( standalone). |
| Çağrı sayısı | Çok mu çizim gönderiyoruz? | CPU tavanı, düşük çözünürlükte bile takılma. |
| Yan işler | Fizik ve GUI ne kadar? | Görüntü akıcı, etkileşim gecikmeli. |
Çift görüntü ve çözünürlük ölçeği
Başlıklı ( head-mounted) VR'de aynı kare genelde iki kez projeksiyona girer: sol ve sağ göz için ayrı hedef tamponlar, çoğu zaman ortak sahne grafiğine rağmen neredeyse ikiye yakın piksel işi üretir. Çözünürlük ölçeği ( render resolution scale) ile iç hedefi düşürmek kare süresini kısaltır; fakat masaüstünde akıcı görünen sahne, aynı kartta «bir göz bile rahat» seviyesinde kalmayabilir — özellikle hedef kare hızı 72/90/120 Hz gibi sabit bir tavana kilitlendiğinde. Bu bölüm dolgu oranı veya malzeme geçişi (bölüm 2–3) hesabını açmaz; yalnızca çift görüntü çarpanını zihinsel bütçeye eklemenizi ister. Pil ile çalışan veya mobil sınıftaki gözlüklerde ısınma ve güç tüketimi için ölçeğin üst sınırını gerçek cihazda, uzun oturumla erken test edin.
Dolgu oranı ve son işleme
Piksel başına maliyet, üçgen sayısından bağımsız olarak dolgu oranı ( fill rate) ile yükselir: üst üste binen şeffaf yüzeyler, yüksek çözünürlüklü gölgeler ve tam ekran son işleme ( post-process) zinciri aynı pikseli birkaç kez gezdirebilir; bu yüzden örgü sayısını düşürmek tek başına yetmeyebilir. XR'de kullanıcı nesnelere göreceğinden daha yakın olduğu için doku çözünürlüğü, normal haritalama ve ışık modeli seçimleri masaüstüne göre daha sert cezalandırılır ( Material pipeline). Optimizasyonu «hepsini bir anda kapatmak» yerine katman katman (şeffaflık → gölge → post) kapatıp her adımda kare süresini ölçün; bölüm 1’deki çift göz çarpanı ile birlikte okuyun — bu bölüm çağrı sayısı veya örgü birleştirmeyi (bölüm 3) anlatmaz.
GUI dokusu
Tam ekran arayüz, her kare tam boy bir dokuya yazılıyorsa ( UI texture logic) sahne maliyetine ek bir doku güncelleme ve yeniden örnekleme yükü ekler; düşük güç veya zayıf mobil GPU profillerinde dinamik metni seyrekleştirmek, güncellemeyi düşük hıza almak veya statik parçaları önbelleğe ayırmak tipik kazanımlardır. Bu kutu yalnızca arayüz dokusunu işaret eder; sahne geometrisi birleştirme bölüm 3’te ele alınır.
Çizim çağrısı ve örgü birleştirme
Modern GPU'lar yalnızca üçgen sayısıyla değil, çizim çağrısı ( draw call) ve durum değişimi (materyal, örnekleyici, hedef tampon) ile sınırlanır. Binlerce küçük parça, birleştirilmiş bir örgü ve paylaşılan materyal setine göre daha pahalıdır; XR'de sabit kare bütçesi bu farkı daha acımasız gösterir. Uzaktaki nesneler için LOD ( level of detail) veya düşük poligon varyantları tek başına yetmez: kamera arkasında kalan veya oda içi mobilya ile örtülen hacimler için görünmezlik ( occlusion) veya agresif mesafe kümesi aynı planın parçası olmalıdır. Bu bölüm piksel doldurma maliyetini (bölüm 2) veya fizik süresini (bölüm 4) hesaba katmaz; yalnızca geometri sunumunu ve çağrı sayısını hedefler.
- Birleştir: statik blokları tek örgüye yaklaştırın; mümkünse aynı materyal ve aynı vertex formatını paylaşın; instancing yalnızca gerçekten tekrar eden örüntülerde kullanın.
- Ölç: masaüstü «yüksek» ve gözlük «düşük güç» için ayrı ön ayarlar tutun; çağrı sayısı ve sahne düğüm sayısını aynı telemetri kanalına yazın ki kalite düşürücü kurallar (bölüm 5) yanlış hedefe vurmasın.
Fizik ve işleme döngüsü paylaşımı
Kare süresi yalnızca gölgelendirici ve tarama ile dolmaz; fizik adımı ( motor entegrasyonu), animasyon ve oyun mantığı aynı zaman diliminde yarışır. Ağır çözümleyici iterasyonları veya çok sayıda aktif gövde, düşürülmüş çözünürlükte bile kareden pay çalmaya devam eder — yani XR'de yalnızca işleme kalitesini kısmak fizik yükünü ortadan kaldırmaz. Fizik ile sahne güncellemesini ayrı ayrı ölçün; kabuk sayısı ve uyumsuz transformları Debug visualization ile gözden geçirin. Bu bölüm çağrı birleştirme (bölüm 3) veya piksel dolgu (bölüm 2) ile karıştırılmamalıdır; yalnızca simülasyon bütçesinin ayrı bir tavanı olduğunu sabitler.
Dinamik kalite ve düşen kare telafisi
Hedef kareye yetişilemediğinde çoğu başlık ve çalışma zamanı, baş pozu tahmin ederek görüntüyü yeniden projeksiyona sokar ( reprojection / «zaman sentezi»); bu, hareket halinde ince titreme veya bulanıklık olarak geri dönebilir. Otomatik kalite düşürücüler (iç çözünürlük, gölge çözünürlüğü, parçacık yoğunluğu) için eşik ve histerezis içeren basit kurallar tanımlayın; aksi halde sınırda sürekli gidip gelen profiller oluşur. Kullanıcıya «neden bulanık» sorusunu azaltmak için el ile seçilebilir ön ayarlar sık kullanılır. Bu stratejileri planlarken Render loop zaman bütçesiyle hizalayın; buradaki mesele bölüm 1’deki taban çözünürlük çarpanından ziyade zaman içinde kaliteyi ayarlamaktır — dolgu veya çağrı optimizasyonunun yerine geçmez.
Three.js ile üst üste okuma
Çakışmayı önleyen çerçeve
Three.js örneklerinde performans çoğu zaman çizim çağrısı, geometri sayaçları ve bellek üzerinden okunur; Babylon.js projelerinde de benzer paneller ve sahne ayarları bulunur — ölçü birimi (milisaniye, çağrı, piksel, fizik adım süresi) kütüphane bağımsız kalır. Fark, aynı sahneyi hangi ekranın iki göz ve sabit tavan için çarptığı gerçeğidir; masaüstü optimizasyon listesini körü körüne taşımak, çift görüntü (bölüm 1), dolgu (bölüm 2), çağrı (bölüm 3), fizik (bölüm 4) ve dinamik kalite (bölüm 5) sırasını yeniden tartmadan «bir checkbox daha» eklemek gibi olur. Three’den geçerken bu sayfayı kontrol listesi olarak kullanın; her maddeyi ayrı profilleyin.
Sıradaki: yer değiştirme
Kare bütçesi netleştikten sonra kullanıcıyı sahne içinde konumlandırmak için Teleportation sayfasına geçebilirsiniz. Önceki adım: Controller input.