- Membuat secara prosedural seluruh sejarah planet mirip Bumi dalam beberapa menit hanya dengan GLSL fragment shader, tanpa tekstur pra-render, dan simulasi akhir diperbarui pada 60fps
- Medan awal dibuat dengan mengubah lintang dan bujur menjadi koordinat 3D, lalu menumpuk kawah pada 5 tingkat detail dan noise fractional Brownian motion untuk membentuk permukaan planet purba
- Tektonik lempeng menggerakkan lempeng dalam langkah waktu diskret per piksel, lalu menyebarkan kenaikan elevasi di titik tumbukan ke sekitarnya melalui erosi termal untuk mendekati pembentukan pegunungan dan benua
- Erosi hidrologis mengirimkan air dari tiap piksel ke arah penurunan paling curam di antara 8 tetangganya, dan dengan stream power law dapat membentuk sungai selebar 1 piksel bahkan pada resolusi rendah
- Dari iklim, kehidupan, hingga tahap manusia, simulasi ini menghubungkan tekanan permukaan laut rata-rata, angin, presipitasi, model difusi Lotka–Volterra, dan pembakaran bahan bakar fosil untuk merangkum perubahan permukaan planet jangka panjang dalam satu simulasi GPU
Simulasi planet prosedural yang dibuat dengan shader GPU
- Simulasi Bumi prosedural diimplementasikan hanya dengan GLSL fragment shader
- Mensimulasikan seluruh sejarah planet mirip Bumi dalam beberapa menit, dengan layar diperbarui pada 60fps
- Rekaman video dari shader akhir juga tersedia
Pembuatan medan planet purba
- Bumi awal diperlakukan sebagai planet purba yang panas dan memiliki banyak kawah akibat tumbukan asteroid
- Karena tidak ada tekstur pra-render, langkah pertama adalah menghitung ketinggian medan pada lintang dan bujur tertentu
- Lintang dan bujur terlebih dahulu dikonversi ke koordinat Kartesius 3D
- Karena ukuran asteroid beragam, kawah juga ditumpuk dalam berbagai ukuran
- Shader mengulang 5 tingkat detail
- Kawah disusun berlapis dari yang besar hingga yang kecil
- Noise fractional Brownian motion dicampurkan agar medan terlihat kasar
- Penskalaan dilakukan agar kawah terbesar memberi pengaruh paling besar pada medan
- Kawah dibuat pada grid 3D, lalu bagian permukaan bolanya dipotong dan digunakan sebagai medan
- Untuk menghindari pola teratur, pusat kawah diberi offset pseudorandom dari titik grid menggunakan hash function
- Pengaruh kawah yang termasuk dalam titik grid sekitar dirata-ratakan dengan bobot eksponensial berbasis jarak
- Bibir kawah dibuat dengan kurva sinus sederhana
- Ketika area rendah diisi air, medan yang dibuat secara prosedural menjadi mirip dengan gambaran Bumi awal menurut para ilmuwan
- Seiring waktu, batuan mendingin dan uap air mengembun menjadi lautan, sementara aliran air cair di permukaan membentuk lembah dan meninggalkan sedimen
Tektonik lempeng dan pembentukan benua
- Untuk membuat pegunungan, palung, dan bentuk benua yang familiar, diperlukan model tektonik lempeng
- Lempeng dimulai dari posisi seed acak dan diberi kecepatan awal
- Pertumbuhan lempeng ditangani dengan model himpunan sederhana
- Memilih titik tetangga secara acak
- Jika titik itu belum ditetapkan ke lempeng lain, titik tersebut ditambahkan ke lempeng itu
- Setiap piksel di dalam lempeng menyimpan kecepatan gerak lempeng
- Cara ini mirip dengan diffusion-limited aggregation tanpa difusi
- Gerakan lempeng kontinu sulit diimplementasikan karena harus menangani batas yang bergeser sebesar sebagian kecil piksel
- Sebagai gantinya, lempeng bergerak tepat 1 piksel secara horizontal atau vertikal pada langkah waktu diskret
- Waktu pergerakan dibuat acak untuk tiap lempeng
- Kecepatan rata-rata sesuai kecepatan dan arah yang ditetapkan tetap dipertahankan
- Kemungkinan lempeng bertetangga bergerak bersamaan menjadi kecil
- Tumbukan lempeng terjadi ketika piksel batas dari satu lempeng bergerak ke posisi yang sebelumnya ditempati piksel lempeng lain
- Tumbukan diperlakukan sebagai subduksi, dan dimodelkan dengan sedikit menaikkan elevasi pada lokasi tumbukan
- Efek tumbukan hanya muncul pada piksel batas, tetapi model erosi termal secara bertahap menyebarkannya ke piksel sekitar
- Erosi termal mendorong elevasi suatu piksel ke arah rata-rata tetangganya
- Kombinasi ini dapat mensimulasikan pembentukan benua dengan pegunungan sampai tingkat tertentu
Erosi hidrologis dan daerah aliran sungai
- Tampilan kasar medan alami banyak berasal dari pembentukan daerah aliran sungai, yang mengikis lanskap dalam pola bercabang yang familiar
- Karena peta medan yang memuat seluruh planet memiliki resolusi rendah, model ini harus mampu mensimulasikan sungai dengan lebar 1 piksel
- Model sederhana dari Barnes (2018) memenuhi kebutuhan ini
- Setiap piksel memeriksa 8 tetangganya untuk menemukan arah dengan penurunan elevasi terbesar
- Tetangga diagonal lebih jauh, sehingga dikoreksi
- Arah turun paling curam menjadi arah keluarnya air dari piksel tersebut
- Air awalnya didistribusikan ke sel sebagai hujan, lalu pada setiap langkah waktu berpindah di antara piksel tetangga
- Erosi ditangani menurut stream power law
- Menggunakan
elevation,water, danslopepada sel saat ini ke arah air bergerak - Penurunan elevasi dibatasi agar tidak menjadi lebih rendah daripada lokasi tujuan aliran air
- Menggunakan
- Saat aliran air dan erosi saling berinteraksi, daerah aliran sungai terbentuk secara alami pada medan
- Dengan mewarnai saluran air yang terhubung berdasarkan lokasi muara sungai, dapat dibuat visualisasi yang mengingatkan pada peta daerah aliran sungai nyata
- Original shader untuk daerah aliran sungai simulasi juga tersedia
Model iklim global
- Sistem iklim seluruh planet itu kompleks, tetapi dalam simulasi ini didekati dengan cara yang relatif sederhana
- Penggerak utama simulasi iklim adalah peta tekanan permukaan laut rata-rata (MSLP) yang dibuat secara prosedural
- Menurut Climate Cookbook, faktor utama dalam pembuatan peta MSLP adalah posisi daratan di antara lautan dan pengaruh lintang
- Jika data MSLP Bumi nyata dipisahkan menjadi daratan dan lautan lalu diplot terhadap lintang, akan muncul dua kurva sinus dengan bentuk yang sedikit berbeda
- Model tekanan rata-rata tahunan dihitung dengan rumus berbasis lintang yang membedakan daratan dan lautan
- Daratan:
1012.5 - 6. * cos(lat*PI/45.) - Lautan:
1014.5 - 20. * cos(lat*PI/30.)
- Daratan:
- Jika daratan dan lautan dihitung terpisah, akan muncul diskontinuitas tajam di perbatasannya
- Dalam kenyataan, MSLP berubah secara halus di zona transisi laut-darat karena difusi tekanan lokal
- Proses difusi ini didekati dengan menerapkan Gaussian blur pada peta MSLP
- Simpangan bakunya berada pada rentang 10–15 derajat
- Perubahan musim diimplementasikan dengan memodelkan tambahan perbedaan MSLP antara Januari dan Juli
- Perbedaan ini juga mengikuti pola sinus dari data Bumi
- Parameternya disesuaikan, lalu Gaussian blur diterapkan dan digabungkan dengan MSLP rata-rata tahunan
- Angin dan suhu dibuat berdasarkan MSLP
- Dalam kenyataan, suhu membentuk tekanan, tetapi di sini korelasinya dimanfaatkan
seasonberosilasi antara -1 dan 1 selama satu tahun
- Angin cenderung bergerak dari tekanan tinggi ke tekanan rendah, tetapi pada skala global gaya Coriolis juga perlu diperhitungkan
- Gaya Coriolis membuat angin bersirkulasi di sekitar zona tekanan
- Vektor kecepatan dihitung dengan menggabungkan suku Coriolis dan gradien tekanan
- Simulasi yang relatif kasar ini menghasilkan pola sirkulasi angin yang realistis
- Pembalikan angin selama musim monsun di kawasan India juga direproduksi
- Presipitasi disimulasikan dengan mengadveksikan uap air dari laut ke daratan mengikuti medan vektor angin
- Adveksi diimplementasikan dengan cara yang mirip simulasi fluida
Distribusi kehidupan dan dinamika predator-mangsa
- Iklim memengaruhi distribusi kehidupan di planet
- Pola curah hujan dan perubahan suhu menentukan laju pertumbuhan tumbuhan
- Saat musim berganti, herbivora bergerak ke wilayah yang memiliki vegetasi cukup untuk menopang mereka
- Predator mengikuti herbivora yang bergerak mengikuti vegetasi
- Dinamika semacam ini ditangkap dengan model difusi Lotka–Volterra
- Elemen
xyzdari variabelcmasing-masing menunjukkan populasi vegetasi, herbivora, dan predator - Dinamika populasi hewan dalam skala besar menghasilkan pola yang menarik
- Di dunia nyata, pola seperti ini paling mudah terlihat pada populasi mikroorganisme di cawan Petri, tetapi hukum yang sama juga berlaku pada populasi hewan besar di seluruh dunia
Manusia dan emisi karbon
- Setelah melewati tahap Bumi awal, kecepatan simulasi melambat menjadi siklus siang dan malam, tektonik lempeng menjadi sulit terdeteksi, dan medan menjadi tetap
- Pada malam hari, muncul pola cahaya yang belum pernah ada sebelumnya saat manusia mengolonisasi permukaan planet
- Ekspansi manusia yang cepat disertai pembakaran bahan bakar fosil
- Selama ratusan tahun, manusia membakar semua sumber daya bahan bakar fosil yang tersedia dan melepaskan 5 triliun ton karbon ke atmosfer
- Emisi ini memperkuat efek rumah kaca dan menaikkan suhu rata-rata global hampir 10 derajat Celsius
- Karena suhu ekstrem, wilayah daratan luas di sekitar khatulistiwa menjadi tidak dapat dihuni
- Akibatnya, manusia menghilang dari sebagian besar planet
1 komentar
Opini Hacker News
Memang keren, tetapi bagian di akhir yang menyatakan bahwa peradaban dengan penerangan malam niscaya akan membakar semua bahan bakar fosil dan mengubah planet menjadi gurun terlihat seperti asumsi yang hanya bertumpu pada salah satu jalur yang mungkin bagi peradaban kita
Tidak ada dasar untuk menganggap mati karena pemanasan dan penggurunan lebih masuk akal daripada perang nuklir, pengembangan fusi nuklir bersih, wabah penyakit, atau invasi ke planet mirip Bumi terdekat yang digenerasikan secara prosedural
Ini bagus saat mensimulasikan apa yang benar-benar terjadi, tetapi hanya sampai opini mulai masuk
Selain itu, tampaknya panas disamakan dengan kekeringan, dan dampak tambahan CO2 terhadap tumbuhan juga tidak dipertimbangkan. Sekalipun zona khatulistiwa menjadi terlalu panas untuk dihuni manusia, sangat mungkin wilayah itu tertutup hutan rimba, bukan gurun
Pendekatan seperti ini pada umumnya mengabaikan efek orde kedua yang disebutkan di atas
Saya mengakui bahwa penggurunan di bagian akhir adalah sedikit kelonggaran artistik agar ceritanya lebih mudah disampaikan secara visual. Kenyataannya akan jauh lebih kompleks
Itu hanya cerita tentang satu skenario yang mungkin, dan di tempat lain juga ditulis demikian: “Bagian terakhir dimaksudkan untuk menunjukkan masa depan yang mungkin, tetapi barangkali kecil kemungkinannya terjadi. Saya ingin membuatnya dramatis, jadi saya menggambarkan hasil ekstrem di mana secara harfiah semua bahan bakar fosil terbakar, tetapi untuk efek lainnya saya membaca makalah ilmiah tentang asumsi semacam itu dan berusaha menjaganya serealistis mungkin.”
https://www.vice.com/en/article/xgx7nq/watch-four-billion-ye...
Pada 1996/1997 saya mengerjakan gim CD-ROM yang mensimulasikan tektonik lempeng, suhu, ketinggian, dan curah hujan selama jutaan tahun
Menakjubkan melihat seberapa jauh perangkat keras dan perangkat lunak komputasi berkembang dalam 28 tahun: https://www.kmoser.com/evolution/
Gagasan mensimulasikan sebuah planet dan hewan-hewan di atasnya sendiri benar-benar mencengangkan pada masa itu, dan masih terasa begitu sampai sekarang. Seharusnya saya menyimpan poster yang disertakan; berbagai cabang evolusi sapiens di sana sangat menarik
Saya sempat berpikir akan bagus kalau ada globe Bumi 3D dengan penggeser waktu, sehingga kita bisa memanipulasi pergerakan lempeng yang diperkirakan dan memvisualisasikan bagaimana bentuk daratan saat ini terbentuk. Apakah Anda tahu ada yang seperti itu?
[1] https://www.goodreads.com/book/show/19898.Assembling_Califor...
[2] excerpt: https://www.newyorker.com/magazine/1992/09/07/assembling-cal...
Ada buku hard SF yang sangat relevan dengan topik ini, yaitu Permutation City. Saat melihat judul tulisan ini, rasanya seperti sedang berada dalam mimpi
Sedikit menyimpang, tetapi cerpen pendek yang bagus, "I don't know, Timmy, being God is a big responsibility", dalam arti tertentu membahas simulasi dunia dan sangat bagus:
https://qntm.org/responsibility
Selama bertahun-tahun saya ingin menulis cerita dengan alur yang sangat mirip, tetapi ada lubang plot besar berupa overhead komputasi antarsemesta, dan saya tidak terpikir untuk menyelesaikannya dengan komputer kuantum
Perbedaan lain dalam cerita yang saya bayangkan adalah para tokohnya menulis cerita itu, lalu cerita itu menjadi cerita “saya”, dan mereka membuat sebuah variabel yang nilainya bertambah 1 di setiap semesta, sehingga pada bagian akhir pembaca tahu dirinya berada di kedalaman keberapa
Orang yang membaca ini di HN berada pada kedalaman tingkat 8474771628371839
Sepertinya ini pertama kalinya saya menemukan beberapa versi dalam fiksi, bukan buku teks. Saya sangat suka tulisan eksperimen pikiran seperti ini selama tidak mengulik celah logika atau fisikanya
Saya suka gagasan multisemesta yang semua semestanya pada dasarnya identik sehingga sebagian besarnya menjadi tidak bermakna
Dramanya, fisikanya, dan akhirnya ditangani secara berbeda, tetapi sama-sama meninggalkan keadaan perenungan yang menyenangkan. Saya hampir menulis judul atau nama sutradaranya, tetapi berhenti setelah sadar bahwa konteks ini saja bisa menjadi spoiler besar
Mungkin saja saya telah menyandikan namanya di dalam komentar ini. Sejujurnya saya memang mencobanya, dan sekarang sudah larut malam, jadi mesin pencari zaman sekarang mungkin bisa menemukannya
Salah satu mata kuliah favorit saya di universitas adalah analisis kebijakan energi, dan saya bereksperimen dengan model EPPA yang dikembangkan di MIT
Saya mencoba mengubah parameter tertentu, misalnya bagaimana perkembangannya jika biaya penyimpanan energi turun menjadi sepersepuluh. Sangat menarik, tetapi sayangnya di tempat kerja saya tidak pernah menemukan kesempatan untuk mencoba hal serupa
[0]: https://globalchange.mit.edu/research/research-tools/eppa
Sejujurnya, simulasi itu jelas melewatkan beberapa detail :)
Entah kenapa, semua contoh Shadertoy yang disematkan di halaman diputar sekitar 0,6 FPS di lingkungan saya
Kalau membuka “final shader” yang ditautkan di situs Shadertoy, hasilnya lancar 60fps
Kadang saya penasaran seperti apa rasanya hidup di alam semesta tersimulasi
Jika kita bisa “melihat” “luar” dari “alam semesta”, mungkin kita akan memahami bahwa realitas kita sangat sederhana dan terbatas dibanding “realitas” di luar. Struktur ini bisa berlanjut tanpa batas, atau realitas di luar mungkin jauh lebih logis daripada kita sehingga kita bisa menerima bahwa ia terbatas
Namun karena kita punya awal dan aliran waktu, mungkin ada kelahiran, ibu, bahkan mungkin tujuan. Tentu saja ini cara berpikir yang sangat manusiawi, dan semuanya bisa saja hanya sup acak
Bayangkan di dalam simulasi yang kita buat ada subjek yang sadar diri dan mulai memikirkan hal yang sama. Semua orang akan mencibir, “kita cuma acak, tidak ada Tuhan atau rancangan, untuk apa menghabiskan begitu banyak energi pada gumpalan ruang kosong raksasa yang tak berguna ini,” dan ia harus setuju sampai batas tertentu, tetapi pada saat yang sama ia juga keliru sampai batas tertentu
Menemukan kita pun tidak akan memberi penghiburan. Sebab kita juga tidak bisa memberi tahu apa pun tentang perancang kita sendiri. Dengan alasan yang sama, kalau kita menemukan mereka pun itu tidak akan menghibur. Karena itu konsep Tuhan itu bodoh. Kalau Tuhan juga punya Tuhan, lalu sekarang harus bagaimana? Menerima keberadaannya tidak menyelesaikan masalah apa pun
Mungkin ini semacam nihilisme, tetapi justru karena itu saya tidak merasa kewalahan
Tidak ada yang pernah bilang simulasi harus dijalankan di atas semikonduktor
Saya tidak mengerti kenapa hanya memakai fragment shader. Kalau ada vertex shader untuk heightmap juga, kita bisa zoom sampai ke permukaannya
Tertulis “written entirely in GLSL fragment shaders”; itu bahasa apa?
Musiknya cukup klise. Mungkin saja dibuat oleh AI
Aslinya digubah oleh John Murphy untuk film Sunshine tahun 2007
https://en.wikipedia.org/wiki/Sunshine:_Music_from_the_Motio...