Işın izleme yükseklik alanları için en son teknoloji algoritması nedir?


16

Yıllar boyunca bir ışın izleyicide yükseklik-alan arazisi çizmek için farklı teknikler üzerine çok sayıda makale olmuştur. Bazı algoritmalar ızgarayı doğrudan ışınla yürütebilir (veya bir dörtlü yoluyla); diğerleri araziyi çokgen örgüye dönüştürür ve standart ışın-üçgen kavşak testi kullanır. Araştırma son birkaç yıldır devam ediyor gibi görünüyor ve son on yılda yazılmış kağıtları bulmak zor, ancak bellek ve hesaplama (CPU ve GPU) arasındaki denge hala değişiyor.

Ne tür bir algoritma günümüzde ileri teknoloji masaüstü makinelerde en iyi performansı veriyor? Veya tek bir cevap yoksa, mevcut en iyi algoritmaların performans özellikleri arasındaki farklar nelerdir?


Ekran alanı yansımaları: derinlik ve çerçeve arabelleğini kullanarak bir yükseklik alanı oluşturun, ham yansımaları elde etmek için ışın izini kullanın. Ayrıntıları bilmiyorum, ama Crysis, Killzone, son zamanlarda Frostbite vb. Buna baktın mı?
David Kuri

1
@DavidKuri Teşekkürler, bu, çekirdek ışın yürüyüşünün nasıl hızlı bir şekilde elde edileceği için iyi bir işaretçi. Önceden hesaplama mipmap'ları veya min-max dörtlü gibi ekran alanı izlemesinde çok iyi çalışmayan daha statik bir yükseklik alanı için birçok optimizasyon mümkün olmalı, bu yüzden hala bir cevap bekliyorum bunu kapsar.
Dan Hulme

Hey Dan BTW CPU veya GPU çözümleri mi arıyorsunuz? Ve gerçek zamanlı veya gerçek zamanlı olmayan oluşturma?
Alan Wolfe

