Açık ortamı ve çok fazla statik içeriğe sahip modern AAA oyunlarında (örneğin: crysis), oklüzyon ayıklaması nasıl yapılır?


19

Aklımda iki fikir var:

1) Sahne, düşük çözünürlüklü ve düşük poligon sayısı modelleri (veya yalnızca küpler veya küreler gibi sınırlayıcı hacimler kullanılarak) kullanılarak görünmez bir tampona oluşturulur. Ardından, neyin görünür olup olmadığını öğrenmek için tampon kontrol edilir. Düşük çözünürlüklü sahneyi oluşturmadan önce, mümkün olduğunca çok nesneyi kaldırmak için bazı frustum ayıklama uygulanabilir.

2) Statik haritada bir araç çalıştırılır ve neyin görünür ve neyin görünmediğini harita üzerinde bazı 3B konumları için karmaşık (ve dolayısıyla yavaş) ışın izleme gerçekleştirir. Tüm bu bilgiler daha sonra çalışma zamanında kullanıcı olabilecek etkili bir şekilde saklanır (örneğin: bir oktree) Bu çözüm yalnızca hareketli nesneler (örneğin: bina) için hareketli nesneler için kullanılabilir.


3
"Oyun <X> bunu nasıl yaptı?" Soruları SSS'ye göre açıkça konu dışı . Belki bu soruyu , başkasının nasıl yaptığını değil, nasıl oklüzyon ayıklama yapabileceğinizi soracak şekilde düzenleyin ? (Ayrıca, sorunun cevabına kendi cevaplarınızı vermek , bir cevaptan ziyade bir tartışma veya liste istediğinizi hissettirir )
Trevor Powell

Yanıtlar:


13

Jovan'ın cevabı harika, ama sadece "Bu geometri aslında herhangi bir piksel oluşturdu mu?" Sorusunu sormak için bazen donanım desteği olduğunu eklemek istiyordu. (fikriniz # 1) Bunlara oklüzyon sorguları denir - bunlar burada onlar hakkında iyi bir GPU Gems makalesi

Görünmez bir ara belleğe ihtiyacınız olmadığı ve bu arabellek denetiminden daha verimli veya basit olabileceği dışında, bu # 1 fikrinize oldukça benzer. Bağlantılı makale, donanım tıkanıklığı sorgularının nasıl çalıştığı konusunda derinlemesine ilerleyen harika bir iş çıkarır.

Unreal Engine , görüntüleme frustum ayıklaması ve hangi statik geometrinin tıkandığını önceden hesaplama gibi diğer tekniklere ek olarak, onu destekleyen platformlarda donanım tıkanıklığı sorgularından yararlanır .


Donanım tıkanıklığı sorguları aslında bu günlerde "bazen" den biraz daha yaygındır - bazı mobil GPU'ların olası istisnası dışında bunlar her yerde bulunabilir.
Maximus Minimus

çok yavaş değiller mi?
Quonux

12

1) Sahne, düşük çözünürlüklü ve düşük poligon sayısı modelleri (veya yalnızca küpler veya küreler gibi sınırlayıcı hacimler kullanılarak) kullanılarak görünmez bir tampona oluşturulur. Ardından, neyin görünür olup olmadığını öğrenmek için tampon kontrol edilir. Düşük çözünürlüklü sahneyi oluşturmadan önce, mümkün olduğunca çok nesneyi kaldırmak için bazı frustum ayıklama uygulanabilir.

Bu teknik Killzone tarafından kullanılır ve PS3'te Pratik Oklüzyon Ayıklaması sunumlarında detaylandırılmıştır . Ayrıca iç mekanlar için portallar kullanırlar .

Büyük açık hava haritaları hakkında akılda tutulması gereken bir şey, mesh basitleştirmenin oklüzyon ayıklaması kadar önemli olmasıdır, bu nedenle geometri klipslemeli yükseklik alanlarının bazı varyasyonları sıklıkla kullanılır. İşte ayıklamayı da kapsayan iyi bir kağıt . GPU Gems 2'nin bir uygulaması var .


5

En azından ilk iki Quake oyunu strateji 2'yi kullandı; İdTech motorlarının hala kullanıp kullanmadığını bilmiyorum. Ulaşılabilir dünya, bir ağaç veri yapısında ("ikili boşluk bölümü") düzenlenmiş dışbükey boşluklara bölünür ve ağaçtaki her düğüm için, o düğümden hangi düğümlerin görünür olduğunu gösteren bir bit vektörü vardır ("potansiyel olarak görünür küme").


1
Quake'i getirecekseniz, Hırsız'ın render teknolojisini de getirebilirsiniz;) - nothings.org/gamedev/thief_rendering.html
Jovan
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.