Unreal Engine 5 Nanite Mimarisi: Kapsamlı Teknik Analiz, Optimizasyon Stratejileri ve PlayStation 5 Geliştirme Kılavuzu
Sanallaştırılmış Mikropoligon Geometrisinin Temelleri ve Paradigma Değişimi
Gerçek zamanlı render (real-time rendering) teknolojileri ve bilgisayar grafikleri endüstrisinde on yıllardır süregelen en büyük kısıtlamalardan biri, donanım kaynaklarının verimli kullanımı adına poligon bütçelerinin ve "draw call" (çizim çağrısı) sayılarının işlemci (CPU) ile grafik işlemci (GPU) arasındaki iletişimde yarattığı kaçınılmaz darboğazlardır. 1 Geleneksel oyun geliştirme iş akışlarında, 3D sanatçılarının ve teknik yönetmenlerin yüksek detaylı modelleri (örneğin sinema kalitesindeki ZBrush heykelleri, lazer taramalar veya fotogrametri verileri) oyun motorlarına aktarabilmesi için manuel olarak topoloji optimizasyonu yapmaları, "Level of Detail" (LOD) zincirleri oluşturmaları ve yüksek çözünürlüklü detayları "Normal Map" (normal haritaları) içerisine fırınlamaları (baking) zorunluydu. 1 Bu süreç, hem üretim takvimini uzatan meşakkatli bir iş yükü yaratmakta hem de ekrandaki detay seviyesini, hafıza kısıtlamaları nedeniyle yapay bir limite hapsetmekteydi. 1 Unreal Engine 5 (UE5) ile birlikte endüstri standardı haline gelen Nanite teknolojisi, bu geleneksel engelleri temelden ortadan kaldıran sanallaştırılmış mikropoligon geometri (virtualized micropolygon geometry) sistemidir. 1 Nanite, poligon bütçelerini teknik bir kısıtlama olmaktan çıkararak doğrudan film kalitesindeki milyarlarca poligondan oluşan kaynak dosyaların gerçek zamanlı olarak, herhangi bir manuel LOD işlemi gerektirmeden sahneye aktarılmasına olanak tanır. 1 Sistem, ekran üzerinde yalnızca oyuncunun kamerası tarafından o an görülebilen detayları işleyecek şekilde tasarlanmıştır; piksel boyutundan daha küçük olan hiçbir üçgen (triangle) veya geometri parçası gereksiz yere render edilmez. 3 Bu teknoloji, sürekli, akıcı ve kesintisiz otomatik bir LOD sistemi sunarak, geleneksel rendering boru hattını (rendering pipeline) bütünüyle GPU odaklı bir veri akışı (streaming) mimarisiyle değiştirir. 1 Nanite'ın temel inovasyonları dört ana başlıkta toplanmaktadır 1:
Sanallaştırılmış Geometri: Tüm sahne tek bir devasa statik ağ (mesh) gibi ele alınır ve yalnızca ekranda görünür olan kısımlar işleme dahil edilir.
Otomatik Detay Seviyesi (LOD): Kademeli ve kesikli LOD değişimleri (LOD popping) yerine, mesafeye ve ekran çözünürlüğüne bağlı olarak kesintisiz, akıcı bir detay değişimi sağlanır.
GPU Odaklı İş Hattı (Pipeline): Çizim çağrıları (draw calls) ve eleme (culling) işlemleri CPU'dan alınarak GPU'nun paralel işlem gücüne devredilir.
Verimli Akış (Efficient Streaming): SSD üzerinden doğrudan bellek akışı sağlanarak, yalnızca ihtiyaç duyulan geometri verisi anlık olarak belleğe yüklenir.
Bu araştırma raporu, Nanite sisteminin derinlemesine çalışma prensiplerini, proje entegrasyonu için gerekli adımları, optimizasyon gereksinimlerini, darboğazların nasıl aşılacağını ve özellikle donanım düzeyinde eşsiz bir sıkıştırma ile yüksek hızlı veri akışına (I/O) sahip PlayStation 5 (PS5) platformuna yönelik oyun geliştirme dinamiklerini kapsamlı bir analitik çerçevede incelemektedir.
Nanite Teknik Mimarisi ve Veri Yapıları
Nanite sisteminin çekirdeğinde yatan felsefe, geometri verisini bellek sınırlarına sığdırılmaya çalışılan devasa statik ağlar (static meshes) olarak değil, tıpkı sanal dokularda (virtual texturing) olduğu gibi dinamik olarak akan (streaming) ve talep üzerine yönetilen parçalı veri kümeleri olarak ele almaktır. 3 Geleneksel motorlar, bir objenin yalnızca küçük bir kısmı kameranın görüş alanında (frustum) olsa dahi tüm objeyi belleğe yükleyip işlemeye çalışırken, Nanite bu görünürlüğü milimetrik piksel hassasiyetinde değerlendirir. 3
Hiyerarşik Küme Yapısı (Hierarchical Cluster Structure)
İçe aktarım (import) aşamasında Nanite algoritmaları, 3D modelleri analiz ederek hiyerarşik küme (cluster) ağaçlarına böler. 1 İşlenen her bir statik ağ, donanım seviyesinde en iyi performansı verecek şekilde tam olarak 128 üçgenden oluşan küçük veri paketlerine (cluster) ayrılır. 1 128 üçgenlik bu sabit boyut, modern GPU'ların dalga cephesi (wavefront) veya warp boyutlarına tam uyum sağlayarak, paralel işlem birimlerinden ve önbellek sınırlarından (cache limits) maksimum işlem verimi almak üzere özel olarak seçilmiş optimal bir birimdir. 1 Bu kümeler, kendi aralarında sınır kutusu (bounding box) bilgileri, ekran alanı (screen space) LOD seçimi için geometrik hata metrikleri ve ebeveyn-çocuk (parent-child) ilişkileri barındıran Yönlendirilmiş Döngüsüz Grafik (Directed Acyclic Graph - DAG) benzeri bir Ağaç Veri Yapısı oluşturur. 1 Kamera ilgili objeye yaklaştıkça veya uzaklaştıkça, sistem bu ağaç yapısı üzerinde gerçek zamanlı olarak gezinerek, her bir ekran bölgesi için hangi kümenin ekrandaki piksel yoğunluğuna en uygun olduğuna karar verir. 1 Geleneksel yaklaşımların aksine, objenin bütünü aniden değişmez. Kesikli bir LOD değişimi yerine, obje yüzeyindeki farklı bölgeler aynı anda farklı küme detay seviyelerinde işlenebilir ve donanım rasterizasyonunda herhangi bir görsel yırtılma veya çatlak (crack) oluşturmayacak şekilde kenarlardan pürüzsüzce birleşir. 3
Görünürlük Tamponu (Visibility Buffer) ve Ayrıştırılmış Gölgelendirme
Nanite'ın CPU darboğazlarını aşmasını sağlayan ve modern rendering mimarilerinde devrim yaratan en kritik yapı, render boru hattının (pipeline) büyük bir kısmını doğrudan GPU'ya taşıması ve geleneksel İleri (Forward) veya Geciktirilmiş (Deferred) gölgelendirme (shading) mantığını "Visibility Buffer" (Görünürlük Tamponu) ile değiştirmesidir. 1 Nanite'ın render döngüsündeki görünürlük tamponu kavramı şu şekilde çalışır: Geleneksel G-Buffer yapılarında, pikseller hesaplanırken renk, normal, pürüzlülük (roughness) gibi devasa boyutlarda veri her piksel için hafızaya yazılır. Nanite ise bunun yerine ekrandaki her piksele yalnızca 32-bit veya 64-bit boyutunda bir kimlik numarası (Primitive ID ve Cluster ID) kaydeder. 1 Bu tampon bellek, renk veya gölgelendirme verisi barındırmaz, yalnızca ekrandaki o spesifik pikselde hangi üçgenin ve hangi kümenin göründüğünü gösteren bir referans haritasıdır. 1 Görünürlük tamponu tam olarak doldurulduktan sonra, ekran alanındaki her piksel için yalnızca bir kez materyal verisi çağrılır ve gölgelendirme işlemi gerçekleştirilir. Bu "ayrıştırılmış" (decoupled) mimari sayesinde, kameranın arkasında kalan, başka bir objenin arkasında saklanan veya nihai görüntüye hiçbir katkı sağlamayan milyonlarca üçgen için gereksiz yere materyal hesaplaması yapılmaz. Bu durum, GPU'nun en büyük düşmanlarından biri olan "Overdraw" (aşırı çizim) problemini materyal hesaplaması bazında tamamen ortadan kaldırır. 9

