1 poin oleh GN⁺ 2024-07-30 | 1 komentar | Bagikan ke WhatsApp
  • 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, dan slope pada sel saat ini ke arah air bergerak
    • Penurunan elevasi dibatasi agar tidak menjadi lebih rendah daripada lokasi tujuan aliran air
  • 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.)
  • 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
    • season berosilasi 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 xyz dari variabel c masing-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

 
GN⁺ 2024-07-30
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

    • Ada beberapa kalimat yang saya pertanyakan, tetapi secara keseluruhan saya setuju. Sayangnya kita hidup di dunia Excel, dan yang dominan adalah cara berpikir bahwa dunia yang kompleks harus dimodelkan dengan spreadsheet lalu keputusan diambil dari keluarannya
      Pendekatan seperti ini pada umumnya mengabaikan efek orde kedua yang disebutkan di atas
    • Sebagai catatan, simulasi itu, meski secara kasar, memang mencerminkan efek bahwa panas meningkatkan penyerapan uap air oleh laut dan mempercepat pertumbuhan tanaman, sehingga laju sekuestrasi karbon meningkat
      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/

    • Ini pertama kalinya saya melihat orang yang tahu gim itu, dan senang sekali ternyata Anda pengembangnya. Saya memainkannya sekitar umur 13 tahun dan sangat menyukainya
      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
    • Keren. Baru-baru ini saya membaca Assembling California karya John McPhee dan sangat merekomendasikannya
      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

    • Saya belum membaca Permutation City, tetapi Diaspora adalah salah satu novel SF favorit saya. Saya harus meluangkan waktu untuk membacanya
    • Permutation City luar biasa. Greg Egan juga menerbitkan banyak cerpen gratis yang mengeksplorasi fisika di situs webnya: https://www.gregegan.net/
    • Saya baru menyelesaikan buku itu kemarin dan reaksinya persis sama
  • 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

    • Saya ingin membaca akhir alternatif dari cerpen ini
      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
    • Kalau ingin masuk lebih jauh ke penyimpangan ini, saya merekomendasikan The Trouble With Bubbles karya Philip K. Dick. Cerita itu membayangkan tamu pesta koktail tahun 60-an yang memamerkan terarium mereka sendiri berskala planet mini
    • Saya tidak begitu yakin bagaimana harus membacanya. Saya bingung apakah harus membaca versi terbaru yang ditautkan di bagian atas halaman, atau versi yang disediakan di sini lebih kanonis
      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
    • Saya sangat suka bahwa seorang ilmuwan komputer kuantum kelas dunia yang membuat penemuan yang menjungkirbalikkan semua yang diketahui umat manusia tetap khawatir sampai akhir bahwa ia akan ketinggalan bus
    • Saat menonton sebuah acara TV bagus yang muncul dalam beberapa dekade terakhir, ada satu adegan yang terasa seperti penghormatan jelas untuk cerpen ini
      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

    • Jika sama seperti browser saya, ada tombol putar yang terpotong di bawah tombol rewind; menekannya akan menyelesaikan masalah
  • Kadang saya penasaran seperti apa rasanya hidup di alam semesta tersimulasi

    • Dalam arti tertentu, bisa dibilang kita memang sudah begitu. Apa itu simulasi? Ia hanya mengikuti sekumpulan aturan yang lebih sederhana daripada lingkungan lebih kompleks tempat ia dijalankan
      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
    • Setiap kali memikirkan ini, saya selalu bertanya-tanya apakah itu benar-benar penting. Saat saya menjalankan skenario “ya” maupun “tidak”, keduanya tidak memberi banyak wawasan bagi saya
      Mungkin ini semacam nihilisme, tetapi justru karena itu saya tidak merasa kewalahan
    • “I don't know, Timmy, being God is a big responsibility” https://qntm.org/responsibility
    • Energi dan materi alam semesta sebenarnya adalah komputer kuantum analog raksasa yang menyimulasikan hasil dari sekumpulan persamaan
      Tidak ada yang pernah bilang simulasi harus dijalankan di atas semikonduktor
    • Akan persis sama seperti alam semesta ini sekarang
  • 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