SON DAKİKA

Nvdia

“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
A screenshot of the vk_gaussian_splatting sample application displaying a rendered 3D gaussian splatting model of a bicycle near a park bench with trees and a path in the background. The user interface includes various settings and statistics panels. On the right, options for data storage, rendering, and sorting methods are visible, with settings for V-Sync, frustum culling, splat scale, and mesh shaders. At the bottom, memory statistics and a profiler panel show GPU and CPU usage, including frame time, sorting, and rendering performance. The application runs at 510 FPS with 1.961 ms frame time.
Ş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ı
A bar chart titled 'Pipeline Performance Comparison - SH storage formats in float 32, float 16 and uint 8' showing performance benchmarks from a Vulkan Gaussian Splatting sample. The chart compares processing times in microseconds across different test scenes, with stacked bars representing three pipeline stages: GPU Distribution (black), GPU Sort (dark green), and Rendering (light green). Various scenes are listed along the x-axis including bicycle, bonnet, counter, dining room, flowers, garden, kitchen, playroom, room, stump, train, treehill, and truck - each with their splat count and format details in parentheses. Most scenes show total processing times between 500-1500 microseconds, with rendering typically being the most time-consuming stage. The garden scene shows the highest total processing time at nearly 3000 microseconds. The chart demonstrates that smaller spherical harmonics (SH) storage formats (uint8 vs float16 vs float32) consistently result in faster rendering performance across all test scenes.
Ş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

Düşüncenizi Paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgili Teknoloji Haberleri