Ray tracing üçgen örgüleri için donanım desteği, NVIDIA RTX ile 2018 yılında tanıtıldı. Ancak, saç ve tüylere yönelik ray tracing uygulamaları, compute-intensif bir problem olarak kalmaya devam etti. Fakat bu durum artık değişiyor.
NVIDIA GeForce 50 Serisi GPU’lar, saç ve tüylere yönelik ray tracing hızlandırmasında önemli bir gelişme sunuyor: lineer fırçalanmış küre (LSS) ilkesine yönelik donanım desteği. Bu yeni ilke, gerçek zamanlı yüksek kaliteli dijital insanları görüntülemek için büyük bir adım. Gerçekçi insan rendering uygulamalarının kapsamı sürekli artmakta ve AI avatarlar, sinema ve oyun karakterleri, grafik araştırmaları, yüksek performanslı bilimsel hesaplamalar, sentetik veri üretimi gibi daha birçok alanda kullanılmaktadır.
LSS, bugün itibarıyla NVIDIA OptiX ve NVAPI SDK‘da mevcut. LSS ile fiziksel tabanlı gölgeleme modelleri kullanarak gerçek zamanlı saç uygulamalarını gösteren gelişmiş örnekler ise RTX Karakter Renderleme SDK’sında bulunmaktadır. RTX Kit, AI ile oyunları ray trace etmek, muazzam geometrilerin yer aldığı sahneleri render etmek ve fotogerçekçi görsellere sahip oyun karakterleri oluşturmak için kullanılan bir dizi sinirsel rendering teknolojisinden oluşur. RTX Kit, GeForce RTX 50 Serisi’nin lansmanında tanıtıldı.
Linear Fırçalanmış Küre (LSS) Nedir?
Linear fırçalanmış küre (LSS), değişken yarıçaplara sahip kalın rondo 3D bir çizgi olarak tanımlanır. Birden fazla LSS bir araya getirilerek 3D eğriler oluşturulabilir, bu işlem, üçgen yüzeylerin inşa edilmesinde olduğu gibi, örtüşen yerlerde ortak köşe noktaları paylaşarak yapılır. LSS, silindirik veya konik bir tüp biçimindedir ve her iki ucu da isteğe bağlı olarak birer küre ile kaplanabilir.

Eğer iki uç noktası örtüşürse ve çizgi boyutsuz hale gelirse, bu durumda fırçalanmış küre, standart bir küreye dönüşür. Bu, donanım destekli parçacık renderlemesi için kullanılabilir. Küreleri kullanışlı ve bellek açısından verimli hale getirmek için, bu özel LSS durumu ayrı bir birinci sınıf küre ilkesine dönüştürülmüştür.
Linear fırçalanmış küreler, genellikle şekilde büyütülmek üzere düşünülmemiştir. Bunlar, küçük boyutlarda ekran üzerinde, belki bir piksel kalınlığında görünmektedir. Birçok LSS’nin bir araya getirilerek oluşturduğu ipler, kameranın biraz geri çekilmesi durumunda, keskin açılar kaybolur ve bu kalın çizgiler ince ve düzgün eğrilere dönüşür.

LSS İndeksleme Yöntemleri
LSS, iki indeksleme moduna sahiptir: açık liste modu ve yarı kapalı bir mod olan ardışık kapalı. Liste modunda, her segment açıkça köşe noktalara yapılan bir çift indeksle belirtilir. Ardışık kapalı modda, çizgi segmentleri, bir açık indeks ve bir örtük indeks kullanılarak belirtilir; burada ikinci nokta, köşe noktası tamponunda bir sonraki köşe noktası olarak varsayılır.
Ardışık köşe noktalarının bellekte sıralanmış olması yaygın ve pratiktir, bu nedenle ardışık kapalı mod, indeks tamponunda %50 bellek tasarrufu sağlamak için kolay bir yoldur. Şekil 3, açık bir indeks tamponunun [0,1,1,2,2,3,4,5,5,6] içereceği bir örneği göstermektedir. Ardışık kapalı indeksleme ile indeks tamponu [0,1,2,4,5] olacaktır.

Eski Donanımlarla İp Tabanlı Eğrileri Render Etmek
Eğer NVIDIA OptiX üzerinde CUDA temelli ray tracing API çerçevesi kullanıyorsanız, LSS varsayılan lineer eğri tipi olarak mevcut ve OptiX destekleyen tüm GPU’larda çalışmaktadır. OptiX sürümündeki LSS, NVIDIA Blackwell GPU’larının öncesindeki GPU’larda bir yazılım yedeklisi kullanarak, donanım destekli ilkeye sorunsuz bir biçimde geçiş yapar; bu, herhangi bir kod değişikliği gerektirmez. Eğer OptiX kullanmıyorsanız, alternatif bir ilke kullanmanız gerekebilir.
Yüksek performans açısından, üçgenlere bölünmüş eğriler LSS ile en iyi alternatiflerden biridir. Bir seçenek, kameraya veya ışınlara bakan dörtgenlerdir. Ray-facing dörtgenlerin bellekte düşük bir maliyeti olmasına rağmen, her animasyon karesinde yönlendirilmesi gerekir.
Kesiksiz Dik Üçgen Şeritleri (DOTS), eğrileri üçgenlere bölmenin akıllıca bir yolunu sağlar. Bu yöntemde, üçgenler her çerçevede kameranın ve saçın hareketine göre yeniden tekrar yönlendirilmeksizin her açıdan görüntülenebilir. Bu şekilde, sabit eğriler rendere edilirken, kameranın veya saçın hareket ettiğinde, sınırlama hacmi hiyerarşisini (BVH) yeniden oluşturmanıza gerek kalmaz. Üçgenlerin geniş desteği ile DOTS, mevcut RTX donanımından faydalanabilir.
LSS’yi GeForce RTX 50 Serisi GPU’larda kullanmak isteyen herkes, eski GPU’larda ray-traced ipler desteklemek için DOTS kullanabilir. DOTS ve LSS’i kullanan saç örnekleri, gerçekçi insan saçı ve cildi patika izlemeyle işleyen RTX Karakter Renderleme SDK‘sında bulunacaktır.
LSS’nin bir avantajı, geometrinin doğal olarak yuvarlak olmasıdır; bu sayede gölgelendirilmesi kolaydır ve gölge ile yansıma ışınlarını gönderirken öz kesişimden kaçınmak da basittir. Üçgenlerle oluşturulmuş eğriler gibi DOTS, genellikle geometrik normalleri özel gölgelendirme normalleri ile değiştirme gereksinimi duyar; bu, Şekil 4’te gösterilmiştir. Yuvarlak gölgelendirme normalleri kullanıldığında, DOTS’nin görünümü, lineer fırçalanmış kürelerden yapılmış eğrilerin görünümüne benzer veya hatta ayırt edilemez hale gelir.

