Nanite, Unreal Engine 5'in tanıttığı ve oyun motorlarının on yıllardır taşıdığı en büyük yüklerden birini kaldıran teknolojidir: poligon bütçesi. Geleneksel olarak, bir karakter için 60 bin üçgen, bir çevre asset'i için 5-10 bin üçgen kabul edilebilir bir tavandı. Sanatçı, ZBrush'taki 30 milyon üçgenli high-poly heykelinden başlayarak retopoloji, normal map bake, LOD0 / LOD1 / LOD2 / LOD3 oluşturma, manuel UV optimizasyonu gibi günlerce süren bir süreç yaşardı. Nanite bu zincirin büyük bölümünü tamamen ortadan kaldırıyor.
Biz Althera Games olarak, ilk projemiz Potion Rise Simulator'ın yoğun detaylı dükkân iç mekânlarında, kazan ve şişe asset'lerinde, kasaba meydanı sahnelerinde Nanite'yi yoğun biçimde kullanıyoruz. Üç kişilik bir ekibin AAA seviyesinde çevre yoğunluğuna ulaşmasının başka makul bir yolu yok. Bu yazıda Nanite'nin nasıl çalıştığını, hangi senaryolarda parlayıp hangilerinde sustuğunu ve indie bir projede gerçekten ne kadar iş gördüğünü ele alıyoruz.
Nanite Nedir? Geometri Devrimi
Nanite, Epic Games'in virtualized geometry olarak adlandırdığı bir sistemdir. Mantığı, sanal bellek ve mip-mapped tekstürlerden ilham alır: ekrana dokunmayan üçgenleri belleğe yüklemez, dokunanları ise pikselden daha küçük olmayacak yoğunlukta işler. Sonuç, sahnede milyarlarca kaynak üçgen olsa bile GPU'nun sadece görünür ve önemli olanı işlemesidir.
Klasik bir mesh pipeline'ında siz LOD seviyelerini elinizle hazırlardınız. LOD0 yüksek detaylı, LOD3 düşük detaylı, motor mesafeye göre birinden diğerine geçerdi (LOD popping olarak bilinen görsel sıçramalar dahil). Nanite bu hiyerarşiyi cluster düzeyinde, otomatik ve sürekli (continuous) LOD olarak yapar. Mesafenize göre tek bir mesh'in farklı bölgelerinde farklı detay seviyeleri kullanılabilir; arka planın bir kısmı daha az detay alırken yakındaki bir kısmı tam yoğunlukta kalır.
Bu, indie geliştirici için pratik anlamda şu demek: Bir 10 milyon üçgenli heykeli, bir 500 üçgenli arka plan kayasını ve aralarındaki her şeyi aynı sahnede performans cezası ödemeden kullanabilirsiniz. Manuel LOD üretimi, retopoloji, normal map projection gibi haftalarca süren işlerin çoğu artık tarihte kalıyor.
Nanite Nasıl Çalışır: Cluster ve Virtual Geometry
Teknik olarak Nanite, mesh'inizi cluster adı verilen küçük üçgen gruplarına böler. Tipik bir cluster yaklaşık 128 üçgen içerir. Bu cluster'lar bir hiyerarşik ağaç yapısında saklanır: ağacın yapraklarında en yüksek detay, kök tarafında ise düşük detay versiyonlar bulunur. Aynı bölge için farklı detay seviyelerindeki cluster'lar yan yana yaşar.
Render aşamasında Nanite, kameranın konumuna ve ekran çözünürlüğüne bakarak hangi cluster'ların hangi detay seviyesinde çizileceğine karar verir. Hedef genelde piksel başına bir üçgentir; daha yoğun olması GPU'yu boşa yorar, daha seyrek olması görsel kaliteyi düşürür. Bu kararlar GPU üzerinde compute shader'larla, frame başına milyonlarca cluster için paralel olarak alınır.
Nanite'nin temel avantajları şu mimari kararlardan doğar:
- Visibility buffer: Klasik forward veya deferred render geleneksel G-buffer kullanırken Nanite, önce hangi üçgenin hangi pikselde görüneceğini hesaplayan bir visibility buffer üretir. Material değerlendirmesi ekranın görünür kısmı için yapılır; arkadaki overdraw maliyeti yok olur.
- GPU-driven rasterization: Küçük üçgenler için Nanite kendi yazılım rasterizer'ını kullanır; donanım rasterizer'ının küçük poligonlarda yetersiz kaldığı senaryoda paralel compute ile daha hızlı çalışır.
- Streaming: Cluster verisi diskten ihtiyaç duyuldukça yüklenir; 50 GB'lık bir mesh kütüphanesinin sadece şu anki kameranızın gördüğü kısmı VRAM'da bulunur.
Bu üç sütun birleşince, klasik motorların boğulduğu sahne yoğunluğunda Nanite rahat nefes alabiliyor. Resmi Nanite Virtualized Geometry dokümantasyonu, mimariyi derinlemesine açıklayan ana kaynaktır.
Megascans + Nanite: Indie İçin Hızlı Kalite
Nanite'nin gerçek gücünü test ettiğiniz an, Megascans kütüphanesini Nanite ile birlikte kullandığınızdır. Quixel Megascans kütüphanesindeki taşlar, kayalar, mimari yapı taşları, organik bitki örtüsü çoğu zaman 500 bin ile 2 milyon üçgen arasında değişir. Bu varlıkları klasik bir UE4 projesinde kullanmak istediğinizde, optimize edilmiş LOD versiyonlarını import etmeniz, farklı LOD aralıklarını ayarlamanız ve materyalleri performansa göre sadeleştirmeniz gerekirdi.
Nanite ile bu adımları atlıyorsunuz. Megascans asset'ini import et, Nanite'yi etkinleştir, sahneye sürükle. Bu bizim Potion Rise Simulator için iş akışımız oldu: küçük bir ekipte üç kişinin tek başına 200'den fazla benzersiz çevre asset'i hazırlamasını mümkün kıldı. Geleneksel pipeline'da bu kadar varlığı manuel optimize etmek tek başına aylar alırdı.
Potion Rise Simulator'ın dükkân sahnesinde 60'tan fazla farklı şişe, kavanoz, ahşap detay ve metal aksam birlikte göründüğünde, klasik LOD planlaması yapmamış olmamız bir lüks değil ihtiyaçtı. Nanite, küçük ekibin AAA görsel yoğunluğa erişiminin sessiz kahramanı.
Bununla birlikte, Megascans + Nanite kombinasyonunu disiplinli kullanmak gerekir. Disk alanı ve build süresi, kaynak üçgen sayısıyla orantılı şekilde artar. Sahneye 10 GB'lık bir kalker formasyonu eklediğinizde commit boyutunuz hemen şişer. Pratik öneri: gerçekten kullanılan mesh'leri seçici biçimde projeye dahil edin, Megascans'ın "bridge" aracını kütüphane gibi düşünün, source kütüphane gibi değil.
Nanite Sınırları: Ne Zaman Kullanılmamalı?
Nanite her şeyi çözmüyor. Birkaç önemli sınır bilmeden projeye girmek hayal kırıklığına yol açar:
- Translucent materyaller: Cam, sıvı, sis gibi yarı saydam materyaller Nanite'nin temel rasterization yaklaşımıyla uyumlu değildir. Bu varlıkları klasik mesh olarak tutmanız ve normal LOD pipeline'ı uygulamanız gerekir. Potion Rise Simulator'daki cam şişelerin sıvı içeriği bu kategoriye giriyor.
- Karmaşık World Position Offset (WPO): Vertex animasyonu yapan materyaller (örneğin rüzgârla sallanan yapraklar veya su dalgası simülasyonu) Nanite ile sınırlı uyumlu çalışır. UE 5.1 sonrası kısmi WPO desteği eklendi ancak performans kazancı her zaman beklediğiniz gibi olmaz.
- Skinned mesh (animasyonlu karakterler): UE 5.5'e kadar Nanite skinned mesh'leri tam desteklemiyordu. UE 5.5 ile deneysel destek geldi, fakat hâlâ olgunlaşma sürecinde. Karakter pipeline'ınızı Nanite'ye taşımadan önce ayrıntılı profilleme yapın.
- Çok küçük mesh'ler: Nanite'nin kendi overhead'i vardır. Birkaç yüz üçgenli basit propları Nanite'ye almak çoğu zaman performans kaybına neden olur. Otomatik fallback proxy kullanın veya Nanite'yi devre dışı bırakın.
- Mobile / eski donanım: Nanite, DX12 SM6 veya Vulkan SM6 gerektirir. Mobil oyunlar, Switch ve eski iGPU'lar Nanite'yi desteklemez ve fallback proxy mesh'e düşer.
Nanite ile LOD Karşılaştırması
Klasik LOD ile Nanite arasındaki farkı somutlaştırmak gerekirse:
- İş yükü: Klasik LOD'da sanatçı her mesh için 3-4 farklı LOD seviyesi hazırlar; her seviyenin geçiş mesafesini ayarlar. Nanite'de sanatçı yalnızca yüksek detaylı kaynak mesh'i import eder, motor gerisini halleder.
- Görsel kalite: Klasik LOD'da seviyeler arası geçişte görünür "popping" yaşanır; Nanite'de cluster bazlı sürekli geçiş bu sıçramaları neredeyse görünmez kılar.
- Bellek: Klasik LOD diskteki tüm seviyeleri taşır; Nanite cluster verisini sıkıştırılmış formatta saklar ve ihtiyaç duydukça streamleyerek VRAM kullanımını disiplin eder.
- CPU yükü: LOD seçimi klasik pipeline'da CPU üzerinde her actor için yapılır; Nanite'de tüm karar GPU compute shader'larında, çok daha iyi paralelize biçimde alınır.
- Esneklik: Klasik LOD'da sahne içi modifikasyon yapmak (örneğin runtime'da poligon ekleme) zordur. Nanite ile dinamik düzenli mesh'ler yine sınırlı kalır, fakat tasarım zamanında çok daha esnek bir iş akışı elde edersiniz.
Pratik tavsiye: Nanite varlıkları ile klasik mesh'leri aynı projede karıştırın. UE5'te bu zaten desteklenir. Çevre büyük ölçüde Nanite, karakterler büyük ölçüde geleneksel LOD, partikül ve translucent efektler klasik mesh — bu hibrit yapı çoğu indie projenin doğru cevabı oluyor.
Nanite Foliage ve Yeni Yetenekler (UE 5.3+)
Nanite, ilk piyasaya çıktığında (UE 5.0) yalnızca opaque, statik geometri için hazırdı. Sonraki sürümlerde Epic, kapsamı belirgin biçimde genişletti:
- UE 5.1: Sınırlı World Position Offset desteği eklendi; tek tek ağaçlar gibi WPO'lu mesh'lerin Nanite'de çalışması mümkün hale geldi.
- UE 5.2: Nanite Displacement (Tessellation) tanıtıldı; klasik tessellation'a benzer ama Nanite'in cluster yapısıyla entegre çalışan bir vertex deformasyon mekanizması.
- UE 5.3: Foliage (bitki örtüsü) için olgunlaşmış destek geldi. Daha önce klasik LOD ile yönetilen ağaçlar, çalılar ve yapraklar artık Nanite'de daha verimli çalışıyor; özellikle yüksek poligonlu yaprak modelleri büyük performans kazancı sağladı.
- UE 5.4: Nanite Spline Mesh ve daha iyi animasyon entegrasyonu; yol, ray, kablo gibi spline tabanlı geometrilerin Nanite uyumu sağlandı.
- UE 5.5: Deneysel skinned mesh desteği — animasyonlu karakterlerin Nanite üzerinde çalışmasının ilk pratik adımı.
Eğer projeniz UE 5.3 veya üzeri üzerinde gelişiyorsa, foliage'da Nanite'yi etkinleştirmek özellikle açık dünya türü oyunlar için belirgin bir performans kazancı verir. Eski projelerinizi 5.3+ sürümüne migrate ederken, Nanite Foliage ayarlarını gözden geçirmek ek bir kazanım sağlayabilir.
Indie Projede Nanite: Performans İpuçları
Nanite "etkinleştir ve unut" felsefesiyle pazarlanır ama gerçek dünyada birkaç ipucu büyük fark yaratır:
- Nanite Visualization view modes: UE editöründe Show > Nanite Visualization altındaki Triangles, Clusters, Overdraw görünümlerini düzenli kontrol edin. Bir mesh'in cluster yapısı normalden büyük çıkıyorsa, kaynak mesh'inizde gereksiz yoğun bölgeler olabilir.
- Disk alanı disiplini: Nanite mesh'leri sıkıştırılmış olsa da yüksek üçgen sayıları diske yansır. 30 milyon üçgenli kaynak mesh'leri sahnede gerçekten gerekiyor mu sorusunu sorun. Çoğu zaman 5 milyon üçgenli versiyon görsel olarak ayırt edilemez.
- Auto Instancing: Aynı mesh'i sahnede 100 kez kullanıyorsanız UE bunu otomatik instance'lar; siz de Foliage Tool veya HISMC (Hierarchical Instanced Static Mesh Component) ile tekrarlayan elementleri grup halinde yerleştirin.
- Overdraw kontrolü: Çok katmanlı transparency veya çok yoğun foliage senaryolarında overdraw maliyeti yine sürpriz yapabilir. Stat GPU komutu ile frame zamanını kontrol edin.
- Fallback mesh kalitesi: Nanite desteklemeyen donanımlar için motor otomatik fallback proxy üretir. Bu proxy'nin kalitesini "Fallback Triangle Percent" ayarından kontrol edebilirsiniz; düşük donanım hedefliyorsanız bu değeri test edin.
- Build süresi yönetimi: Nanite mesh'lerin ilk build'i uzun sürebilir. Derived Data Cache (DDC) paylaşımlı kurulumu, takım çalışırken ciddi zaman kazandırır.
Bu disiplini Potion Rise Simulator'ın iş akışına uyguladığımızda, üç kişilik ekibin haftada yüzlerce çevre asset'i koyabilmesini sağladık. Genel kural: Nanite size sınırsız değil, akıllı bir bütçe veriyor; o bütçeyi nasıl kullandığınız hâlâ kararlarınıza bağlı.
Sıkça Sorulan Sorular
Nanite skinned mesh destekliyor mu?
UE 5.5'e kadar Nanite yalnızca rigid (statik) mesh'ler için tam destek sunuyordu. UE 5.5 ile birlikte deneysel skinned mesh desteği eklendi; karakterlerin ve animasyonlu varlıkların Nanite üzerinde işlenmesi mümkün hale geldi. Ancak hâlâ olgunlaşma sürecindedir; üretim ortamında karakterlerinizi Nanite'ye taşımadan önce profilleme yapmanız ve her UE sürümünde yenilikleri takip etmeniz önerilir. Çoğu indie projede karakterler için klasik LOD sistemi, çevre için Nanite hibrit yaklaşımı en güvenli seçim olmaya devam ediyor.
Nanite mobile platformlarda çalışır mı?
Nanite, modern bir donanım GPU özelliği olan compute shader yoğun bir mimariye dayanıyor ve bu nedenle mobil platformlarda doğrudan çalışmıyor. Hedefiniz iOS, Android veya Switch gibi platformlarsa, projenizi geleneksel LOD pipeline'ı üzerinde kurmanız gerekir. Nanite şu anda PC (DX12 / Vulkan), PlayStation 5 ve Xbox Series X|S gibi yeni nesil platformlar için optimize edilmiştir. Mobil hedefli bir indie projede Nanite'yi etkinleştirmek hata değil, sadece etkisiz olur.
Nanite kullanırken LOD oluşturmak gerekir mi?
Nanite mesh'leri için manuel LOD oluşturmaya gerek yoktur; motor cluster tabanlı kendi otomatik LOD'unu oluşturur ve mesafeye göre piksel başına optimum üçgen yoğunluğunu seçer. Ancak Nanite uyumlu olmayan varlıklar (translucent material kullanan, kompleks WPO içeren veya skinned mesh olan) için klasik LOD seviyeleri hâlâ gereklidir. Pratikte indie projelerde karma bir yapı uygulanır: çevre asset'leri Nanite, karakterler ve özel materyaller geleneksel LOD.
Nanite asset'leri normal asset'lerden farklı mı export edilir?
Hayır, Blender, Maya veya ZBrush gibi araçlardan FBX/glTF olarak export ettiğiniz mesh'leri normal şekilde import edebilirsiniz. UE5 import diyaloğunda "Build Nanite" (veya import sonrası static mesh detaylarında "Enable Nanite Support") seçeneğini etkinleştirmeniz yeterlidir. Motor cluster yapısını ve hiyerarşik LOD'u otomatik üretir. Yine de yüksek poligonlu kaynak mesh'leri (milyonlarca üçgen) için disk alanı ve build süresi göz önünde bulundurulmalıdır.
Nanite hangi GPU'larda çalışır?
Nanite, DirectX 12 Shader Model 6 veya Vulkan SM6 destekleyen modern GPU'larda çalışır. NVIDIA GTX 1080 ve üzeri, RTX serisi, AMD RX 5000 serisi ve üzeri ile Intel Arc serisi GPU'lar Nanite'yi destekler. PlayStation 5 ve Xbox Series X|S konsollarında native olarak çalışır. Daha eski donanımlarda (örneğin GTX 900 serisi veya altı) Nanite devre dışı kalır ve fallback proxy mesh kullanılır; bu nedenle UE'nin Statistics panelinde minimum donanım hedefinizi düzenli kontrol etmek önemlidir.
Sonuç: Indie İçin Sessiz Bir Eşitleyici
Nanite, ilk bakışta teknik bir özellik gibi görünür: virtualized geometry, cluster hiyerarşi, GPU compute. Fakat indie geliştirici için pratik anlamı çok daha büyük. Üç kişilik bir ekibin AAA seviyesinde çevre yoğunluğuna ulaşması, klasik retopoloji ve LOD bake aşamalarının tek bir checkbox'a indirgenmesi, Megascans gibi devasa kütüphanelerin doğrudan üretime girmesi — hepsi bu mimarinin sonucu.
Ama Nanite sihir değil. Translucent materyal kullanmadığınız sürece, eski donanım hedeflemediğiniz sürece, skinned mesh için klasik LOD'unuz olduğu sürece doğru aracı doğru yerde kullanıyorsunuz demektir. Bu sınırları bilen indie ekipler, motorun sunduğu serbestliği en iyi şekilde değerlendirir.
Daha geniş UE5 stratejileri için UE5 ile indie oyun geliştirme rehberimizi ve aydınlatma tarafında Lumen rehberimizi incelemenizi öneriyoruz. Potion Rise Simulator'ın Nanite ile dolup taşan dükkân sahnelerini görmek için oyun sayfamıza göz atın; ekiple ilgili daha fazla bilgi için stüdyo hakkında sayfamızı ziyaret edebilirsiniz.