4 Dakikada 4 Milyar Yıl – GPU ile Dünya Simülasyonu
(davidar.io)- Önceden render edilmiş dokular olmadan, yalnızca GLSL fragment shader kullanarak Dünya benzeri bir gezegenin tüm tarihini birkaç dakika içinde prosedürel olarak üretir; nihai simülasyon 60fps hızında güncellenir
- İlk arazi, enlem ve boylamı 3D koordinatlara dönüştürdükten sonra, 5 ayrıntı düzeyinde kraterler ve fractional Brownian motion gürültüsünü üst üste bindirerek ilkel gezegen yüzeyini oluşturur
- Levha tektoniği, levhaları piksel bazlı ayrık zaman adımlarıyla hareket ettirir; çarpışma noktalarındaki yükselti artışını termal erozyon ile çevreye yayarak dağ sıraları ve kıta oluşumunu yaklaşıklar
- Hidrolik erozyonda her piksel, suyu 8 komşusu arasındaki en dik iniş yönüne gönderir; stream power law ile yüksekliği aşındırarak düşük çözünürlükte bile 1 piksel genişliğinde nehirler oluşturabilir
- İklim, yaşam ve insanlık aşamalarına kadar ortalama deniz seviyesi basıncı, rüzgâr, yağış, Lotka–Volterra yayılım modeli ve fosil yakıt yakımını birbirine bağlayarak uzun vadeli gezegen yüzeyi değişimlerini tek bir GPU simülasyonunda toplar
GPU shader ile yapılmış prosedürel gezegen simülasyonu
- Prosedürel Dünya simülasyonu, yalnızca GLSL fragment shader ile uygulanmıştır
- Dünya'ya benzer bir gezegenin tüm tarihini birkaç dakika içinde simüle eder ve ekran 60fps hızında güncellenir
- Nihai shader'ın video kaydı da sunulur
İlkel gezegen arazisinin oluşturulması
- Erken Dünya, sıcak ve asteroit çarpmaları nedeniyle çok kraterli bir ilkel gezegen olarak ele alınır
- Önceden render edilmiş doku olmadığı için ilk adım, belirli bir enlem ve boylamda arazi yüksekliğini hesaplamaktır
- Enlem ve boylam önce 3D Kartezyen koordinatlara dönüştürülür
- Asteroit boyutları değişken olduğundan kraterler de farklı boyutlarda üst üste bindirilir
- Shader 5 ayrıntı düzeyi üzerinden yineleme yapar
- Büyük kraterlerden küçük kraterlere kadar katman katman yerleştirilir
- Arazinin engebeli görünmesi için fractional Brownian motion gürültüsü karıştırılır
- En büyük kraterlerin arazi üzerinde en büyük etkiye sahip olması için ölçekleme yapılır
- Kraterler 3D ızgarada oluşturulur ve bunların içinden küre yüzeyi kesilerek arazi olarak kullanılır
- Düzenli desenlerden kaçınmak için krater merkezleri, hash function ile ızgara noktalarından sözde rastgele ofset alır
- Çevredeki ızgara noktalarına ait kraterlerin etkisi, mesafeye dayalı üstel ağırlıklarla ortalanır
- Krater kenarı basit bir sinüs eğrisi ile oluşturulur
- Alçak bölgeler suyla doldurulduğunda, prosedürel olarak oluşturulan arazi bilim insanlarının erken Dünya için düşündüğü görünüme benzer
- Zamanla kayalar soğur, su buharı yoğunlaşıp okyanuslara dönüşür; yüzeydeki sıvı su akışı vadiler oluşturur ve tortu bırakır
Levha tektoniği ve kıta oluşumu
- Dağ sıraları, okyanus hendekleri ve tanıdık kıta şekillerini oluşturmak için bir levha tektoniği modeli gerekir
- Levhalar rastgele seed konumlarında başlar ve başlangıç hızları atanır
- Levha büyümesi basit bir küme modeliyle işlenir
- Komşu noktalar rastgele seçilir
- Henüz başka bir levhaya atanmamış bir noktaysa ilgili levhaya eklenir
- Her levhanın içindeki pikseller levha hareket hızını saklar
- Bu yöntem, difüzyonsuz diffusion-limited aggregation'a benzer
- Sürekli levha hareketini uygulamak zordur; çünkü sınırların bir pikselin kesri kadar hareket ettiği durumların ele alınması gerekir
- Bunun yerine levhalar ayrık zaman adımlarında yatay ya da dikey olarak tam 1 piksel hareket eder
- Hareket zamanı her levha için rastgeleleştirilir
- Ayarlanan hız ve yönün ortalama hızı korunur
- Komşu levhaların aynı anda hareket etme olasılığı azalır
- Levha çarpışması, bir levhanın sınır pikseli başka bir levhanın pikselinin bulunduğu konuma hareket ettiğinde gerçekleşir
- Çarpışma subduction olarak ele alınır ve çarpışma konumunun yüksekliğini biraz artıracak şekilde modellenir
- Çarpışma etkisi yalnızca sınır piksellerinde oluşur, ancak termal erozyon modeli bunu kademeli olarak çevre piksellere yayar
- Termal erozyon, bir pikselin yüksekliğini komşuların ortalaması yönünde iter
- Bu kombinasyon, dağ sıralarına sahip kıtaların oluşumunu bir ölçüde simüle edebilir
Hidrolik erozyon ve nehir havzaları
- Doğal arazinin engebeli görünümü büyük ölçüde nehir havzalarının oluşumundan gelir; nehir havzaları manzarayı tanıdık dallanma desenleriyle aşındırır
- Tüm gezegeni kapsayan arazi haritası düşük çözünürlüklü olduğundan modelin 1 piksel genişliğinde nehirleri de simüle edebilmesi gerekir
- Barnes (2018)'in basit modeli bu gereksinimi karşılar
- Her piksel, 8 komşusunu inceleyerek yükseklik düşüşünün en büyük olduğu yönü bulur
- Diyagonal komşular daha uzakta olduğu için düzeltme uygulanır
- En dik iniş yönü, o pikselden suyun akacağı yön olur
- Su başlangıçta yağış olarak hücrelere dağıtılır ve her zaman adımında komşu pikseller arasında hareket eder
- Erozyon stream power law'a göre işlenir
- Geçerli hücrenin
elevation,waterdeğerleri ve suyun hareket ettiği yöndekislopekullanılır - Yükseklik azalması, suyun aktığı konumdan daha düşük olmayacak şekilde sınırlandırılır
- Geçerli hücrenin
- Su akışı ve erozyon birlikte çalıştıkça arazide nehir havzaları doğal biçimde oluşur
- Bağlantılı su yolları nehir ağızlarının konumuna göre renklendirildiğinde, gerçek nehir havzası haritalarını akla getiren bir görselleştirme oluşturulabilir
- Simüle edilen nehir havzalarının original shader'ı da sunulur
Küresel iklim modeli
- Gezegenin tüm iklim sistemi karmaşıktır, ancak bu simülasyonda nispeten basit biçimde yaklaştırılır
- İklim simülasyonunun temel itici unsuru, prosedürel olarak oluşturulan ortalama deniz seviyesi basıncı (MSLP) haritasıdır
- Climate Cookbook'a göre MSLP haritası oluşturmanın başlıca unsurları, karanın denizler arasında nerede bulunduğu ve enlemin etkisidir
- Gerçek Dünya'nın MSLP verileri kara ve deniz olarak ayrılıp enleme göre çizildiğinde, şekli biraz farklı iki sinüs eğrisi ortaya çıkar
- Yıllık ortalama basınç modeli, kara ve denizi ayırarak enlem tabanlı formülle hesaplanır
- Kara:
1012.5 - 6. * cos(lat*PI/45.) - Deniz:
1014.5 - 20. * cos(lat*PI/30.)
- Kara:
- Kara ve deniz ayrı ayrı hesaplandığında sınırlarda keskin süreksizlikler oluşur
- Gerçekte basıncın yerel yayılımı nedeniyle deniz-kara geçişlerinde MSLP yumuşak biçimde değişir
- Bu yayılım süreci, MSLP haritasına Gaussian blur uygulanarak yaklaştırılır
- Standart sapma 10–15 derece aralığındadır
- Mevsimsel değişim, Ocak ve Temmuz MSLP farkını ayrıca modelleyerek uygulanır
- Bu fark da Dünya verilerinde sinüs desenini izler
- Parametreler ayarlanır ve Gaussian blur uygulanarak yıllık ortalama MSLP ile birleştirilir
- MSLP temel alınarak rüzgâr ve sıcaklık üretilir
- Gerçekte sıcaklık basıncı oluşturur, ancak burada korelasyondan yararlanılır
seasonbir yıl boyunca -1 ile 1 arasında salınır
- Rüzgâr yüksek basınçtan alçak basınca hareket etme eğilimindedir, ancak küresel ölçekte Coriolis kuvveti de dikkate alınmalıdır
- Coriolis kuvveti, rüzgârın basınç bölgeleri etrafında dolaşmasına neden olur
- Hız vektörü, Coriolis terimi ile basınç gradyanı birleştirilerek hesaplanır
- Bu nispeten kaba simülasyon, gerçekçi rüzgâr dolaşım desenleri üretir
- Hindistan bölgesinde muson mevsimi sırasında rüzgârların tersine dönmesi de yeniden üretilir
- Yağış, okyanustaki su buharını rüzgâr vektör alanı boyunca karaya advect ederek simüle edilir
- Adveksiyon, akışkan simülasyonuna benzer bir yöntemle uygulanır
Yaşam dağılımı ve avcı-av dinamikleri
- İklim, gezegendeki yaşam dağılımını etkiler
- Yağış desenleri ve sıcaklık değişimleri bitki büyüme hızını belirler
- Mevsimler değiştikçe otoburlar, kendilerini sürdürecek yeterli bitki örtüsünün olduğu bölgelere hareket eder
- Avcılar, bitki örtüsünü izleyerek hareket eden otoburları takip eder
- Bu dinamikler Lotka–Volterra yayılım modeli ile yakalanır
cdeğişkenininxyzbileşenleri sırasıyla bitki örtüsü, otobur ve avcı popülasyonlarını temsil eder- Büyük ölçekteki hayvan popülasyonu dinamikleri ilginç desenler oluşturur
- Gerçekte bu desenler en kolay Petri kaplarındaki mikroorganizma popülasyonlarında görülür, ancak aynı yasalar dünya çapındaki büyük hayvan popülasyonlarına da uygulanır
İnsanlık ve karbon emisyonları
- Erken Dünya aşaması geçildikten sonra simülasyon hızı gündüz-gece döngüsüne yavaşlar, levha tektoniği algılanması zor hâle gelir ve arazi sabitlenir
- Geceleri, insanlık gezegen yüzeyini kolonize ettikçe benzeri görülmemiş ışık desenleri ortaya çıkar
- İnsanlığın hızlı yayılımına fosil yakıt yakımı eşlik eder
- İnsanlık birkaç yüz yıl boyunca kullanılabilir tüm fosil yakıt kaynaklarını yakarak atmosfere 5 trilyon ton karbon salar
- Bu emisyon sera etkisini güçlendirerek küresel ortalama sıcaklığı neredeyse 10 santigrat derece artırır
- Aşırı sıcaklık nedeniyle ekvator çevresindeki geniş kara bölgeleri yaşanamaz hâle gelir
- Sonuç olarak insanlık gezegenin önemli bir bölümünden yok olur
1 yorum
Hacker News yorumları
Harika görünüyor, ama sondaki gece aydınlatmasına sahip uygarlığın kaçınılmaz olarak tüm fosil yakıtları yakıp gezegeni çöle çevirdiği kısmı, uygarlığımız için olası yollardan yalnızca birine dayanan bir varsayım gibi duruyor
Isınma ve çölleşme yüzünden ölmenin; nükleer savaştan, temiz nükleer füzyon geliştirmekten, salgın hastalıktan ya da yakındaki prosedürel olarak üretilmiş Dünya benzeri bir gezegeni istila etmekten daha olası olduğunu söylemek için bir dayanak yok
Gerçekte yaşanmış şeyleri simüle ederken harika; işin içine görüş girmeden önce iyi
Üstelik sıcaklığı kuraklıkla eş tutuyor ve fazladan CO2’nin bitkiler üzerindeki etkisini de dikkate almıyor gibi. Ekvator kuşağı insanların yaşayamayacağı kadar ısınsa bile çölle değil, ormanla kaplanması da gayet mümkün
Bu yaklaşım, yukarıda sözü edilen ikincil etkileri büyük ölçüde görmezden geliyor
Sondaki çölleşmenin, hikâyeyi görsel olarak anlatmayı kolaylaştırmak için biraz sanatsal bir serbestlik olduğunu kabul ediyorum. Gerçek çok daha karmaşık olacaktır
Bu yalnızca belirli bir olası senaryonun hikâyesi; başka bir yerde de böyle yazmıştı: “Son bölüm, mümkün ama muhtemelen pek olası olmayan bir geleceği göstermeyi amaçlıyor. Dramatik olsun diye kelimenin tam anlamıyla tüm fosil yakıtların yandığı aşırı bir sonucu resmettim; ancak diğer etkileri, bu varsayımla ilgili bilimsel makaleler okuyarak mümkün olduğunca gerçekçi tutmaya çalıştım.”
https://www.vice.com/en/article/xgx7nq/watch-four-billion-ye...
1996/1997’de, milyonlarca yıl boyunca levha tektoniğini, sıcaklığı, rakımı ve yağışı simüle eden bir CD-ROM oyunu üzerinde çalışmıştım
28 yılda bilgi işlem donanımı ve yazılımının ne kadar ilerlediğini görmek şaşırtıcı: https://www.kmoser.com/evolution/
Bir gezegeni ve üzerindeki hayvanları simüle etme fikri o zamanlar başlı başına tamamen sarsıcıydı, hâlâ da öyle. İçinden çıkan posteri saklamalıymışım; çeşitli sapiens evrim dalları gerçekten ilginçti
Zaman kaydırıcısı olan 3D bir yerküre üzerinde levhaların öngörülen hareketleriyle oynayıp bunların bugünkü yer şekillerine nasıl dönüştüğünü görselleştirebilmenin güzel olacağını düşündüm. Böyle bir şey biliyor musun?
[1] https://www.goodreads.com/book/show/19898.Assembling_Califor...
[2] alıntı: https://www.newyorker.com/magazine/1992/09/07/assembling-cal...
Bu konuyla çok ilgili, mükemmel bir hard SF kitabı olarak Permutation City var. Bu yazının başlığını görünce rüyadaymışım gibi hissettim
Biraz konu dışı ama kısa ve mükemmel bir öykü olan "I don't know, Timmy, being God is a big responsibility" bir anlamda dünya simülasyonlarını ele alıyor ve gerçekten çok iyi:
https://qntm.org/responsibility
Yıllardır çok benzer bir olay örgüsüne sahip bir hikâye yazmak istiyordum; ama evrenler arasındaki hesaplama ek yükü diye büyük bir olay örgüsü boşluğu vardı ve bunu kuantum bilgisayarla çözmeyi hiç düşünmemiştim
Tasarladığım hikâyenin bir başka farkı da karakterlerin o hikâyeyi yazması, onun “benim” hikâyem hâline gelmesi ve her evrende değeri 1 artan bir değişken yaratıp sonda okuyucunun kaçıncı derinlikte olduğunu anlamasını sağlamasıydı
Bunu HN’de okuyan kişi 8474771628371839 seviye derinlikte
Ders kitapları dışında bir eserin birden fazla sürümüyle romanda ilk kez karşılaşıyor gibiyim. Mantık ya da fizik açıklarının üzerine gitmediği sürece bu tür düşünce deneyi tarzı yazıları gerçekten seviyorum
Tüm evrenlerin fiilen aynı olduğu ve bu yüzden çoğunun anlamsızlaştığı çoklu evren fikrini seviyorum
Drama, fizik ve final farklı ele alınmıştı ama benzer biçimde hoş bir düşüncelilik hâli bırakmıştı. Başlığı ya da yönetmenin adını neredeyse yazacaktım, ama sırf bu bağlamın bile büyük bir spoiler olabileceğini fark edip durdum
Belki de adını bu yorumun içine şifrelemişimdir. Açıkçası denedim ve şu an gece geç; günümüz arama motorları bulabilir belki
Üniversitede en sevdiğim derslerden biri enerji politikası analiziydi ve MIT’de geliştirilen EPPA modeliyle deneyler yapmıştım.
Enerji depolama maliyetleri onda bire düşerse işlerin nasıl gelişeceği gibi, belirli parametreleri değiştirip bakıyorduk. Çok eğlenceliydi ama ne yazık ki iş hayatında benzer bir şeyi deneme fırsatı bulamadım.
[0]: https://globalchange.mit.edu/research/research-tools/eppa
Doğrusunu söylemek gerekirse, simülasyonun bazı ayrıntıları atladığı kesin :)
Nedenini bilmiyorum ama sayfaya gömülü tüm Shadertoy örnekleri benim ortamımda yaklaşık 0,6 FPS’de oynatılıyor.
Bağlantısı verilen “final shader”ı Shadertoy web sitesinde açınca 60fps gayet iyi çalışıyor.
Bazen simüle edilmiş bir evrende yaşamak nasıl bir his olurdu diye merak ediyorum.
“Evrenin” “dışını” “görebilseydik”, belki de kendi gerçekliğimizin dışarıdaki “gerçekliğe” kıyasla çok basit ve sınırlı olduğunu anlardık. Bu yapı sonsuza kadar sürebilir de; dış gerçeklik bizden çok daha mantıksal olduğu için sonlu oluşunu kabullenmemizi sağlayabilir de.
Ama bizim bir başlangıcımız ve zamanın akışı olduğuna göre, muhtemelen bir doğum, bir anne, hatta belki bir amaç bile olabilir. Elbette bu son derece insani bir düşünme biçimi ve her şey rastgele bir çorba da olabilir.
Kendi yaptığımız bir simülasyonun içinde öz farkındalığı olan bir varlık bulunduğunu ve aynı şeyleri düşünmeye başladığını hayal edin. Herkes “Biz sadece rastgeleyiz; ne tanrı var ne tasarım. Bu işe yaramaz, devasa boşluk yığınına neden bu kadar enerji harcansın ki?” diye alay ederdi; o da bir ölçüde buna katılmak zorunda kalırdı ama aynı zamanda bir ölçüde yanılıyor olurdu.
Bizi keşfetmeleri de teselli olmaz. Çünkü biz de onlara kendi tasarımcımız hakkında bir şey söyleyemeyiz. Aynı nedenle bizim onları keşfetmemiz de teselli olmaz. Bu yüzden tanrı kavramı aptalca. Tanrının da tanrısı varsa şimdi ne yapacağız? Onun varlığını kabul etmek hiçbir sorunu çözmez.
Bir ölçüde nihilizm olabilir ama bu sayede bunalmıyorum.
Simülasyonların illa yarı iletkenler üzerinde çalışması gerektiğini kim söyledi?
Neden yalnızca fragment shader kullandıklarını bilmiyorum. Yükseklik haritası için vertex shader da olsaydı yüzeye kadar yakınlaştırma yapılabilirdi.
“written entirely in GLSL fragment shaders” denmiş; bu hangi dil?
Müzik epey klişe. Belki de yapay zeka üretmiştir.
Aslında John Murphy tarafından 2007 yapımı Sunshine filmi için bestelenmişti.
https://en.wikipedia.org/wiki/Sunshine:_Music_from_the_Motio...