Gerçek zamanlı grafikler, dolaylı aydınlatmayı simüle etme, çalışma zamanı performansı ve aydınlatma sadakati arasında işlem yapma hesaplama maliyetiyle başa çıkmak için çeşitli yaklaşımlar kullanır. Bu, her yıl yeni tekniklerin ortaya çıktığı aktif bir araştırma alanıdır.
Ortam ışıklandırması
Serinin en basit ucunda, ortam aydınlatmasını kullanabilirsiniz : gerçek ışık kaynakları veya yerel görünürlük dikkate alınmadan, sahnedeki her nesne için geçerli olan küresel, çok yönlü bir ışık kaynağı. Bu hiç de doğru değil, ancak bir sanatçının ince ayar yapması son derece ucuz, kolaydır ve sahneye ve istenen görsel stile bağlı olarak iyi görünebilir.
Temel ortam aydınlatmasının ortak uzantıları şunları içerir:
- Ortam rengini, örneğin küresel harmonikler (SH) veya küçük bir kübemap kullanarak ve her tepe noktasının veya pikselin normal vektörüne göre bir gölgelendiricide bakarak yönüne göre değişir . Bu, doğrudan ışığın ulaşmadığı yerlerde bile, farklı yönelimlerdeki yüzeyler arasında bir miktar görsel farklılaşmaya izin verir.
- Önceden hesaplanmış köşe AO, AO doku haritaları, AO alanları ve ekran alanı AO (SSAO) dahil olmak üzere ortam tıkanıklığı (AO) tekniklerini uygulayın . Bunların tümü, dolaylı ışığın sıçramaya daha az meyilli olduğu delikler ve çatlaklar gibi alanları tespit etmeye çalışarak ve oradaki ortam ışığını karartarak çalışır.
- Ortam speküler yansıması sağlamak için bir ortam küp haritası ekleyin . İyi bir çözünürlüğe sahip bir yüz haritası (yüz başına 128² veya 256²) kavisli, parlak yüzeylerde speküler olarak oldukça ikna edici olabilir.
Pişmiş dolaylı aydınlatma
Bir sonraki "seviye", tabiri caizse, teknikler, bir sahnede dolaylı aydınlatmanın bazı temsillerini pişirmeyi (çevrimdışı hesaplama öncesi) içerir. Pişirmenin avantajı, gerçek zamanlı küçük hesaplama masrafları için oldukça yüksek kaliteli sonuçlar elde edebilmenizdir, çünkü tüm sert parçalar fırında yapılır. Değiş tokuşlar, pişirme işlemi için gereken sürenin seviye tasarımcılarının iterasyon oranına zarar vermesidir; önceden hesaplanan verileri depolamak için daha fazla bellek ve disk alanı gerekir; gerçek zamanlı olarak aydınlatmayı değiştirme yeteneği çok sınırlıdır; ve pişirme işlemi yalnızca statik düzey geometrisinden gelen bilgileri kullanabilir, bu nedenle karakterler gibi dinamik nesnelerden dolaylı ışık efektleri kaçırılır. Yine de, pişmiş aydınlatma bugün AAA oyunlarında çok yaygın olarak kullanılmaktadır.
Pişirme adımı, yol izleme, radyoloji veya oyun motorunun kendisini kullanarak küp haritaları (veya hemiküpleri ) kullanarak istenen oluşturma algoritmasını kullanabilir .
Sonuçlar , seviyedeki statik geometriye uygulanan dokularda ( ışık haritaları ) saklanabilir ve / veya ayrıca SH'ye dönüştürülebilir ve ışınım hacimleri (her bir texelin bir SH probunu sakladığı hacim dokuları) gibi hacimsel veri yapılarında saklanabilir. veya tetrahedral ağlar . Daha sonra, bu veri yapısındaki renkleri aramak ve enterpolasyon yapmak ve bunları oluşturulmuş geometrinize uygulamak için gölgelendiricileri kullanabilirsiniz. Hacimsel yaklaşım, fırınlanmış aydınlatmanın dinamik nesnelere ve statik geometriye uygulanmasına izin verir.
Işık haritalarının vb. Uzamsal çözünürlüğü bellek ve diğer pratik kısıtlamalarla sınırlı olacaktır, bu nedenle pişmiş aydınlatmanın sağlayamayacağı yüksek frekanslı ayrıntı eklemek ve dinamik nesnelere yanıt vermek için pişmiş aydınlatmayı bazı AO teknikleriyle tamamlayabilirsiniz. (dolaylı ışığı hareketli bir karakter veya araç altında karartmak gibi).
Ayrıca , daha dinamik aydınlatma koşullarını ele almak için pişirmeyi genişleten önceden hesaplanmış radyasyon transferi (PRT) adı verilen bir teknik de vardır . PRT'de, dolaylı aydınlatmanın kendisini pişirmek yerine, aktarım işlevini sahnede ortaya çıkan dolaylı aydınlatmaya (genellikle gökyüzü) bir ışık kaynağından pişirirsiniz. Transfer fonksiyonu, her bir fırın numune noktasında kaynaktan hedef SH katsayılarına dönüşen bir matris olarak temsil edilir. Bu, aydınlatma ortamının değiştirilmesine izin verir ve sahnedeki dolaylı aydınlatma makul bir şekilde yanıt verir. Far Cry 3 ve 4, bu tekniği sürekli bir gündüz-gece döngüsüne izin vermek için kullandı , dolaylı aydınlatma, günün her saatinde gökyüzü renklerine göre değişti.
Pişirme ile ilgili bir diğer nokta: dağınık ve speküler dolaylı aydınlatma için ayrı pişmiş verilere sahip olmak yararlı olabilir. Cubemaps speküler için SH'den çok daha iyi çalışır (çünkü cubemaps çok daha açısal detaylara sahip olabilir), ancak çok daha fazla bellek kaplarlar, bu yüzden onları SH örnekleri kadar yoğun yerleştiremezsiniz. Paralaks düzeltmesi , kübemapın yansımalarını etrafındaki geometriye daha fazla topraklanmış hissetmesi için sezgisel olarak çarpıtarak bunu telafi etmek için kullanılabilir.
Tamamen gerçek zamanlı teknikler
Son olarak, GPU üzerinde tamamen dinamik dolaylı aydınlatma hesaplamak mümkündür. Aydınlatma veya geometrinin keyfi değişikliklerine gerçek zamanlı olarak yanıt verebilir. Bununla birlikte, yine çalışma zamanı performansı, aydınlatma doğruluğu ve sahne boyutu arasında bir denge vardır. Bu tekniklerin bazılarının çalışması için çok iyi bir GPU gerekir ve yalnızca sınırlı sahne boyutları için uygun olabilir. Ayrıca, genellikle sadece bir tek dolaylı ışık sıçramasını destekler.
- Cubemap'in yüzlerinin, seçilen bir nokta etrafında kümelenmiş altı kamera kullanılarak her kareyi yeniden oluşturulduğu dinamik bir ortam kübapası, tek bir nesne için oldukça iyi ortam yansımaları sağlayabilir. Bu, örneğin yarış oyunlarındaki oyuncu arabası için kullanılır.
- Ekran alanı küresel aydınlatması , işleme sonrası bir geçişte ekrandaki yakındaki piksellerden gelen sekme aydınlatmasını toplayan SSAO'nun bir uzantısı.
- Ekran boşluğu ışınlı yansıma , bir geçiş sonrası derinlik tamponunda ışın yürüyüşü ile çalışır. Yansıtılan nesneler ekranda olduğu sürece oldukça yüksek kaliteli yansımalar sağlayabilir.
- Anlık radyasyon, CPU'yu kullanarak sahneye ışınları takip ederek ve her ışın isabet noktasına bir nokta ışığı yerleştirerek çalışır; Sanal nokta ışıkları (VPL) olarak bilinen bu birçok ışık GPU tarafından her zamanki gibi oluşturulur.
- Yansıtıcı gölge haritaları (RSM'ler) anlık radyiteye benzer, ancak VPL'ler sahneyi ışığın bakış açısından (gölge haritası gibi) oluşturarak ve bu haritanın her pikseline bir VPL yerleştirerek oluşturulur.
- Işık yayılım hacimleri , sahne boyunca yerleştirilen SH problarının 3D ızgaralarından oluşur. RSM'ler yansıtıcı yüzeylere en yakın SH problarına sıçrama ışığı "enjekte etmek" için oluşturulur ve kullanılır. Daha sonra taşkın dolgu benzeri bir işlem, her SH probundan gelen ışığı ızgaradaki çevre noktalara yayar ve bunun sonucu sahneye aydınlatma uygulamak için kullanılır. Bu teknik hacimsel ışık saçılımına da genişletilmiştir .
- Voksel koni izleme , sahne geometrisini vokselleştirerek (muhtemelen değişen voksel çözünürlükleri kullanarak, kameranın yakınında daha ince ve daha kalın), ardından RSM'lerden voksel ızgarasına ışık enjekte ederek çalışır. Ana sahneyi oluştururken, piksel gölgelendirici, difüz veya speküler gölgeleme için gelen ışığı toplamak üzere voksel ızgarası boyunca giderek artan yarıçaplı bir ışın yürüyüşü "koni izi" gerçekleştirir.
Bu tekniklerin çoğu, gerçekçi sahne boyutlarına kadar ölçekleme sorunları veya diğer sınırlamalar nedeniyle günümüzde oyunlarda yaygın olarak kullanılmamaktadır. Bunun istisnası, çok popüler olan ekran alanı yansımasıdır (ancak ekran alanı parçasının başarısız olduğu bölgeler için genellikle bir yedek olarak cubemaps ile kullanılır).
Gördüğünüz gibi, gerçek zamanlı dolaylı aydınlatma büyük bir konudur ve bu (oldukça uzun!) Cevap bile daha fazla okuma için sadece 10.000 fit genel bakış ve bağlam sağlayabilir. Hangi yaklaşım sizin için en iyisidir, büyük ölçüde uygulamanızın ayrıntılarına, hangi kısıtlamaları kabul etmek istediğinize ve ne kadar zaman ayırmanız gerektiğine bağlı olacaktır.