OpenXR uygulaması en iyi yöntemleri

TemelXrApp'in OpenXRProgram.cppdosyasında aşağıdaki en iyi yöntemlerin bir örneğini görebilirsiniz. Başlangıçtaki Run() işlevi, başlatmadan olay ve işleme döngüsüne kadar tipik bir OpenXR uygulama kodu akışını yakalar.

Görsel kalite ve kararlılık için en iyi yöntemler

Bu bölümdeki en iyi yöntemler, herhangi bir OpenXR uygulamasında en iyi görsel kalitesini ve kararlılığı nasıl elde etmek olduğunu açıklar.

HoloLens 2'ye özgü diğer performans önerileri için aşağıdaki 2. bölümde yer alan HoloLens en iyi performans yöntemleri bölümüne bakın.

Zaman-doğru işleme

İşleme işlem hattınızı doğru olduğundan emin olmak için özenli olunması gerekir. Değiştirmechain ile işleme sırasında işleme hedefi görünüm biçimi, takaslık biçimiyle eşleşmeli. Örneğin, DXGI_FORMAT_B8G8R8A8_UNORM_SRGB hem takaslık biçimi hem de işleme hedefi görünümü için. Uygulamanın işleme işlem hattı gölgelendirici kodunda el ile sRGB dönüştürmesi yapıyorsa bir özel durum vardır. Uygulama bir sRGB takaslık biçimi talep ediyor ancak işleme hedefi görünümü için doğrusal biçimi kullanabiliyor. Örneğin, değiştirmechain biçimi olarak istekte bulundurabilirsiniz ancak içeriğin çift olarak düzeltilmesini önlemek için işleme DXGI_FORMAT_B8G8R8A8_UNORM_SRGBDXGI_FORMAT_B8G8R8A8_UNORM hedefi görünümü olarak kullanın.

Projeksiyon katmanları için derinlik arabelleği gönderme

uzantısını XR_KHR_composition_layer_depth kullanın ve derinlik arabelleği ile birlikte projeksiyon katmanına çerçeve göndererek xrEndFrame gönderin. HoloLens 2'de donanım derinliği yenidenprojection'ın etkinleştirilmesi hologram kararlılığını artırır.

Makul bir derinlik aralığı seçin

Sanal içeriklerde hologram kararlılığına yardımcı olmak için daha dar bir derinlik aralığı HoloLens. Örneğin OpenXrProgram.cpp örneği 0,1 metreden 20 metreye kadar kullanıyor. Daha tekdüz derinlik çözünürlüğü için reversed-Z kullanın. 2 HoloLens de tercih edilen derinlik biçiminin kullanımı daha iyi kare hızı ve performans elde etmeye yardımcı olur, ancak 16 bit derinlik arabellekleri 24 bit derinlik arabelleklerine göre daha az derinlik DXGI_FORMAT_D16_UNORM çözünürlüğü sağlar. Derinlik çözünürlüğünü en iyi şekilde kullanmak için bu en iyi yöntemlerin takip etmek daha önemli hale gelir.

Farklı ortam karışımı modları için hazırlanma

Ayrıca, uygulamanız dünyayı tamamen kapatan çevreleyici mikrofonlu başlığın üzerinde de çalıştıracaksa, API kullanarak desteklenen ortam karışımı modlarını numaralandırarak ve işleme içeriğinizi doğru şekilde xrEnumerateEnvironmentBlendModes hazırlarsınız. Örneğin, HoloLens gibi bir sistem için, uygulama açık renk olarak saydam kullansa da, ile bir sistem için uygulamanın arka planda biraz opak renk veya bazı sanal oda işlemesi XR_ENVIRONMENT_BLEND_MODE_ADDITIVEXR_ENVIRONMENT_BLEND_MODE_OPAQUE gerekir.

Uygulamanın kök alanı olarak sınırsız başvuru alanı seçin

Uygulamalar genellikle görünümleri, eylemleri ve hologramları birbirine bağlamak için bazı kök dünya koordinat alanı sağlar. Uzantının dünya ölçeğinde bir koordinat sistemi kurması desteklense de, kullanıcı uygulamanın başladığı yerden (örneğin 5 metre uzakta) hareket ettiğinde, uygulamanın istenemeyen hologram kaymalarından kaçınmasına olanak sağlamak için XR_REFERENCE_SPACE_TYPE_UNBOUNDED_MSFT kullanın. XR_REFERENCE_SPACE_TYPE_UNBOUNDED_MSFT Sınırsız alan uzantısı yoksa geri XR_REFERENCE_SPACE_TYPE_LOCAL dönüş olarak kullanın.

Hologramı uzamsal sabit noktasıyla ilişkilendirme