GPU Odaklı Eleme (Culling) Mekanizmaları
Nanite mimarisinde eleme (culling) işlemleri geleneksel motorlarda olduğu gibi CPU üzerinde obje (actor) bazlı yapılmaz. CPU tarafındaki geleneksel draw call hazırlıkları tamamen baypas edilerek, eleme süreci doğrudan GPU içerisindeki compute shader'lara devredilir. 10 Örtüşme ve eleme (Occlusion Culling) aşamasında Nanite, HZB (Hierarchical Z-Buffer) adı verilen ve ekran uzayında çeşitli derinlik seviyelerinin (mipmaps) logaritmik olarak saklandığı bir yapı kullanır. 9 HZB, her bir 128 üçgenlik kümenin sınır kutusunu (bounding box) ekran uzayındaki derinlik verisiyle karşılaştırır. 9 Bir küme, sahnedeki başka bir objenin arkasında kalıyorsa, derhal render işleminden atılır. Bu eleme o kadar hassastır ki, obje bazında değil küme bazında yapıldığı için, devasa bir dağın arkasında kalan büyük bir ormandaki ağaçların, yalnızca dağın arkasında kalan kısımlarına ait kümeler elenirken, dağın zirvesinden taşan yaprak kümeleri işlenmeye devam eder. 8
Rasterizasyon Yolları: Yazılım ve Donanım İşleme Dinamikleri
Nanite, üçgenleri ekran piksellerine dönüştürmek (rasterizasyon) için tek tip bir işleme birimi kullanmak yerine, üçgenin ekrandaki boyutuna ve materyal özelliklerine göre dinamik olarak karar verilen iki ayrı rasterizasyon yolu (raster path) kullanır. 9 Performans optimizasyonu, bu iki yol arasındaki dengenin mükemmel bir şekilde kurulmasına dayanır.
Yazılım Rasterizasyonu (Software Raster Path)
Yazılım Rasterizasyonu, Nanite'ın en verimli, en hızlı ve yenilikçi çekirdek işleme yoludur. 9 Bu yol, üçgenler ekranda bir pikselden daha küçük (sub-pixel) veya tam olarak bir piksel boyutunda olduğunda devreye girer. 9 Bu senaryoda Nanite, GPU'nun donanımsal üçgen çizim birimlerini tamamen baypas ederek süreci "Compute Shader"lar (Hesaplama Gölgelendiricileri) üzerinden yürütür. 64-bit atomik işlemler (atomic interlocks) kullanılarak piksellerin görünürlük tamponuna olağanüstü bir hızda yazılması sağlanır. Geliştirici konsolundan r.Nanite.Visualize.Advanced 1 veya r.nanite.showmeshdrawevents 1 komutu ile Raster Bins görselleştirme modu açıldığında, yazılım rasterizasyonundan geçen kümeler mavi renkle gösterilir. 9 İyi optimize edilmiş bir sahnede, geometrinin ezici çoğunluğunun mavi renkte olması hedeflenmelidir. 9
Donanım Rasterizasyonu (Hardware Raster Path)
Donanım Rasterizasyonu, üçgenler ekranda bir piksel boyutundan büyük olduğunda veya Nanite'ın compute tabanlı yazılım rasterizasyonunda işleyemediği özel materyal nitelikleri kullanıldığında devreye giren klasik GPU çizim yöntemidir. 9 Bu yol, görselleştirme modlarında kırmızı renkle gösterilir. 9 Özellikle kamera devasa bir duvara yaklaştığında üçgenler piksellerden büyük hale geleceği için sistemin donanım rasterizasyonuna geçmesi normaldir. 9 Ancak, eğer kameraya uzak objeler veya mikropoligonlar hala kırmızı renkte görünüyorsa, bu durum "Hardware Fallback" (Donanım Geri Dönüşü) yaşandığına işaret eder ve ciddi bir optimizasyon sorunudur. 9 Donanım rasterizasyonuna istenmeyen düşüşlerin en büyük sebebi, maskeli (masked), transparan veya karmaşık deformasyon ofsetlerine sahip materyallerin kullanımıdır. 9
Raster Bins (Tarama Kutuları) ve Materyal Yönetimi
Nanite performansının kalbi, geometrinin kendisinden ziyade, geometri üzerine uygulanan materyallerin "Raster Bins" adı verilen sanal kutulara nasıl dağıtıldığı ile ilgilidir. 9 Nanite, standart, opak ve herhangi bir piksel derinliği ofseti (PDO) veya dünya pozisyon ofseti (WPO) içermeyen tüm materyalleri tek bir devasa Raster Bin (Tarama Kutusu) içerisine alır ve sistem bu kutuyu tek bir geçişte (pass) yıldırım hızında işler. 9 Ancak, objelerde yer değiştiren (displacement), maskelenen (masked/alpha test) veya rüzgar efekti için kullanılan yoğun WPO barındıran materyaller kullanıldığında, bu objeler Nanite'ın bu hızlı geçiş yolundan çıkartılarak, her bir materyal tipi için farklı ve bağımsız bir Raster Bin oluşturulmasına neden olur. 9
Performans SınıfıMateryal Türü ve ÖzelliğiNanite Etkisi ve İşleme DurumuStratejik Geliştirici ÖnerisiEn İyi (Best)Opaque (Opak), WPO, PDO veya Displacement ofseti içermeyen saf materyaller.Tek bir Raster Bin içerisinde harmanlanır. Yazılım Rasterizasyonu aktif olarak çalışır, draw call maliyeti sıfıra yakındır.9Projedeki çevre tasarımlarının, binaların ve sert yüzeylerin (hard surface) %90'ından fazlası kesinlikle bu türden oluşmalıdır.9İyi (Good)Opaque (Opak), ancak minimum düzeyde WPO (World Position Offset) mevcut.WPO kullanıldığı için statik kümeler GPU'da ayrı hesaplanmaya başlar. Sınır kutuları (bounding boxes) hareket nedeniyle değişeceğinden eleme (culling) işlemi zorlaşır.Sınır kutusunun bozulmasını ve hatalı eleme yapılmasını önlemek için WPO hareket mesafesi kesinlikle kelepçelenmelidir (clamp).3 Deformasyon statikse fırınlanmalıdır (baked).9Orta (Okay)Masked (Maskelenmiş/Transparan kenarlı, Alpha Cutout).Mecburi olarak Donanım Rasterizasyonuna (Hardware Raster Path) düşer. Boş piksellerin sürekli değerlendirilmesi sonucu şiddetli bir "Overdraw" (aşırı çizim) yaratır.Klasik yaprak veya çit modellemesinde kullanılır ancak performansı baltaladığından çok idareli kullanılmalıdır.8En Kötü (Worst)Karmaşık Deforme Edilmiş Materyaller (Yoğun WPO + PDO).Her bir varyasyon ayrı bir Raster Bin oluşturur. State değişikliklerini artırır, frame sürelerini anında bütçe sınırlarının ötesine taşır.Kesinlikle uzak mesafelerdeki objelerde derhal iptal edilmeli (LOD fallback) veya UE 5.7 ile gelen Nanite Skinning gibi daha modern alternatiflere yönelinmelidir.9
Çok fazla Raster Bin oluşması, GPU üzerinde artan state (durum) değişimleri ve artan draw call varyasyonları demek olup GPU'yu ciddi manada yavaşlatır.9 60 FPS hedeflenen bir projede (kare başına 16.66 ms), VisBuffer işleminin 4 ms'nin, BasePass işleminin ise 3 ms'nin altında tutulması şarttır; aksi takdirde post-processing, Lumen ve yapay zeka gibi diğer sistemlere süre kalmaz.7
Nanite Entegrasyonu: Projelerde Nasıl Kullanılır?
Nanite entegrasyonu, mevcut Unreal Engine oyun geliştirme iş akışlarına en az sürtünme ile dahil edilecek biçimde tasarlanmıştır. Eski nesil manuel LOD oluşturma veya normal map fırınlama süreçlerini ortadan kaldıran bu sistem, doğru ayarlandığında performansı kendiliğinden optimize eder.1

