1 คะแนน โดย GN⁺ 2024-07-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

จำลองโลกบน GPU

4 พันล้านปีใน 4 นาที

  • บทความนี้กล่าวถึงการสร้างระบบจำลองโลกแบบเชิงกระบวนการด้วย GLSL fragment shader
  • จำลองประวัติศาสตร์ทั้งหมดของดาวเคราะห์คล้ายโลกได้ภายในไม่กี่นาที และอัปเดตที่ 60 เฟรมต่อวินาที

ดาวเคราะห์ยุคบรรพกาล

  • เรื่องราวเริ่มต้นเมื่อ 4.5 พันล้านปีก่อน จากก้อนลาวาเดือด
  • โลกยุคแรกเป็นดาวเคราะห์ดึกดำบรรพ์ที่แดงฉานและร้อนจัดจากการชนของดาวเคราะห์น้อย
  • คำนวณความสูงของภูมิประเทศผ่านแผนที่ภูมิประเทศที่สร้างขึ้นแบบเชิงกระบวนการ
  • สร้างหลุมอุกกาบาตจากการชนของดาวเคราะห์น้อยหลายขนาด และใช้สิ่งนี้กำหนดความสูงของภูมิประเทศ
  • หลุมอุกกาบาตจากดาวเคราะห์น้อยถูกสร้างในกริด 3 มิติ และเพิ่มความไม่สม่ำเสมอด้วยฟังก์ชันแฮช
  • แผนที่ความสูงที่สร้างขึ้นในท้ายที่สุดสามารถถ่ายทอดรูปลักษณ์ของโลกยุคแรกได้

การแปรสัณฐานของแผ่นเปลือกโลก

  • ใช้โมเดลการแปรสัณฐานของแผ่นเปลือกโลกเพื่อสร้างเทือกเขา ร่องลึกก้นสมุทร และภูมิประเทศของทวีป
  • สุ่มสร้างตำแหน่ง seed ของแผ่นเปลือกโลกด้วยความเร็วเริ่มต้น แล้วให้แผ่นเติบโตเมื่อเวลาผ่านไป
  • เมื่อเกิดการชนกันที่ขอบแผ่นเปลือกโลก ความสูงของภูมิประเทศจะเพิ่มขึ้น
  • การชนนี้จะแพร่กระจายไปยังพิกเซลรอบข้างผ่านโมเดลการกัดเซาะจากความร้อน

การกัดเซาะโดยน้ำ

  • ลักษณะขรุขระของภูมิประเทศตามธรรมชาติส่วนใหญ่ถูกกำหนดโดยการก่อตัวของลุ่มน้ำแม่น้ำ
  • ใช้โมเดลที่สามารถจำลองแม่น้ำได้แม้บนแผนที่ภูมิประเทศความละเอียดต่ำ
  • แต่ละพิกเซลจะตรวจสอบพิกเซลรอบข้าง 8 จุดเพื่อให้น้ำไหลไปตามทิศทางที่มีความชันมากที่สุด
  • การกัดเซาะขับเคลื่อนด้วยกฎ stream power
  • ปฏิสัมพันธ์ระหว่างการไหลของน้ำกับการกัดเซาะทำให้เกิดลุ่มน้ำแม่น้ำที่ดูเป็นธรรมชาติ

ภูมิอากาศระดับโลก

  • การจำลองระบบภูมิอากาศอิงจากแผนที่ความกดอากาศเฉลี่ยที่ระดับน้ำทะเล (MSLP)
  • แผนที่ MSLP ได้รับอิทธิพลจากตำแหน่งของแผ่นดิน มหาสมุทร และละติจูด
  • ปรับแผนที่ MSLP เพื่อให้รูปแบบภูมิอากาศเปลี่ยนไปตามฤดูกาล
  • สร้างลมและอุณหภูมิจาก MSLP
  • ลมเคลื่อนที่จากความกดอากาศสูงไปยังความกดอากาศต่ำ โดยคำนึงถึงผลคอริออลิส
  • ปริมาณน้ำฝนเคลื่อนจากมหาสมุทรสู่แผ่นดินผ่านสนามเวกเตอร์ลม

ชีวิต

  • ภูมิอากาศส่งผลต่อการกระจายตัวของสิ่งมีชีวิตบนดาวเคราะห์
  • รูปแบบฝนและการเปลี่ยนแปลงของอุณหภูมิกำหนดอัตราการเติบโตของพืช
  • สัตว์กินพืชและสัตว์นักล่าอพยพตามการเปลี่ยนแปลงของฤดูกาล
  • ใช้โมเดลการแพร่แบบ Lotka-Volterra เพื่อจำลองการเปลี่ยนแปลงเชิงพลวัตเหล่านี้