Sınırsız başvuru alanı kullanırken, kullanıcı uzak odalara gelip geri geldiğinde doğrudan bu başvuru alanı içine yer alan hologramlar kaymaya neden olabilir. Hologram kullanıcıları dünyanın farklı bir yerine yer alıyorsa uzantı işlevini kullanarak bir uzamsal sabit noktası oluşturun ve hologramı kaynağına konumlandırabilirsiniz. Bu, hologramı zaman içinde bağımsız olarak sabit tutacak.

Karma gerçeklik yakalamayı destekleme

HoloLens 2'nin birincil görüntüsü ek ortam karıştırması kullanıyor olsa da, kullanıcı karma gerçeklik yakalaması başladığında uygulamanınişleme içeriği ortam video akışıyla alfasayısal olarak karıştırılır. Karma gerçeklik yakalama videolarında en iyi görsel kalitesini elde etmek için projeksiyon katmanının içinde XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT ayarlamak en layerFlags iyisidir.

HoloLens 2'de performans için en iyi yöntemler

Donanım yeniden proje desteğine sahip bir mobil cihaz olarak, HoloLens 2'nin en iyi performans için daha katı gereksinimleri vardır. Aracılığıyla oluşturma verilerini göndermenin çeşitli yolları vardır ve bu da işleme sonrası önemli bir performans cezası ile sonuçlanabilir.

Değiştirmechain biçimi seçme

her zaman kullanarak desteklenen piksel biçimlerini numaralara ekleyip uygulamanın desteklediği çalışma zamanından ilk renk ve derinlik piksel biçimini seçin çünkü çalışma zamanı en iyi performans için bunu xrEnumerateSwapchainFormats tercih eder. 2. HoloLens ve genellikle DXGI_FORMAT_B8G8R8A8_UNORM_SRGBDXGI_FORMAT_D16_UNORM daha iyi işleme performansı elde etmek için ilk seçenek olduğunu unutmayın. Bu tercih, 24 bit derinlik arabelleklerinin performans üzerindeki etkisinin daha az olduğu bir Masaüstü bilgisayar üzerinde çalışan VR başlığında farklı olabilir.

Performans Uyarısı: Birincil takaslık renk biçimi dışında bir biçim kullanmak çalışma zamanı sonrası işlemeye neden olur ve bu da önemli bir performans cezası olarak gelir.

Her zaman önerilen görünüm yapılandırma genişliği/yüksekliği ( ve buradan) ile işnin ve işlemeden önce önerilen görünüm pozunu, FOV'yi ve diğer işleme parametrelerini sorgulamak için recommendedImageRectWidthrecommendedImageRectHeight her zaman XrViewConfigurationViewxrLocateViews API'yi kullanın. Pozları XrFrameEndInfo.predictedDisplayTime ve görünümleri xrWaitFrame sorgularken her zaman en son çağrıdan kullanın. Bu sayede HoloLens ayarlarını ayarlayabilir ve görsel kalitesini en iyi duruma getirmek için HoloLens.

Tek bir projeksiyon katmanı kullanma

HoloLens 2'nin içeriği işlemeye sınırlı GPU gücü ve tek bir projeksiyon katmanı için iyileştirilmiş bir donanım compositor'a sahip olması. Her zaman tek bir projeksiyon katmanı kullanmak uygulamanın kare hızına, hologram kararlılığına ve görsel kalitesine yardımcı olabilir.

Performans Uyarısı: Tek bir koruma katmanı dışında herhangi bir şey göndererek, işleme sonrası çalışma zamanı ortaya çıkar ve bu da önemli bir performans cezası oluşturur.

Doku dizisi ve VPRT ile işleme

Renk değiştirme için kullanarak hem sol hem de sağ göz için bir xrSwapchainarraySize=2 tane, derinlik için bir tane oluşturun. Sol gözü 0 dilimine, sağ göz ise 1 dilimine işler. GPU yükünü en aza indirmek için VPRT ile gölgelendirici ve stereotipik işleme için örnekli çizim çağrıları kullanın. Bu, çalışma zamanının en iyi duruma getirmesini ve 2.0'da en iyi HoloLens sağlar. Çift geniş işleme veya göz başına ayrı bir takaslık gibi doku dizisi kullanmanın alternatifleri, çalışma zamanı sonrası işlemeye neden olur ve bu da önemli bir performans cezası sağlar.

Dörtlü katmanlarından kaçının

ile dörtlü katmanları ile bileşim katmanları olarak XrCompositionLayerQuad göndermeden, dörtlü içeriği doğrudan projeksiyon takası içine işler.

Performans Uyarısı: Tek bir projeksiyon katmanının ötesinde dörtlü katmanlar gibi ek katmanlar sağlamak, çalışma zamanı işleme sonrası işlemeye neden olur ve bu da önemli bir performans cezası sağlar.