Geometri Türleri ve Desteklenen Bileşenler
Bir geometrinin Nanite yeteneklerinden faydalanabilmesi için içe aktarma (import) aşamasında veya sonrasında Statik Ağ Editörü (Static Mesh Editor) üzerinden bu özelliğin aktif edilmesi gerekir.3 Unreal Engine 5'in güncel sürümlerinde Nanite'ın desteklediği bileşen (component) türleri oldukça genişletilmiştir:
● Statik Ağlar (Static Meshes): Projeye dahil edilen herhangi bir Static Mesh, Editör içerisinden "Enable Nanite Support" seçeneği işaretlenerek dönüştürülebilir. Binlerce objelik devasa sahnelerde, Content Browser üzerinden toplu seçim (batch-enable) ile aynı anda tüm kütüphane Nanite formatına geçirilebilir.3 Nanite sisteminin temel hedef kitlesi bu ağlardır.
● İskelet Ağları (Skeletal Meshes): Erken UE5 sürümlerinde sadece statik nesneler desteklenirken, UE 5.3 ve sonrası versiyonlarda gelen Skeletal Mesh API destekleri sayesinde, dinamik olarak deforme olan (animasyonlu) karakterler, yaratıklar ve araçlar da Nanite ile kullanılabilmektedir.3 İskelet ağları için en büyük yenilik, tüm mesh için sadece tek bir çizim çağrısı (one draw call) üretilmesidir. Nanite Skeletal Mesh'ler, klasik geometri LOD'ları yerine animasyon LOD'ları kullanarak çalışır.3
● Bölünmüş Yüzeyler (Spline Meshes) ve Peyzaj (Landscape): Nanite; yol, boru hattı, duvar gibi eğriler boyunca şekil değiştiren Spline Mesh'leri ve geniş açık dünya Landscape topolojisini (Nanite Tessellation aracılığıyla) yerleşik olarak destekler.3 Zeminlerdeki ufak yer değiştirme (displacement) detayları doğrudan materyaller üzerinden, poligonal yoğunluk yaratmadan ve performansı düşürmeden elde edilebilir.3
● Örneklenmiş Ağlar (Instanced Static Meshes - ISM / HISM): Milyonlarca kopyası olan nesneler (örneğin devasa bir ormandaki taşlar veya binaların tuğlaları), Nanite'ın görünürlük tamponu sayesinde tek bir hafıza ayak iziyle render edilir. Ancak sahnede bulunabilecek maksimum Nanite örneklem (instance) sayısının donanımsal olarak 16 milyon ile sınırlandırıldığı unutulmamalıdır.3
Fallback Mesh (Yedek Ağ) Üretimi ve Rolü
Nanite verisi oluşturulurken "Build Nanite" kutucuğu işaretlendiğinde motor, yüksek detaylı ağın yanında otomatik olarak "Fallback Mesh" (Yedek Ağ) adı verilen, geleneksel poligon sayısına sahip basitleştirilmiş bir geometri türetir.13
Bu yedek ağın varlık sebebi hayati önem taşır: Nanite'ın GPU odaklı rasterizasyon sistemi, kompleks fizik çarpışma (collision) hesaplamaları, Lightmass ile önceden hesaplanmış ışık haritaları (baked lighting) ve en önemlisi donanımsal ışın izleme (hardware ray tracing / Lumen HWRT) yansımaları için doğrudan kullanılamaz.13 Oyun motorunun CPU tarafındaki mantıksal sistemleri bu geleneksel üçgen verisine ihtiyaç duyar. Yedek ağın detay seviyesi, "Fallback Relative Error" (Yedek Göreceli Hata) parametresi değiştirilerek kontrol edilebilir.3 Hata oranı düşürüldükçe yedek ağın poligon sayısı artar, bu da donanımsal ışın izleme yansımalarının (Lumen Hit Lighting) daha doğru hesaplanmasını sağlar ancak bellek (VRAM) kullanımını da aynı oranda artırır.14
Nanite Foliage: UE 5.6/5.7 ile Gelen Voksel ve Montaj (Assembly) Sistemleri
Oyun motorlarında ormanlık alanlar ve yoğun bitki örtüleri, üst üste binen çok sayıdaki şeffaf (masked) yaprak yüzeyleri nedeniyle Nanite'ın yıllardır süregelen en zayıf noktası olarak kabul edilmekteydi.15 Geleneksel çimen veya yaprak modellemesi (alpha cards), piksellerin üst üste defalarca kez değerlendirilmesine yol açan ve HW Raster'a düşen "Overdraw" sorununu yaratıyordu.8
Unreal Engine 5.6 ve özellikle 5.7 sürümleri, "Nanite Foliage" sistemiyle bu sorunu temelden ve mimari bir değişiklikle çözmüştür 12:
Nanite Voxels (Vokseller): Kameradan uzaklaşan ağaçların veya bitki örtülerinin karmaşık ve overdraw yaratan yaprak üçgenleri, "Shape Preservation" menüsünden "Voxelize" ayarı yapılarak uzakta voksellere dönüştürülür.17 Minecraft bloklarına benzeyen bu vokseller, üçgenlerin aksine hacimsel pikseller olarak işlenir, transparanlık (alpha) ihtiyacını tamamen ortadan kaldırır ve böylelikle overdraw problemini donanımsal düzeyde engeller.15 Uzaktaki yüzbinlerce ağaç, yalnızca ekran pikseli boyutunda hacimsel vokseller olarak son derece düşük bir maliyetle işlenirken, yakına gelindikçe pürüzsüzce tam detaylı mikropoligonlara geçiş yapar.15
Nanite Assemblies (Bileşenler): Devasa ağaçlar yüksek çözünürlükte modellendiğinde diskte ve bellekte inanılmaz boyutlara ulaşır. Nanite Assemblies özelliği sayesinde bir ağacın her bir dalı, yaprağı ve gövdesi ayrı bir devasa statik mesh olarak değil, USD (Universal Scene Description) içe aktarıcısı üzerinden hiyerarşik bir bütün (assembly) olarak okunur.12 Houdini Solaris gibi programlarda hazırlanan NaniteAssemblyRootAPI şemaları sayesinde, binlerce yaprak aslında aynı küçük yaprak mesh'inin instancing (örnekleme) metodu ile çağrılmış halidir.19 Bu yapı, bellek ayak izini inanılmaz derecede küçültür.
Nanite Skinning: Geleneksel WPO (World Position Offset) temelli rüzgar animasyonları her kümenin sınır kutusunu her karede değiştirerek CPU/GPU üzerinde sürekli yeniden hesaplama (culling invalidation) gerektiriyordu.15 UE 5.7'de tanıtılan Nanite Skinning ile ağaçlar birer iskelet ağ (skeletal mesh) olarak içeri alınır; fiziksel ve prosedürel rüzgar etkileri kemikler (bones) üzerinden "Dynamic Wind" eklentisi kullanılarak hesaplanır.12 Bu sayede Nanite, Raster Bins performansından ödün vermeden çok daha organik ve tutarlı rüzgar etkileşimleri sunar. Yeni Quixel Megaplants kütüphanesi ve Procedural Vegetation Editor (PVE), bu teknolojileri tam entegre olarak kullanarak 60 FPS hedeflerine kolaylıkla ulaşılmasını sağlamaktadır.15