มนุษย์

  • เมื่อบทนำของโลกยุคแรกสิ้นสุดลง มนุษย์ก็เข้ามาตั้งถิ่นฐานบนพื้นผิวดาวเคราะห์
  • เผาเชื้อเพลิงฟอสซิลและปล่อยคาร์บอนสู่ชั้นบรรยากาศ
  • ตลอดหลายร้อยปี มนุษย์ใช้ทรัพยากรเชื้อเพลิงฟอสซิลจนหมด และปล่อยคาร์บอน 5 ล้านล้านตันสู่ชั้นบรรยากาศ
  • ส่งผลให้ปรากฏการณ์เรือนกระจกรุนแรงขึ้น และอุณหภูมิเฉลี่ยของโลกสูงขึ้นราว 10 องศา
  • พื้นที่กว้างใหญ่บริเวณใกล้เส้นศูนย์สูตรกลายเป็นเขตที่มนุษย์อยู่อาศัยไม่ได้จากอุณหภูมิสุดขั้ว

สรุปโดย GN⁺

  • บทความนี้อธิบายกระบวนการสร้างระบบจำลองโลกแบบเชิงกระบวนการอย่างละเอียด
  • ใช้ GLSL fragment shader เพื่อจำลองภูมิประเทศ การแปรสัณฐานของแผ่นเปลือกโลก การกัดเซาะโดยน้ำ ภูมิอากาศ และชีวิต
  • จำลองผลกระทบของกิจกรรมมนุษย์ต่อสิ่งแวดล้อมของโลกเพื่อกระตุ้นให้ตระหนักถึงปัญหา
  • โปรเจ็กต์ที่แนะนำซึ่งมีความสามารถคล้ายกันคือ "SimEarth" และ "Universe Sandbox"

1 ความคิดเห็น

 
GN⁺ 2024-07-30
ความเห็นจาก Hacker News
  • เรื่องสั้นชื่อ "I don't know, Timmy, being God is a big responsibility" กล่าวถึงประเด็นการจำลองโลก
  • สมมติฐานที่ว่าหากอารยธรรมมีแสงสว่างยามค่ำคืน ก็จะเผาเชื้อเพลิงฟอสซิลจนหมดและกลายเป็นทะเลทรายนั้น อิงอยู่กับเส้นทางอารยธรรมของเราเพียงแบบเดียว
    • ยังมีความเป็นไปได้อื่น ๆ เช่น สงครามนิวเคลียร์ การพัฒนานิวเคลียร์ฟิวชันสะอาด โรคระบาด หรือการรุกรานจากดาวเคราะห์ต่างดาว
    • มีการมองว่าอุณหภูมิที่สูงขึ้นเท่ากับความแห้งแล้ง และไม่ได้พิจารณาผลของ CO2 ที่เพิ่มขึ้นต่อพืช
  • ในปี 1996/1997 เคยพัฒนาเกม CD-ROM ที่จำลองการเคลื่อนตัวของแผ่นเปลือกโลก อุณหภูมิ ระดับความสูง และปริมาณน้ำฝน
    • ความก้าวหน้าของฮาร์ดแวร์และซอฟต์แวร์คอมพิวเตอร์ตลอด 28 ปีนั้นน่าทึ่งมาก
  • หนังสือ hard SF ชื่อ "Permutation City" เกี่ยวข้องกับหัวข้อนี้อย่างมาก
    • ตอนอ่านชื่อบทความนี้ให้ความรู้สึกเหมือนกำลังฝัน
  • ตอนเรียนมหาวิทยาลัย ในวิชาวิเคราะห์นโยบายพลังงาน เคยใช้โมเดล EPPA ที่พัฒนาโดย MIT เพื่อจำลองสถานการณ์ต่าง ๆ เช่น การลดต้นทุนการกักเก็บพลังงานลง 10 เท่า
    • สนุกมาก แต่หางานที่ทำอะไรคล้ายกันไม่ได้
  • มีการกล่าวถึงว่ามีการละรายละเอียดบางส่วนออกจากการจำลอง
  • สงสัยว่าทำไมถึงใช้แค่ fragment shader
    • ถ้าใช้ vertex shader สำหรับ height map ด้วย ก็น่าจะซูมเข้าไปถึงพื้นผิวได้
  • ตัวอย่าง Shadertoy บนหน้านี้เล่นได้ที่ 0.6 FPS แต่บนเว็บไซต์ Shadertoy เล่นได้ลื่นที่ 60 FPS
  • บางครั้งก็สงสัยว่าการใช้ชีวิตอยู่ในจักรวาลที่ถูกจำลองจะให้ความรู้สึกอย่างไร
  • เพลงประกอบตลอดทั้งวิดีโอดูคุ้นหู แต่ไม่รู้ว่ามาจากไหน
    • อาจเป็นเพลงที่ AI สร้างขึ้นก็ได้