Modern oyun motorlarında yazılım rasterleştirmesinin kullanım alanları nelerdir?


9

Bu çeyrekte Bilgisayar Grafikleri dersi alıyorum. Laboratuar projemizden biri yazılım rasterleştirme ile ilgilidir.

Şimdi proje teklifini planlıyorum ve çağdaş oyun geliştirmede diğer insanlar için nasıl yararlı hale getireceğimi düşünüyorum.

Kısa bir araştırmadan sonra, Yazılım Tıkanıklığı Kaldırma adlı bir teknik öğrendim. Çeşitli çözünürlüklerde tamponlar üzerinde yazılım rasterleştirmesi yapar. Hiyerarşik z tamponlarını kullanarak tıkanıklığı sorgulayabiliriz.

Benim sorum : Modern oyun motorlarında Yazılım Tıkanıklığı Kaldırma dışında yazılım rasterleştirme kullanımları nelerdir ?

Yanıtlar:


4

Bildiğim kadarıyla , yazılım tıkanıklığı (zaten bahsettiğiniz), bir yazılım rasterleştiricisinin hala kullanacağı tek şeydir. Procworld , büyük voksel ortamlarını göstermek için benzer bir teknik kullanır.

Frustum culling gibi diğer culling yöntemlerinin çoğu CPU üzerinde çalışır, ancak örneğe bağlı kalmak için, frustum'a karşı test, nesne ekseninde, muhtemelen eksene hizalanmış bir sınırlama kutusuyla (AABB) gerçekleşir. Bu kavşak testi, tam gelişmiş bir yazılım rasterleştiricisinden çok daha basittir.

Bazı durumlarda, nesnelerin fare ile toplanması için yazılım rasterleştirmesi kullanılabilir. Oyun motorlarında, bu genellikle bir fizik motoru ve basitleştirilmiş bir kafes ile ışın-üçgen çarpışması kullanılarak çözülür.

Modern interaktif 3D uygulamalarında GPU'yu beklerken CPU boşta iken, bir yazılım rasterizatörü kullanarak CPU üzerinde işlem yapmak için bu boş döngüleri kullanmanın yararlı olabileceğini düşünebilirsiniz. Buradaki sorun, renderın korkunç derecede karmaşık ve kıvrımlı olmasının yanı sıra, genellikle bant genişliği olacaktır. CPU üzerinde oluşturulan görüntülerin görüntülenmeden önce GPU'ya aktarılması gerekir, bu da avantajı iptal edebilir.


0

"Savaş sisi" kavramına sahip oyunlar genellikle her bir yerde savaş sisinin durumunu tanımlamak için bir görünürlük ızgarasına sahiptir. Rasterleştirme bazen ızgaradaki belirli şekiller için savaş durumunun sisini değiştirmek için kullanılır.

Örneğin, haritanın bir çevresini belirli bir yarıçapa veya belki de bir kareyi ortaya çıkaran bir şeye gösteren bir yetenek kullanarak.

Kesinlikle grafikler ile ilgili değil, ama modern oyunlarda kesinlikle rasterleştirme kullanımı ve RTS'lerde kullanılan bir teknik.

Oyunlardaki diğer ızgara tabanlı veriler benzer durumlar için rasterleştirmeyi kullanabilir.


-2

Rasterleştirme birçok parça ile büyük bir konudur ve ben motor programcısı değilim, ama bir tür genel bakış sunmak için elimden geleni yapacağım (bu tam bir listeden çok uzak olacak!).

Bazı çok temel, düşük düzey şeyler şunları içerir:

  • Frustrum culling: her şeyi kameranın hayal kırıklığının dışına atar (kameranın görüş alanı olarak düşünün).
  • Arka yüz kaldırma: kameraya yönlendirmeyen her çokgeni atın.
  • Ressamın algoritması: Nesneleri kameraya olan mesafelerine göre çizin, uzaktaki nesnelerle başlayın, sonra kameraya doğru gidin.

Oyunlarda kullanılan daha gelişmiş şeyler şunları içerir:

  • Tesselation : aslında LOD'a çok benziyor (aşağıya bakın), ancak şimdi en son DirectX Sürümleri otomatik mesh bölünmesi veya azalması sağlayan tesselasyonu tanıttı. Bu, grafik performansında büyük bir artış sağlar, çünkü onlara ihtiyacınız varsa polileri alabilir ve artık istemiyorsanız onlardan kurtulabilirsiniz.
  • LOD : Bir ayrıntı düzeyi sistemi, nesne ile kamera arasındaki mesafeye göre bir nesnenin ağının yerini alır. örneğin, karakteriniz üç ağa sahiptir: biri 10.000, biri 5.000 ve diğeri 1000 polidir. tam önünde durursanız, yüksek çözünürlüklü örgü (10.000 polis) gösterilir, uzaklaşırsanız, 100m'den sonra karakter orta örgü ile değiştirilir ve 100m'den sonra düşük çözünürlüklü örgü ile değiştirilir. Mesh'i değiştirmek yerine azaltabilirsiniz, ancak bu kodlamak daha karmaşık olacaktır.
  • ikili boşluk bölümleri : boşluk iki birime bölünür. bu, hedefinize ulaşana kadar tekrarlanır, örneğin boşluk yalnızca ekranda çizilmesi gereken polisleri içerene kadar
  • Portallar ve hücreler : (diğer adıyla Portal kaldırma) iç mekan sahnelerinde ve / veya birinci şahıs nişancılarda kullanılır. Sahne, bağlantılı kapılar (örn. Kapılar) olan hücrelere (örn. Bir binanın odaları) ayrılmıştır. portalları açık ve kapalı olacak şekilde ayarlayabilirsiniz.

Grafik boru hattı hakkında temel bir anlayışa sahip olduğunuzu varsayarsak, rasterleştirmeye odaklanmaya çalıştım. ayrıca aydınlatma ve gölgeleme veya diğer şeylere de bakabilirsiniz.

Bunlar, projenize dahil etmek için sadece birkaç olası teknolojiyi içerir. stackexchange üzerinde yeterli itibara sahip olmadığım için birçok bağlantı sağlayamıyorum, ancak tüm bu şeyleri google'da bulacaksınız :)


2
Soru, yazılım (okuma: CPU) rasterleştirmesi ile ilgilidir. Verdiğiniz bazı bilgiler genel olarak rasterleştirme ile ilgilidir, bazı tekniklerin - kitabımda - rasterleştirme ile hiçbir ilgisi yoktur. Cevabınızda tekniklerin yazılım rasterleştirmesinden nasıl yararlandığını veya faydalandığını açıklığa kavuşturabilir misiniz?
David Kuri
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.