Optimizasyon Süreçleri: Nelere Dikkat Edilmelidir?
Nanite her ne kadar performansı artırmak üzere tasarlanmış olsa da, "sınırsız poligon" vaadi sihirli bir değnek değildir. Yanlış kullanımlarda ve donanım sınırlarına uyulmadığında frame (kare) sürelerini ciddi şekilde tehlikeye atabilen karmaşık bir sistemdir.11
Şeffaflık (Translucency), Maskeleme ve Overdraw Problemi
Geleneksel oyun optimizasyonunda (UE4 ve öncesi), detaylı bir objeyi düşük poligonlu yüzeylere transparan maskeler (alpha texture / masked material) giydirerek simüle etmek standart bir yaklaşımdı.8 Ancak Nanite mimarisinde bu yaklaşım tamamen yanlıştır ve felaketle sonuçlanır.8
Nanite, görünürlük tamponunu hesaplarken şeffaf (boş) pikselleri atlamak için ekstra donanımsal geçişlere ihtiyaç duyar. Maskeli materyaller arka arkaya dizildiğinde (örneğin bir tel örgü veya ağaç yaprakları), sistem aynı pikselin derinliğini ve şeffaflığını onlarca kez okuyup işlemek zorunda kalır ki buna "Overdraw" adı verilir.10
Kritik Kural: Nanite sisteminde "geometri çok ucuzdur, ancak transparanlık çok pahalıdır". Yaprak, çit veya ağ gibi delikli objeler oluşturulurken maskeli bir doku (masked material) kullanmak yerine, şeklin etrafı gerekirse yüzbinlerce ekstra poligonla tam olarak (fully modeled) modellenmeli ve materyal kesinlikle "Opaque" olarak ayarlanmalıdır.8 Tamamen modellenmiş bir ağaç yaprağı, maskeli düz bir yüzeyden (plane) çok daha hızlı render edilecektir.8
Sanal Gölge Haritaları (Virtual Shadow Maps - VSM) Entegrasyonu
Geleneksel gölge haritaları (Cascaded Shadow Maps - CSM), Nanite objelerinin sunduğu mikropoligon düzeyindeki muazzam detay seviyesine uyum sağlayamaz. Nanite ile kullanılmak üzere özel olarak tasarlanan Virtual Shadow Maps (VSM), gölge çözünürlüğünü dinamik olarak ekran pikselleriyle eşleştirerek jilet keskinliğinde gölgeler sunar.23
VSM'lerin doğası gereği yüksek VRAM bellek gereksinimi vardır. Eğer gölge atan bir obje sürekli hareket ediyorsa (örneğin WPO ile salınan yapraklar), VSM gölge önbelleği (shadow cache) her karede geçersiz kılınır (invalidated) ve gölge haritası sıfırdan hesaplanarak ciddi bir FPS düşüşüne neden olur.22 Bu nedenle statik sahneler veya binalar Nanite ve VSM ikilisiyle mükemmel çalışırken, hareketin yoğun olduğu ormanlık alanlarda WPO kısıtlamaları getirilmeli veya performans testleri doğrultusunda klasik gölge haritalarına (Shadow Maps) geçiş değerlendirilmelidir.25
Profil Oluşturma (Profiling) ve Performans Okuma Komutları
Optimizasyon problemlerinin kök nedenini bulmak ve darboğazın işlemci mi yoksa ekran kartı mı kaynaklı olduğunu belirlemek için UE5'te sunulan dahili profil (stat) komutlarının düzenli olarak ve projenin en başından itibaren okunması (optimize early prensibi) elzemdir.26
Geliştiricilerin düzenli kullanması gereken profil komutları ve görselleştirme araçları şunlardır 28:
Profil Komutu / ModAçıklama ve Kullanım AmacıGeliştirici Aksiyonustat unitTemel darboğaz tespiti. Ekrandaki toplam süreyi "Frame" (Genel süre), "Game" (CPU oyun döngüsü), "Draw" (CPU Render hazırlığı) veya "GPU" olarak milisaniye (ms) bazında kırılımlar ile gösterir.28Eğer GPU süresi 16.66ms'yi aşıyorsa grafiksel kısıtlamalara, Game süresi aşıyorsa yapay zeka veya Blueprint Tik optimizasyonlarına yönelinmelidir.
Komut / Araçİşlev ve AçıklamaOptimizasyon Aksiyonustat gpu veya stat scenerenderingGPU içindeki spesifik render yüklerini listeler. Nanite BasePass, Lumen, Gölgeler (Shadow Depths) ve Post Process yüklerinin ne kadar zaman aldığını detaylandırır.Nanite VisBuffer 4ms'yi veya BasePass 3ms'yi aşıyorsa Raster Bins veya Overdraw kontrolü yapılmalıdır.r.nanite.showmeshdrawevents 1GPU Profiler (Ctrl+Shift+,) içerisinde hangi spesifik Nanite materyalinin ve objesinin ne kadar süre harcadığını hiyerarşik olarak inceler.Maliyetli WPO materyallerini veya transparan objeleri tespit edip izole etmek için kullanılır.NaniteStatsEkranın köşesinde "ShaderPrint" teknolojisi ile doğrudan bir arayüz çizer. Sanal gölgelerin mi yoksa birincil görüş alanının (Primary View) mı Nanite üzerinde çizim yükü oluşturduğunu canlı olarak filtreler.Konsola parametreler (primary, VirtualShadowMaps) girilerek aktif geçişlerin yükü saptanır.View Mode > Nanite Visualization > OverdrawEkranda piksellerin üst üste bindiği yoğun alanları mavi (iyi), turuncu ve kırmızı (kötü) spektrumunda renklendirir.Transparan materyallerin yoğun olduğu alanlar belirlenip tam modelleme (opaque) revizyonuna gidilir.
PlayStation 5 (PS5) I/O Mimarisi ve Nanite Akış (Streaming) İlişkisi
PlayStation 5 için oyun geliştirirken Nanite'ın potansiyelini teorik sınırlardan çıkarıp gerçek dünya performansının zirvesine taşıyan yegane faktör, konsolun devrimsel SSD depolama ve donanımsal sıkıştırma/açma (decompression) mimarisidir. Nanite'ın 128 üçgenlik kümeleri ihtiyaç anında yükleme (on-demand streaming pages) mantığı ile tasarlanmıştır ve PS5'in I/O (girdi/çıktı) hiyerarşisi bu tasarımla kusursuz bir uyum içindedir.
Kraken Donanım Sıkıştırması ve Oodle Texture Entegrasyonu
Geleneksel PC sistemlerinde ve eski nesil konsollarda (PS4, Xbox One), diskten okunan sıkıştırılmış veriler (ZLIB gibi genel amaçlı algoritmalarla) önce RAM'e alınır, ardından ana işlemci (CPU) tarafından çözülerek açılmak zorundadır. Milyarlarca poligondan oluşan Nanite kümelerinin devasa boyutları, kameranın her hareketinde saniyede gigabaytlarca (GB/s) yeni veri akışı talep ettiğinde, bu yazılımsal çözümleme (software decompression) yöntemi PC'lerde ve eski konsollarda işlemcinin kilitlenmesine, oyun mekaniklerini (yapay zeka, fizik, vb.) işleyememesine neden olur.
Sony, PS5 donanımını tasarlarken standartlara bağlı kalmamış, RAD Game Tools tarafından geliştirilen Oodle Kraken sıkıştırma algoritmasını çözebilmesi için silikon düzeyinde özel bir donanımsal kod çözücü çipi (hardware decompressor block) I/O kompleksine entegre etmiştir. Kraken, eski nesil ZLIB formatına göre verileri kayıpsız (lossless) bir biçimde %29 oranında daha küçültebilirken, dekompresyon hızı olarak 3-4 kat daha etkilidir.
PS5'in Kraken çipi, "Oodle Texture" kayıpsız formatı (BC7Prep gibi doku sıkıştırma optimizasyonları ile birlikte) kullanıldığında, SSD'nin ham 5.5 GB/s okuma hızını çarpan etkisiyle büyüterek, saniyede ortalama 8-9 GB, tepe noktasında (peak) ise saniyede 17 ila 22 GB'a varan inanılmaz bant genişliği hızlarında veri aktarımı sağlar.
CPU Darboğazının Aşılması ve Bant Genişliği Çarpanı
Bu I/O mimarisinin Nanite için anlamı çok derindir. Aşağıdaki tablo, PS5'in sıkıştırma teknolojisinin rakiplere ve eski nesillere göre ne kadar büyük bir CPU tasarrufu sağladığını özetlemektedir:
Sıkıştırma Donanımı ve Algoritma MetriğiPS4 / Önceki NesilXbox Series XPlayStation 5Temel Sıkıştırma AlgoritmasıZLIB (Yazılım odaklı)BCPack (ZLIB HW varyasyonu)Oodle Kraken + Oodle Texture (Özel HW)Maksimum Çıktı Hızı (Peak Bandwidth)~100-200 MB/s~6 GB/s (SFS ile efektif)~22 GB/sOrtalama Çıktı Hızı (Average Bandwidth)< 100 MB/s~4.8 GB/s8-9 GB/s (Oodle ile 17 GB/s)İşlemci (CPU) Eşdeğeri Performans TasarrufuCPU'ya tamamen yük bindirir~5 adet Zen 2 Çekirdeği eşdeğeri~9 adet Zen 2 Çekirdeği eşdeğeri
Bu tablo açıkça göstermektedir ki; PS5'in I/O kompleksi, geleneksel bir bilgisayarda verileri SSD'den açmak için tam 9 adet bağımsız Zen 2 işlemci çekirdeğinin harcayacağı eforu tek başına üstlenmektedir.
Nanite her bir karede (16 ms içerisinde) kameranın yeni bakış açısına göre diskten on binlerce yeni küme (streaming pages) talep ettiğinde, SSD'den okunan bu veriler donanımsal Kraken çipi üzerinden CPU'yu tamamen baypas ederek direkt olarak RAM ve GPU havuzlarına beslenir. Oyun geliştiricileri, verilerin "zamanında yetişememesi" (pop-in) korkusu olmadan Nanite'ın "Virtual Texturing for Geometry" (Geometri için sanal doku) felsefesini sonuna kadar kullanabilirler. Epic Games mühendisleri, bu devasa potansiyeli gördüklerinden, PS5'in bu benzersiz I/O yapısı için Unreal Engine 5'in çekirdek yükleme alt sistemlerini (core I/O subsystems) PS5'e özel olarak sıfırdan yeniden yazmışlardır.
VRAM Yönetimi ve Streaming Pool Optimizasyonu
PlayStation 5, 16 GB kapasiteli süper hızlı, birleştirilmiş (unified) bir GDDR6 belleğe sahiptir. Ancak PC mimarilerinden farklı olarak konsollarda bellek sınırları katı ve esnek olmayan (fixed memory) yapıdadır; sanal bellek taşmaları tolere edilemez ve sistemin doğrudan çökmesine (OOM - Out of Memory) neden olur.
Nanite'ın kullandığı bellek havuzları (streaming pool) ekran çözünürlüğüne bağlı olarak geometrik biçimde büyür. Nanite, üçgen kimliklerini saklamak için ekran boyutuyla doğru orantılı bir görünürlük tamponu kullanır. Çözünürlük 1080p'den 4K'ya çıktığında (piksel sayısı dört kat arttığı için), Visibility Buffer'ın VRAM ihtiyacı da doğrudan 4 katına çıkar.
PS5 projelerinde optimizasyonu sağlamak ve VRAM'i yönetmek için "Nanite Streaming Pool" boyutu geliştirici tarafından sınırlandırılmalıdır. Varsayılan havuz boyutu boş projelerde 512 MB civarı seyrederken, Nanite ağırlıklı bir AAA projede komut satırında veya .ini dosyalarında (örneğin DefaultEngine.ini içerisinde ``) şu parametre yapılandırılmalıdır:
r.Nanite.Streaming.StreamingPoolSize = 2048
(Sahnenin ağırlığına ve diğer sistemlere göre 2000-3000 MB civarı). Eğer bu havuz bütçesi çok dar tutulursa uzaktaki objelerin yüksek detaylı kümeleri zamanında yüklenemez ve Nanite fallback modellerine düşer; çok geniş tutulursa Lumen yüzey önbelleklerine (Surface Cache), yüksek çözünürlüklü dokulara ve işletim sistemine RAM kalmaz. Geliştiriciler UE 5.7 ile birlikte konsol sınırlarını (genellikle 2-4 GB aşımı) aşan StreamingPoolSize durumlarında uyarı sistemi devreye gireceğini göreceklerdir.
PlayStation 5 Geliştirme Gereksinimleri ve Konsol Konfigürasyonları
Unreal Engine 5 ile PS5 platformuna geliştirme süreci, Epic Games ve Sony'nin yakın çalışmaları sonucu oldukça rafine hale gelse de, projenin derlenebilmesi ve optimum hızda çalışabilmesi için spesifik yazılım geliştirme kiti (SDK) ve sistem konfigürasyonlarına uyulması zorunludur.
SDK Sürümleri ve Derleyici (Compiler) Bayrakları
Unreal Engine'in güncel 5.6 ve 5.7 sürümleriyle PS5 donanımında build (derleme) alırken dikkat edilmesi gereken donanım ve yazılım kütüphanesi gereksinimleri şunlardır:
Desteklenen SDK ve Sistem Sürümleri: PS5 geliştirme ortamı için temel gereksinim "Prospero SDK 11.00.00.40" (veya gelişmiş depolama sistemleri için SDK 12) ve "Sistem Yazılımı 11.00.00.43" olarak belirlenmiştir. Proje yapılandırmasında (IntlNetwork SDK veya Interhaptics gibi üçüncü parti eklentilerle çalışırken) sürüm uyuşmazlıkları çökme sebebidir.
Derleyici (Compiler) Konfigürasyonu: Derleme işlemleri sırasında Sony'nin kendi araç zincirine ek olarak clang-cl kullanılmaktadır. Clang 19 üzerindeki tanımsız davranışları (undefined behavior) ve NaN (Not a Number) hatalarını engellemek için kaynak kodlar artık mecburi olarak -fhonor-nans bayrağı ile derlenmektedir. Ayrıca geçmişte platformlar arası sorun yaratan -ffp-contract=off parametresi, -ffast-math ile çakıştığı için PS5 derleyicisinden kaldırılmıştır.
Standart Kütüphane (Stdlib) Geçişi: UE 5.7 ile birlikte PS5 için C++20 Standart Kütüphanesi (stdlib v2) desteği eklenmiştir. Geliştiricilerin geleceğe dönük uyumluluk ve performans artışı için UEBuildPS5.cs veya BuildConfiguration.xml konfigürasyon dosyaları üzerinden StandardLibVersion = 'v2' ataması yapmaları şiddetle tavsiye edilir.
Sistem Optimizasyon Ayarları: GPU üzerindeki örnekleyici (sampler) durumlarının birikmesini engellemek için AgcRHI mimarisinde yeni bir LRU (Least Recently Used) önbellek sistemi getirilmiştir. Bu limit varsayılan olarak r.Agc.MaxSamplerStates 4096 olarak konfigüre edilmiştir.
60 FPS Hedefi İçin Ölçeklenebilirlik (Scalability) Profilleri
UE5, PS5 ve Xbox Series X konsollarında varsayılan "Epic" kalite seviyesinde 30 FPS hedefine (kare başına 33.3ms) göre yapılandırılmıştır. Işın izleme ve devasa poligon yükü altındaki modern oyunlarda 60 FPS (kare başına 16.6ms) hedeflemek, Nanite ve Lumen'in render çözünürlüğü ve kalitesi üzerinde bilinçli fedakarlıklar yapılmasını gerektirir.
PS5'te bir oyunu akıcı bir 60 FPS deneyimiyle piyasaya sürmek isteyen stüdyoların, motorun donanım düzeyindeki DeviceProfiles.ini ayarlarında Lumen Küresel Aydınlatma (GI) ve yansıma sistemlerinin kalitesini 60 FPS'e adapte edecek "High" skalasına düşürmeleri gerekir. Bu profilde oyun, Temporal Super Resolution (TSR) ile upscale (büyütme) edilmeden önce dahili olarak (internal resolution) 1080p veya 1440p civarında render edilir.
Oyun dizini içerisindeki [ProjectName]\Platforms\PS5\Config\PS5DeviceProfiles.ini dosyasına doğrudan şu yapılandırma bloğu eklenmelidir:
; Set Lumen GI and reflection quality to High, targeting 60 fps console budget
+CVars=sg.GlobalIlluminationQuality=2
+CVars=sg.ReflectionQuality=2
Bu konfigürasyon, Lumen'in hesaplama ağırlığını konsolun sınırlarına çekerek Nanite ile işlenen milyonlarca poligona kare başına 16.66ms içinde nefes alma payı bırakır. Ek olarak Nanite performansını artırmak için TSR'nin ince geometri algılama (Thin Geometry detection) yeteneklerinin aktif tutulması önemlidir.
Lumen ve Nanite Senkronizasyonu İçin PS5 Özel İyileştirmeleri
Nanite sistemi tek başına yalnızca statik geometrik çizimden sorumludur; ancak oyunun görsel kalitesini belirleyen şey Nanite yüzeyleri üzerinden seken ve fotogerçekçi gölgeler oluşturan Global Illumination (Küresel Aydınlatma) sistemi olan Lumen'dir. Her iki sistem birleştiğinde PS5 donanımı limitlerine kadar zorlanır.
Lumen, iki çalışma moduna sahiptir: Mesafeli alanları (Distance Fields) kullanan Yazılım Işın İzlemesi (SWRT) ve doğrudan üçgenleri hesaplayan Donanım Işın İzlemesi (HWRT). Nanite, sahip olduğu karmaşık geometriyi HWRT mekanizmasına daha önce belirtilen Yedek Ağlar (Fallback Meshes) vasıtasıyla besler. Eski nesil motor versiyonlarında 60 FPS için mecburen SWRT tavsiye edilirken, Unreal Engine 5.6 ve 5.7 sürümlerinde konsol donanımlarını (özellikle PS5'in AMD RDNA2 tabanlı RT çekirdeklerini) rahatlatacak köklü HWRT geliştirmeleri yapılmıştır:
1. ShortRangeAO Optimizasyonu: Yakın mesafe çevresel perdeleme (Ambient Occlusion) hesaplamaları, yeni bir parazit giderici (denoiser) yardımıyla artık yarı çözünürlükte (half resolution) koşturulmaktadır. Bu işlem, konsollarda bu geçişin tam iki kat daha hızlı olmasını sağlar. 49
2. Far Field (Uzak Alan) Occlusion Only Modu: Dev açık dünyalarda, World Partition sistemiyle yüklenen çok uzaktaki Nanite objelerinden gelen sekme hesaplamaları sistemi boğabilir. Yeni r.LumenScene.FarField.OcclusionOnly 1 komutu kullanılarak PS5 üzerinde Lumen'in uzak alan performansı %50 oranında hızlandırılır. 49
3. Downsampled Screen Probe Gather: Çevre aydınlatmasını ekrana yansıtan Probe Gather geçişinde, pikseller arasındaki integrasyon örnekleme oranının düşürülmesi (r.Lumen.ScreenProbeGather.IntegrateDownsampleFactor) PS5 üzerinde 1080p render senaryosunda 0.3-0.5 ms zaman kazandırır. 20 Detaylarda bir miktar yumuşama görülse de 60Hz bütçesi için bu takas son derece idealdir.
4. Shader Execution Reordering (SER): HitLighting ve ışın izlemeli şeffaflık (ray-traced translucency) kullanan ve çok sayıda farklı materyale sahip olan karmaşık sahnelerde, donanım düzeyinde komutların yeniden sıralanması işlemini devreye sokan r.Lumen.HardwareRayTracing.ShaderExecutionReordering komutu desteklenen RHI birimlerinde hızlanma sağlar. 49
Geliştirici, sahnesindeki yüksek Nanite optimizasyonlarına rağmen PS5'in render limitlerine çarpıyorsa, "stat gpu" profiliyle HWRT maliyetini ölçmeli ve gerektiğinde gölge hesaplamalarını daha ucuza getirmek için yönsel ışıklarda Virtual Shadow Maps (VSM) yerine klasik Shadow Maps'e dönüş senaryosunu projenin erken safhalarında (optimize early) test etmelidir. 25
Stratejik Sonuç ve Geliştirici Önerileri
Yapılan derinlemesine analizler doğrultusunda, Unreal Engine 5'in Nanite mimarisi; modern GPU compute shader yeteneklerini, donanımsal ışın izleme entegrasyonunu ve yeni nesil veri sıkıştırma algoritmalarını harmanlayarak bilgisayar grafikleri endüstrisinde gerçek bir devrim yaratmaktadır. Poligon sayılarını ve draw call darboğazlarını artık bir engel olmaktan çıkaran bu teknoloji, beraberinde farklı iş akışları (Assemblies, Voxelization) ve katı bellek bütçe disiplinleri (Streaming Pools) getirmektedir.
PlayStation 5 platformunda oyun geliştirecek teknik sanatçıların (Technical Artists) ve mühendislerin (Engine Programmers) dikkate alması gereken en temel stratejik bulgular şunlardır:
1. I/O Avantajını Doğru ve Sınırlarda Kullanmak: PS5'in benzersiz Kraken donanım dekompresörü, SSD üzerinden inanılmaz bir I/O bant genişliği sağlar. Geliştiricilerin Nanite akışını kısıtlayıcı eski nesil manuel LOD stratejilerinden uzaklaşıp, doğrudan film kalitesindeki orijinal ağ (source mesh) kullanımına yönelmeleri sistemin doğal akışına daha uygundur.
2. Transparanlık ve Overdraw Maliyetlerinden Kaçınmak: Nanite'ın zayıf karnı olan WPO (World Position Offset) tabanlı animasyonlar ve Alpha Mask/Cutout kullanımı, özellikle bitki örtülerinde performans katilidir. UE 5.6 ve 5.7 ile sunulan Nanite Voxels, Nanite Assemblies ve Nanite Skinning özellikleri, PS5'te 60 FPS açık dünya hedeflerinde geleneksel çimen modellemesinin yerine anahtar yöntem olarak benimsenmelidir. Model optimizasyonu yerine, yüksek poligonlu ancak pürüzsüz "Opaque" geometrilere yönelim şarttır.
3. Hassas VRAM Bütçelemesi Yapmak: PS5'in sabit bellek yapısı, Nanite görünürlük kimlikleri (Visibility Buffer) ve Lumen yüzey önbellekleri tarafından hızla tüketilebilir. StreamingPoolSize sınırları titizlikle oluşturulmalı ve 4K doğal render ölçeklemesi yerine Temporal Super Resolution (TSR) eşliğinde 1080p ila 1440p dahili çözünürlük hedefleri, yüksek görsel kalite ile kararlı kare hızını sentezlemek için kullanılmalıdır.
4. Düzenli ve Erken Profil Analizi (Optimize Early): Geliştirme sürecinin sonunu beklemeden stat gpu, stat unit ve NaniteStats profilleme araçları aktif bir şekilde takip edilmelidir. Sorunlu Raster Bins yaratan materyal kurguları tespit edilip birleştirilerek CPU ve GPU arasındaki state değişikliği minimuma çekilmelidir.
Nanite, sihirli bir performans artırıcı değnek değildir; aksine yetenekleri doğru kullanıldığında vizyonu kısıtlamayan, kurallarına uyulmadığında (örneğin aşırı maskeli materyal kullanımıyla) ise donanım engellerine sertçe çarpan çok güçlü bir ekosistemdir. PS5 donanımının özel I/O mimarisi ile Unreal Engine 5'in render inovasyonları senkronize bir şekilde çalıştığında, interaktif medyanın görsel ve hacimsel sınırları eşi görülmemiş bir biçimde genişlemektedir.
*Bilgi : Görseller, Google Gemini Tarafından Üretilmiştir.
