Gerçek zamanlı ray izleme, inanılmaz derecede gerçekçi görüntüler oluşturabilen güçlü bir render tekniğidir. NVIDIA OptiX ve RTX teknolojisi, bu mümkün kılarken, detaylı animasyonlu sahnelerde gerçek zamanlı ray izleme performansını korumak zorlayıcı olabilir.
Dinamik Sahne Zorluğu
NVIDIA OptiX, RTX donanımıyla, bir piksel başına bir örnekleme ile büyük sahneleri gerçek zamanlı olarak ray izleyebilir; bu, geometrinin değişmediği durumlarda geçerlidir. Bu durum, mikro üçgenlere yaklaşan yoğunlukta son derece karmaşık geometriler için bile mümkündür.
Ancak, bu yoğunlukta ve değişen sahneler yeni zorluklar getirir. Geometri hızlandırma yapıları (acceleration structures) – RTX donanımının, üçgenleri ışınlarla eşleştirmek için kullandığı arama ağaçları – güncel tutulmalıdır ve bu, genellikle izleme işleminden daha uzun sürebilir.

Bazen bir kısayol alabilirsiniz: Eğer üçgenlerin sayısı ve bağlantıları değişmeden, yalnızca köşe noktaları değişiyorsa, OptiX, hızlandırma yapıları için bir refit işlemi sunar. Rerfit işlemi mevcut arama ağacının çoğunu tekrar kullanarak, tam bir yeniden inşa sürecine göre çok daha hızlıdır. Ancak sınırlamaları vardır: Eğer köşe noktaları çok fazla hareket ederse, bir ışını hızlandırma yapısıyla izleme süresi uzar. Ayrıca, üçgenlerin eklenememesi, çıkarılamaması veya farklı şekillerde yeniden bağlanamaması gibi temel kısıtlamalar mevcuttur; bu işlemler ağacı geçersiz kılar.
NVIDIA OptiX 9, Küme Hızlandırma Yapısı (Cluster Acceleration Structure – CLAS) adında yeni bir veri yapısı tanıtmaktadır. Bir CLAS’a girişler, kullanıcı tarafından tanımlanan küçük üçgen kümeleridir ve CLAS’lar, mevcut Hızlandırma Yapısı’na (Geometry Acceleration Structure – GAS) oldukça benzeri bir yapıdır.
Belirli sahne türlerinde, bir CLAS, bir refit’in hızını sağlayabilirken, tam bir yeniden inşanın esnekliğini ve izleme performansının çoğunu koruyabilir. Kısaca ifade etmek gerekirse, küme düzeyinde kalıpların yeniden kullanılmasını sağlamakta ve yalnızca kümeler üzerinde tam bir yeniden inşa yapmaktadır.
İki tür olası küme yeniden kullanımı vardır. İlk olarak, aynı kümeler, belki de hareketli köşe noktalarıyla birlikte, çerçeveler arasında yeniden kullanılabilir. Bu, mevcut GAS refit’ine benzer ve bir akışkan detay sistemi için iyi bir yol olabilir.
Önemle vurgulanmalıdır ki, aynı küme deseni bir çerçeve içinde, farklı konumlarla birlikte aynı topolojiye sahip birden fazla küme olduğu durumlarda mekansal olarak da yeniden kullanılabilir. Bu mekansal yeniden kullanım, buradaki asıl odak noktasıdır; çünkü alt bölümlere dinamik tessellation yapılmasında oldukça uygundur.
Alt Bölümlü Yüzeyler Hakkında Temel Bilgiler
Catmull-Clark alt bölümlü yüzeyleri (subd), animasyonlu özellik filmlerinde yaygın olarak kullanılan bir geometri temsil yöntemidir ve gelecekte oyunlarda da kullanılabilir. Genellikle dörtgenlerden oluşan bir kontrol ağ ile sorun giderme ve sorunsuz bir sınır yüzeyi oluşturmak için bir dizi matematiksel kural içerir.
Bu temsil yöntemi, film veya oyun prodüksiyon süreçlerinde birçok avantaja sahiptir. Modelleme, iskeletleme, animasyon gibi işlemler genellikle yalnızca kontrol ağı ile gerçekleştirilir; bu, genellikle hafif bir yapıdır. Ayrıca, render için limit yüzeylerin anında tessellation’ı, geometri yoğunluğunun kameraya göre hedeflenmesini sağlar. Ekranın dışındaki veya gizli alanlar daha düşük bir hızda tessellated edilebilir.
Gerçek Zamanlı Tessellation
Şekil 4, OptiX kullanarak küme geometri için uyarlanabilir tessellation hattının nasıl görünebileceğini göstermektedir. Bu hattın her çerçeve boyunca çalışması, her dinamik mesh’i yeniden tessellate edip, hızlandırma yapılarını yeniden inşa etmesini gerektirir.
İlk birkaç adım, genellikle CUDA çekirdekleri olarak uygulanmış olan kullanıcı alanı kodunda gerçekleşir.
- Animasyon veya skinning: Alt bölümlü kontrol ağının köşe noktalarını canlandırın.
- Tessellation ve yer değiştirme: Alt bölümlü limit yüzeyde yaklaşık bir üçgen başına bir yoğunlukta kümeler tanımlayın. Küme tanımlarını ve kümelerin köşe noktalarını cihaz belleklerine kaydedin.
Hızlandırma yeniden inşa ve render adımları esasen OptiX tarafından yönetilmektedir.
- CLAS instantiation: Her bir küme için tanımlamalar ve köşe noktaları cihaz belleklerini giriş olarak alarak bir CLAS oluşturun. Bu, nerdeyse tüm argümanlarını cihaz belleğinde tutan tek bir işlev çağrısıdır.
- GAS ve IAS oluşturma: Daha yüksek seviyedeki hızlandırma yapılarını tamamlamak. CLAS’lerin yaprakları kümeler olduğu için, bu adım genelde 10x-100x daha hızlıdır.
- OptiX başlatma: Işınları sahneye gönderin ve gölgeleme yapın. OptiX, gölgeleme bağlamında küme kimliğini ve vurulan üçgenin köşe noktalarını sağlar.
Yoğun geometrilerle, mikro üçgen yüzey normalleri doğrudan gölgeleme normalleri olarak kullanılabilir; ya da opsiyonel olarak, limit normalleri, tessellation sırasında değerlendirilebilir ve bir tampon içinde yol izleyiciye geçebilir.
Mekansal Küme Yeniden Kullanımı
Şekil 5’teki torus yüzeyini tessellate ederken, benzer veya aynı şekilde kümeleri bilinçli olarak tessellate ederek mekansal yeniden kullanım fırsatları sunabilirsiniz. Dörtgen tabanlı kontrol kafesi, bu noktada avantaj sağlar. Çoğu sonuçlanan küme, aynı MxN çözünürlüğe sahip dikdörtgen ızgahlardır.
OptiX API’sinde yeniden kullanılabilir bir küme, Küme Şablonu (Cluster Template) olarak adlandırılır. Bir CLAS’ın köşe noktaları hariç, her şeyi depolar. Tekrar kullanılabilir, yalnızca yeni köşe noktaları sağlayarak hızlı bir şekilde tekrar oluşturulabilir (refit’e benzer).
Küme Şablonları, üçgen indeksleri için oluşturulabilir ve yeniden kullanılabilir (Şekil 6, solda). Ancak, ızgara desenlerinin alt bölümlü yüzeyler ve diğer durumlar için çok yararlı olması nedeniyle, OptiX’in ızgaralardan şablon oluşturma için ayrı bir API çağrısı mevcuttur (Şekil 6, sağda). Izgara sürümü, yalnızca ızgara şablonunun topolojisini sağlamanız gerekmediği için daha kolaydır ve sonuçta oluşan küme şablonu genellikle daha küçüktür ve ray izleme hızı artırılabilir; çünkü OptiX tanımlanmış topoloji için optimize edebilir. API bilgileri için OptiX 9.0 Programlama Kılavuzu’na bakabilirsiniz.
Bu genel çerçeve süresini hızlandırmaktadır çünkü:
- Pek çok CLAS, sahnedeki aynı küme desenini (Küme Şablonu) kullanır.
- Küme Şablonu, CLAS inşasının çoğunu önceden hesaplar.
- CLAS’ler üzerinde inşa edilen GAS, düz bir mikro üçgenler üzerinden inşa edilseydi olduğundan 100 kat daha az girdi içerir.
Genel olarak, Küme Şablonları, tüm üçgenlerin tek bir düz GAS’a yerleştirilmesinden daha hızlı bir hızlandırma yeniden inşası sağlar.
DLSS Işın Yeniden Yapımı
Şekil 4’te gösterilen genel işlem hattı, yüksek kare hızlarını korumak için sahneyi yaklaşık bir piksel başına bir örnekle izler. Bir filmde bitirici çerçeve aydınlatması için klasik bir OptiX uygulaması, örneğin 16-32 çerçeve biriktirip daha çok birleşmiş bir görüntü almak amacıyla kullanılır ve ardından kalan Monte Carlo gürültüsünü ortadan kaldırmak için bir denoaizer çalıştırılır. Bu yöntem, kamera ve geometri tamamen animasyona tabi olduğunda çok daha karmaşık hale gelir.
Bunun yerine, kullanıcı alanı biriktirme döngüsünü DLSS Ray Yeniden Yapımı (DLSS-RR) ile değiştirebilirsiniz. Bu, kendi iç verileri ve hareket vektörleri ile diğer giriş rehber katmanları yardımıyla kendi birikimini yapar. DLSS-RR, referans bir görüntüye ulaşmaz; bu nedenle tüm kullanıcılar için uygun değildir, ancak istikrarlı ve görsel olarak pürüzsüz bir görüntü üretir.
Alt bölümlerin doğru hareket vektörlerini hesaplamak için, bir önceki çerçeveden kontrol kafesinin yanı sıra mevcut çerçevenin vurulan noktaları gereklidir. Bunu nasıl yapacağınızı öğrenmek için kullanılmış örnek kaynak kodunu inceleyebilirsiniz.
Özet ve Gelecek Adımlar
Bu yazıda, NVIDIA OptiX 9’da Küme Hızlandırma Yapıları (CLAS’lar) kullanılarak dinamik yüksek yoğunluklu geometrilerin verimli ray izlenmesi sağlanmışdır. CLAS’lar, RTX Mega Geometri’nin temel bileşenlerinden biri olarak, küme desenlerinin tekrar kullanımını sağlayarak, geleneksel yöntemlere göre hızlandırma yapılarını yeniden inşa etmeyi önemli ölçüde hızlandırmaktadır. Bu, dinamik alt bölümlü yüzeylerin render edilmesi için özellikle faydalıdır; burada, anında tessellation, yüksek kaliteli, gerçek zamanlı sonuçlar için DLSS Ray Yeniden Yapımı ile birleştirilebilir.
Daha fazlasını öğrenmek için, bazı görsellerin üretiminde kullanılan örnek kaynak kodunu inceleyin, teknik sorularınızı OptiX Geliştirici Forumu’na gönderin ve bu ilgili kaynaklara göz atın:
- OSD-Lite alt bölüm tessellation kodu
- NVIDIA OptiX SDK
- OptiX 9.0 Programlama Kılavuzu
- RTX Mega Geometri örnek kodu
- Vulkan küme örnekleri
- DLSS