“NVIDIA DesignWorks ile Gerçek Zamanlı GPU Destekli Gaussian Splatting: vk_gaussian_splatting Örneği”

Gaussian splatting, karmaşık 3D sahneleri üç boyutlu uzayda anizotropik Gauss fonksiyonları koleksiyonu olarak temsil eden yenilikçi bir render alma yöntemidir. Bu teknik, küçük görüntü setlerinden öğrenilmiş fotorealistik sahnelerin gerçek zamanlı olarak render edilmesini sağlar ve oyun, sanal gerçeklik ile gerçek zamanlı profesyonel görselleştirme gibi uygulamalar için idealdir.

Yeni Vulkan Tabanlı Örnek: vk_gaussian_splatting

vk_gaussian_splatting, gerçek zamanlı Gaussian splattingı gösteren yeni bir Vulkan tabanlı örnektir. Bu, yüksek verimli ışınım alanlarının temsilini sağlayan son teknoloji bir hacim render alma tekniğidir. Bu örnek, NVIDIA DesignWorks Örnekleri koleksiyonunun en yeni üyesidir.

Geliştirici Ekibin Vizyonu

NVIDIA DevTech ekibi, bu yeni örnek projeyi 3D Gaussian splatting’ın (3DGS) gerçek zamanlı görselleştirmesi için çeşitli yaklaşımları keşfetmeye ve karşılaştırmaya yönelik bir deney alanı olarak düşünmektedir. Farklı teknikleri ve optimizasyonları değerlendirerek, ekip Vulkan API’sini kullanırken performans, kalite ve implementasyon trade-off’ları hakkında değerli bilgiler sağlamayı hedefliyor.

İlk uygulama, rasterizasyon temellidir ve iki farklı render alma yaklaşımını göstermektedir. Bunlardan biri mesh shader kullanırken diğerinin temelinde vertex shader bulunmaktadır.

A diagram comparing Synchronous GPU sorting and Asynchronous CPU sorting in Gaussian Splatting Rasterization. The left side shows the GPU timeline for synchronous sorting, where 'Dist & Cull' and 'Radix Sort' steps are performed before 'Mesh' and 'Fragment' processing for each frame. The right side illustrates asynchronous CPU sorting, where a separate sorting thread computes 'Dist & Sort' without culling, swaps indices, and then copies them to VRAM before the GPU processes 'Mesh' and 'Fragment' stages.
Şekil 1. Mesh shader pipeline’ında sıralama yöntemlerinin karşılaştırması

Sıralama Yöntemleri

Gaussian splatlar, doğru alfa kompozisyonu için önden arkaya sıralama gerektirdiğinden, iki alternatif sıralama yöntemi sunulmuştur:

  • GPU tabanlı Radix Sıralama kullanarak gerçekleştirilen bir hesaplama hattı
  • CPU tabanlı asenkron sıralama stratejisi, çok iş parçacıklı sıralama fonksiyonunu kullanır
Şekil 2. vk_gaussian_splatting kullanıcı arayüzü, bellek kullanımı ve performans sürelerini gösteren birkaç profil geribildirim elementi ile sunulmaktadır.

Deneyimleme Fırsatları

Bu örnek, bu render alma tekniğinin birçok yönünü keşfetmek ve denemek için kullanıcıya olanak tanır:

  • Anizotropik gauss splatlarının farklı yönlerinin incelenmesi için çeşitli görselleştirme modları
  • Gerçek zamanlı profil oluşturma için kapsamlı bir benchmarking sistemi
  • RAM ve VRAM bellek tüketimi hakkında daha fazla ayrıntı, render için veri akışını anlama
  • Farklı tekniklerin her aşaması için GPU süreleri, iş yükü ve potansiyel darboğazları anlamaya yönelik
  • Bu rakamlarla oluşturulan grafik raporları
Şekil 3. Farklı veri depolama formatlarıyla render performansını karşılaştıran örnek rapor

Bu örnek, geliştiricilerin Gaussian splatting render alma teknikleri ile Vulkan tabanlı optimizasyonları denemelerine başlangıç noktası sağlamaktadır.

Gerçek zamanlı ışınım alanlarının render edilmesini keşfetmek için nvpro-samples/vk_gaussian_splatting GitHub reposunu kontrol edebilirsiniz.

Kaynak

Nvdia Blog

Exit mobile version