LSS Kullanmanın Faydaları
Gerçek zamanlı saç renderlemesi için mevcut olan bazı yaklaşımlar şunlardır:
- Dokulu kartlar
- Ray-facing dörtgenler, üçgenlere bölünmüş tüpler, ortogonal dörtgenler (DOTS)
- Yazılım bazlı yüksek dereceli eğri ilke (kübiz Bezier gibi)
Dokulu kartlar, oyunlarda saç için yeterli bir kalite elde etmenin iyi bir yolu olmuştur; ancak bu yapı, saçın simülasyonu veya animasyonu için çok kısıtlıdır. Zira, dokulu bir kart, aynı anda birden fazla ip kullanır ve bu da bağımsız iplerin kontrolünü imkânsız kılar. İp tabanlı yaklaşımlar ise çok daha fazla kontrol ve esneklik sunuyor ki bu nedenle ipler, donanımın zamanla gelişmesiyle gerçek zamanlı saç renderlemenin geleceği olarak öne çıkıyor.

Üçgenler, günümüzde donanımda iyi bir destekle hızla render edilebilirken, üçgenlere bölme işlemi zaman alabilir ve önemli ölçüde bellek kullanabilir. Dörtgen, ortalama iki köşe noktasına ihtiyaç duyar, ancak her biri, ipin yanındaki bir sonraki komşu dörtgenle paylaşılabilir. Sonuç olarak, kameraya bakan dörtgenlerin her bir segmenti için, ortalama iki köşe noktası harcanacaktır. Tüpler veya DOTS kullanıldığında, bir ipin her segmente daha fazla köşe noktası düşmesi olasıdır.
Öte yandan, LSS, ortalama olarak bir ip segmenti başına yalnızca bir köşe noktasına ihtiyaç duyar, bu da ona üçgenlere bölünmüş eğrilere kıyasla çok daha az bellek harcatarak, daha yüksek render hızları sağlar. Ayrıca, LSS, yazılım bazlı yüksek dereceli eğri ilkesine göre de çok daha hızlıdır. Kaliteye dair ihtiyaç ve toleransınıza bağlı olarak, bu ekstra performans, daha fazla köşe noktasına ihtiyaç duyulduğunda, cubic eğriler gibi durumlarda bir bellek takası ile gelebilir.
LSS ile Neler Yapılabilir?
LSS, esasen saç ve tüyler için tasarlanmış olsa da, parçacık sistemleri, moleküler modeller, wireframe rendering, yazı ve yol renderleme gibi başka uygulamalar için de kullanılabilir.

LSS ile Nasıl Başlayabilirsiniz?
NVIDIA GeForce RTX 50 Serisi GPU’ları, linear swept spheres (LSS) adında yeni bir ilkenin donanım desteğini sunmaktadır. LSS, değişken kalınlığa sahip yuvarlak 3D bir çizgi ilkesidir ve çeşitli ip türlerini esnek bir şekilde temsil etmeyi mümkün kılar. GeForce RTX 50 Serisi GPU’ları, partikül sistemlerine yararlı düzenlemeler sunarak doğrudan (bir fırçalanmış lineer segment olmadan) küre desteklenmektedir.
Gerçek insan saçını render etmek, LSS ile DOTS’a kıyasla yaklaşık 2 kat daha hızlıdır ve geometrinin depolanmasında yaklaşık 5 kat daha az VRAM gerekmektedir. Bu durum, diğer yaygın uygulamalar için de benzer şekilde geçerlidir. GeForce RTX 50 Serisi GPU’lar ile LSS ve daha önceki GPU’larda DOTS kullanarak, tüm RTX GPU’larda en yüksek saç ray tracing performansına ulaşmak artık mümkün.
CUDA ile ray tracing yaparken, LSS şu anda OptiX’te kullanılabilir. DirectX için LSS API’si, NVAPI SDK‘nın R570 sürümünden itibaren bulunmaktadır. Vulkan geliştiricileri ise Vulkan LSS genişletmesi ile ilgilenecektir.
Fiziksel bir temele dayanan saç renderlemeleri için örnekler arıyorsanız, RTX Karakter Renderleme SDK‘sına göz atabilirsiniz. En yeni AI ve rendering teknolojileri hakkında daha fazla bilgi edinmek için NVIDIA RTX Kit’ine göz atın. LSS hakkında konuşmak için OptiX NVIDIA Geliştirici Forumuna katılın.