@AlanWolfe Kullanımım GPU ve gerçek zamanlı değil (yani 16 ms'de yönetebileceğiniz en iyi görüntü kalitesinden ziyade maksimum verim), ancak yine de CPU'da veya öncelikle etkileşimli oluşturucular için hızlı olan ilginç cevapları vurguluyorum.
Dan Hulme

Yükseklik haritasından işaretli bir mesafe alanı oluşturmayı deneyebilirsiniz. Temelde bir sonraki yüzeye olan mesafeyi saklayan bir 3d doku. Bu "ışın daha hızlı seyahat" sağlar. Unreal Engine 4 bunu genel olarak orta menzilli ortam tıkanıklığı, yumuşak gölgeler ve genel olarak arazi gölgeleri için kullanır
user1888

Yanıtlar:


12

En son teknoloji için şu makaleye bakın: "Hızlı, Doğru ve Ölçeklenebilir Dinamik Yükseklik Alan Oluşturma için Maksimum Mipmapler", Tevs et al. 2008

Temel fikir, geniş arazilerde maksimum değer hakkında bilgi sahibi olarak çok fazla alan atlamaktır. Işın bunun üzerinde kalırsa, bir sonraki geniş alana atlayın.

Şekil 8'e bakarsanız, temel doğrusal adım ile maksimum mipmap'lerin karşılaştırmasını göreceksiniz. Doğrusal adımlama, modern gpus üzerinde gerçek zamanlı olarak yapılabilen ancak hala yavaş olan 200 adımla sonuçlanır. Maks mipmap'ler, hepsi gölgelendiricide yaklaşık 10 adımda aynısını yapar.


Bu yanıtı kabul ediyorum çünkü makalenin kendisi iyi ve "İlgili işler" bölümü oldukça kapsamlı görünüyor. Bu tekniği tam olarak kullanmasam bile, eminim bu ve onun referanslarından kullanım durumum için bir şey uyarlayabileceğim.
Dan Hulme

Maksimum mipmap'lere sahip demolar buldunuz mu? Teşekkürler.
raRaRa

Makaleyi okumadım, ancak bu "maksimum mipmap'ler" Koni Adım Haritalaması için kullanılan tekniğe çok benziyor (koniler sayesinde geniş alanları atlayarak paralaks oklüzyon haritalamasını geliştiriyor).
Julien Guertault

@JulienGuertault Bunun basit HiZ izleme olduğunu söyleyebilirim. neye çarptığınızdan emin olmak için güvenli bir yöntemdir. Ancak ikili arama gibi güvenli olmayan yöntemlere kıyasla çok hızlı değil.
v.oddou

4

Kişisel olarak gördüğüm en iyi şey, demossen eşyalarda kullanılan inigo quillez'in yaptığı şeydir. Ray March, arazide, kameradan uzaklaştıkça daha büyük adımlar atıyor, çünkü (genellikle) detay uzaktan daha az önemli (istisna = ince duvarlar!). Ortam tıkanıklığını ve diğer sofistike aydınlatma tekniklerini simüle etmek için penetrasyon bilgisi ve diğer kolayca elde edilen metrikleri kullanır.

Eylemdeki şeylerin bir demosu: https://www.youtube.com/watch?v=_YWMGuh15nE

Ve burada IQ'nun arazi raymarching sayfasındaki oldukça ilginç bir okuma: http://www.iquilezles.org/www/articles/terrainmarching/terrainmarching.htm

BTW, modern oyunlarda, "ekran alanı yansıması" tekniği genellikle oluşturulan sahnenin Z tamponuna karşı bir ışın yürüyüşüdür. Z tamponu gerçekten sadece bir yükseklik alanı.

2014 kongresinde bununla ilgili bazı görüşmeler gördüm ve bazı insanlar IQ ile benzer teknikler kullanırken, birkaçı IQ kadar iyi olmayan şeyler yapıyorlardı, bu da ilginçti: P


1
Bağlantınızdaki algoritma çok basit. Doksanlardan bulduğum bazı kağıtlardan daha az karmaşık görünüyor. İyi bir başlangıç ​​noktası gibi görünüyor, ama sadece bir "ilk ışınım" değil, bir üretim sistemi için en yüksek performanslı çözümü umuyorum.
Dan Hulme

Bu şeyler, en gelişmiş modern oyunlarda demografik kod ve ekran alanı yansımalarında kullanılır. En hızlı kod bazen en basit olanıdır. Basitliği nedeniyle işten çıkarmam. Yine de başka yanıtlar alıp almadığınızı görmek ilginç olacaktır.
Alan Wolfe

2
Yanıtınızda eksik olan, IQ'nun, gerçek araziyi raymarching'e başlamak için ilk tahmin olarak standart bir yükseklik alanı ağı kullanmasıdır. İlk önce standart rasterleştirme kullanarak arazinin düşük poli versiyonunu oluşturur ve ardından rasterleştirilmiş derinlikte eksi biraz muhafazakar eşik olmaya başlayan görüntü üzerinde bir piksel gölgelendirici çalıştırır. Bunu gerçek zamanlı yapmanın tek yolu budur.
Benedikt Bitterli

Söylediklerinin sadece bir kısmının doğru olduğuna inanıyorum. ışının ne kadar yürüyebileceğini bulmak için arazi yüksekliğine (kameradan olan mesafeye bağlı) dayalı sezgisel tarama kullanır, ancak duyduğum kadarıyla rasterleştirme kullanmaz. İşte rasterleştirmeyi kullanmayan bir çalışma örneği, ancak bu rasterleştirmeyi kullanan uygulamalar olmadığı anlamına gelmez: shadertoy.com/view/MdX3Rr
Alan Wolfe

Sorunun ışın izleme ile ilgili olduğu konusunda biraz kafam karıştı ve bu cevap ışın yürüyüşüyle ​​ilgili. İkisi ile başarabilecekleri arasında temel bir fark vardır.
Julien Guertault

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.