1 คะแนน โดย GN⁺ 2024-07-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • สร้างประวัติศาสตร์ทั้งหมดของดาวเคราะห์แบบโลกอย่างเป็นกระบวนวิธีภายในไม่กี่นาที โดยใช้เพียง GLSL fragment shader เท่านั้น ไม่มีเท็กซ์เจอร์ที่เรนเดอร์ไว้ล่วงหน้า และการจำลองสุดท้ายอัปเดตที่ 60fps
  • ภูมิประเทศเริ่มต้นสร้างโดยแปลงละติจูด·ลองจิจูดเป็นพิกัด 3D จากนั้นซ้อน ปล่องอุกกาบาต 5 ระดับรายละเอียดเข้ากับ noise แบบ fractional Brownian motion เพื่อสร้างพื้นผิวดาวเคราะห์ยุคดึกดำบรรพ์
  • แผ่นธรณีภาคจำลองด้วยการเลื่อนแผ่นใน time step แบบไม่ต่อเนื่องระดับพิกเซล และประมาณการเกิดเทือกเขากับทวีปโดยยกความสูงที่จุดชน แล้วกระจายออกสู่บริเวณรอบข้างด้วย thermal erosion
  • การกัดเซาะทางน้ำให้แต่ละพิกเซลส่งน้ำไปยังทิศทางที่ลาดลงชันที่สุดในบรรดาเพื่อนบ้าน 8 จุด และใช้ stream power law กัดความสูง ทำให้สร้างแม่น้ำกว้าง 1 พิกเซลได้แม้ในความละเอียดต่ำ
  • ครอบคลุมถึงขั้นภูมิอากาศ ชีวิต และมนุษยชาติ โดยเชื่อมค่าเฉลี่ยความกดอากาศที่ระดับน้ำทะเล ลม ฝน แบบจำลองการแพร่ Lotka–Volterra และการเผาไหม้เชื้อเพลิงฟอสซิล เข้าไว้ในการจำลอง GPU เดียวเพื่อแสดงการเปลี่ยนแปลงระยะยาวของพื้นผิวดาวเคราะห์

การจำลองดาวเคราะห์เชิงกระบวนวิธีที่สร้างด้วย GPU shader

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

การสร้างภูมิประเทศของดาวเคราะห์ดึกดำบรรพ์

  • โลกยุคแรกถูกมองเป็น ดาวเคราะห์ดึกดำบรรพ์ ที่ร้อนและเต็มไปด้วยปล่องจากการชนของดาวเคราะห์น้อย
  • เนื่องจากไม่มีเท็กซ์เจอร์ที่เรนเดอร์ไว้ล่วงหน้า ขั้นแรกจึงเป็นการคำนวณความสูงของภูมิประเทศ ณ ละติจูดและลองจิจูดเฉพาะ
  • ละติจูดและลองจิจูดจะถูกแปลงเป็นพิกัดคาร์ทีเซียน 3D ก่อน
  • เพราะดาวเคราะห์น้อยมีขนาดหลากหลาย ปล่องอุกกาบาตจึงถูกซ้อนกันหลายขนาด
    • shader วนซ้ำ 5 ระดับรายละเอียด
    • จัดวางเป็นชั้น ๆ ตั้งแต่ปล่องใหญ่ไปจนถึงปล่องเล็ก
    • ผสม noise แบบ fractional Brownian motion เพื่อให้ภูมิประเทศดูขรุขระ
    • ปรับสเกลให้ปล่องขนาดใหญ่ที่สุดมีผลต่อภูมิประเทศมากที่สุด
  • ปล่องถูกสร้างในกริด 3D แล้วตัดเฉพาะพื้นผิวทรงกลมออกมาใช้เป็นภูมิประเทศ
    • เพื่อหลีกเลี่ยงแพตเทิร์นที่สม่ำเสมอ ศูนย์กลางของปล่องจะมีออฟเซ็ตแบบสุ่มเทียมจากจุดกริดด้วย hash function
    • อิทธิพลของปล่องที่อยู่ตามจุดกริดรอบ ๆ จะถูกเฉลี่ยด้วยน้ำหนักแบบเลขชี้กำลังตามระยะทาง
    • ขอบปล่องสร้างด้วย เส้นโค้งไซน์ แบบง่าย
  • เมื่อเติมน้ำลงในพื้นที่ต่ำ ภูมิประเทศที่สร้างเชิงกระบวนวิธีจะดูคล้ายโลกยุคแรกตามที่นักวิทยาศาสตร์คาดไว้
  • เมื่อเวลาผ่านไป หินเย็นตัวลง ไอน้ำควบแน่นกลายเป็นมหาสมุทร และการไหลของน้ำผิวดินจะสร้างหุบเขาและทิ้งตะกอน

แผ่นธรณีภาคและการก่อตัวของทวีป

  • หากต้องการสร้างเทือกเขา ร่องลึกก้นสมุทร และภูมิประเทศทวีปที่คุ้นเคย จำเป็นต้องมีแบบจำลอง แผ่นธรณีภาค
  • แผ่นเริ่มต้นจากตำแหน่ง seed แบบสุ่มและได้รับความเร็วเริ่มต้น
  • การเติบโตของแผ่นจัดการด้วยแบบจำลองเซตอย่างง่าย
    • เลือกจุดข้างเคียงแบบสุ่ม
    • หากจุดนั้นยังไม่ถูกกำหนดให้แผ่นอื่น ก็เพิ่มเข้าในแผ่นนั้น
    • พิกเซลภายในแต่ละแผ่นจะเก็บความเร็วการเคลื่อนที่ของแผ่น
    • วิธีนี้คล้าย diffusion-limited aggregation ที่ไม่มีการแพร่
  • การเคลื่อนที่ของแผ่นแบบต่อเนื่องทำได้ยาก เพราะต้องจัดการสภาวะที่ขอบเขตเลื่อนไปเพียงเศษส่วนของพิกเซล
  • แทนที่จะทำเช่นนั้น แผ่นจะเคลื่อนที่ทีละ 1 พิกเซลพอดีในแนวนอนหรือแนวตั้งใน time step แบบไม่ต่อเนื่อง
    • เวลาการเคลื่อนที่ถูกสุ่มแยกในแต่ละแผ่น
    • ความเร็วเฉลี่ยตามความเร็วและทิศทางที่ตั้งไว้ยังคงถูกรักษาไว้
    • โอกาสที่แผ่นข้างเคียงจะเคลื่อนพร้อมกันลดลง
  • การชนของแผ่นเกิดขึ้นเมื่อพิกเซลขอบของแผ่นหนึ่งเคลื่อนไปยังตำแหน่งที่เคยมีพิกเซลของอีกแผ่นอยู่
  • การชนถูกจัดการเป็น subduction โดยจำลองด้วยการเพิ่มความสูงเล็กน้อยที่ตำแหน่งชน
  • ผลของการชนเกิดเฉพาะที่พิกเซลขอบ แต่แบบจำลอง thermal erosion จะค่อย ๆ กระจายไปยังพิกเซลรอบข้าง
    • thermal erosion จะดันความสูงของพิกเซลหนึ่งไปตามทิศทางค่าเฉลี่ยของเพื่อนบ้าน
  • การผสมผสานนี้สามารถจำลองการก่อตัวของทวีปที่มีเทือกเขาได้ในระดับหนึ่ง

การกัดเซาะทางน้ำและลุ่มน้ำแม่น้ำ

  • ลักษณะขรุขระของภูมิประเทศธรรมชาติมาจากการก่อตัวของลุ่มน้ำแม่น้ำอย่างมาก และลุ่มน้ำแม่น้ำกัดเซาะภูมิทัศน์เป็น แพตเทิร์นแตกกิ่ง ที่คุ้นตา
  • แผนที่ภูมิประเทศที่ครอบคลุมทั้งดาวเคราะห์มีความละเอียดต่ำ ดังนั้นแบบจำลองต้องสามารถจำลองแม่น้ำกว้าง 1 พิกเซล ได้ด้วย
  • แบบจำลองอย่างง่ายของ Barnes (2018) ตอบโจทย์นี้
  • แต่ละพิกเซลตรวจสอบเพื่อนบ้าน 8 จุดเพื่อหาทิศทางที่ความสูงลดลงมากที่สุด
    • เพื่อนบ้านแนวทแยงอยู่ไกลกว่า จึงต้องมีการชดเชย
    • ทิศทางลาดลงชันที่สุดจะเป็นทิศทางที่น้ำไหลออกจากพิกเซลนั้น
  • น้ำเริ่มกระจายอยู่ในเซลล์จากฝน และในแต่ละ time step จะเคลื่อนที่ระหว่างพิกเซลข้างเคียง
  • การกัดเซาะจัดการตาม stream power law
    • ใช้ elevation, water ของเซลล์ปัจจุบัน และ slope ในทิศทางที่น้ำเคลื่อนที่
    • การลดความสูงถูกจำกัดไม่ให้ต่ำกว่าตำแหน่งที่น้ำไหลไป
  • เมื่อการไหลของน้ำและการกัดเซาะทำงานร่วมกัน ลุ่มน้ำแม่น้ำจะก่อตัวขึ้นเองอย่างเป็นธรรมชาติบนภูมิประเทศ
  • หากระบายสีทางน้ำที่เชื่อมต่อกันตามตำแหน่งปากแม่น้ำ จะได้ภาพ visualization ที่ชวนให้นึกถึง แผนที่ลุ่มน้ำแม่น้ำจริง
  • มี original shader ของลุ่มน้ำแม่น้ำที่จำลองไว้ให้ด้วย

แบบจำลองภูมิอากาศทั่วโลก

  • ระบบภูมิอากาศของดาวเคราะห์ทั้งดวงซับซ้อน แต่ในการจำลองนี้ประมาณอย่างค่อนข้างง่าย
  • ปัจจัยขับเคลื่อนหลักของการจำลองภูมิอากาศคือแผนที่ ค่าเฉลี่ยความกดอากาศที่ระดับน้ำทะเล (MSLP) ที่สร้างเชิงกระบวนวิธี
  • ตาม Climate Cookbook ปัจจัยหลักในการสร้างแผนที่ MSLP คือแผ่นดินอยู่ตรงไหนระหว่างทะเล และผลของละติจูด
  • เมื่อนำข้อมูล MSLP ของโลกจริงมาแยกเป็นแผ่นดินกับทะเลแล้วพล็อตเทียบกับละติจูด จะได้เส้นโค้งไซน์สองเส้นที่มีรูปทรงต่างกันเล็กน้อย
  • แบบจำลองความกดอากาศเฉลี่ยรายปีคำนวณโดยแยกแผ่นดินและทะเลด้วยสมการตามละติจูด
    • แผ่นดิน: 1012.5 - 6. * cos(lat*PI/45.)
    • ทะเล: 1014.5 - 20. * cos(lat*PI/30.)
  • หากคำนวณแผ่นดินและทะเลแยกกัน จะเกิดความไม่ต่อเนื่องที่คมชัดบริเวณขอบเขต
  • ในความเป็นจริง MSLP เปลี่ยนอย่างนุ่มนวลบริเวณรอยต่อทะเลกับแผ่นดิน เพราะการแพร่กระจายเฉพาะที่ของความกดอากาศ
  • กระบวนการแพร่นี้ประมาณด้วยการใช้ Gaussian blur กับแผนที่ MSLP
    • ค่าเบี่ยงเบนมาตรฐานอยู่ในช่วง 10–15 องศา
  • การเปลี่ยนแปลงตามฤดูกาลทำโดยจำลองส่วนต่าง MSLP ระหว่างเดือนมกราคมกับกรกฎาคมเพิ่มเติม
    • ส่วนต่างนี้ก็เป็นไปตามแพตเทิร์นไซน์จากข้อมูลโลกเช่นกัน
    • ปรับพารามิเตอร์และใช้ Gaussian blur แล้วรวมเข้ากับ MSLP เฉลี่ยรายปี
  • สร้างลมและอุณหภูมิจาก MSLP
    • ในความเป็นจริง อุณหภูมิเป็นตัวสร้างความกดอากาศ แต่ที่นี่ใช้ประโยชน์จากความสัมพันธ์กัน
    • season แกว่งระหว่าง -1 ถึง 1 ตลอดหนึ่งปี
  • ลมมีแนวโน้มเคลื่อนจากความกดอากาศสูงไปยังความกดอากาศต่ำ แต่ในระดับทั้งโลกต้องพิจารณา แรงโคริออลิส ด้วย
    • แรงโคริออลิสทำให้ลมหมุนวนรอบบริเวณความกดอากาศ
    • เวกเตอร์ความเร็วคำนวณโดยรวมพจน์โคริออลิสกับเกรเดียนต์ความกดอากาศ
  • การจำลองที่ค่อนข้างหยาบนี้สร้างแพตเทิร์นการไหลเวียนของลมที่ สมจริง
  • ยังจำลองปรากฏการณ์ลมกลับทิศในช่วงฤดูมรสุมของภูมิภาคอินเดียได้ด้วย
  • ฝนจำลองโดย advect ไอน้ำจากทะเลไปยังแผ่นดินตามสนามเวกเตอร์ลม
  • advection ถูกทำในลักษณะคล้ายการจำลองของไหล

การกระจายของสิ่งมีชีวิตและพลวัตผู้ล่า-เหยื่อ

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

มนุษยชาติและการปล่อยคาร์บอน

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

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

 
GN⁺ 2024-07-30
ความคิดเห็นจาก Hacker News
  • ถึงจะเจ๋งก็จริง แต่ส่วนท้ายที่บอกว่าอารยธรรมที่มี แสงไฟยามค่ำคืน จะต้องเผาเชื้อเพลิงฟอสซิลทั้งหมดอย่างหลีกเลี่ยงไม่ได้จนทำให้ดาวเคราะห์กลายเป็นทะเลทราย ดูเหมือนเป็นสมมติฐานที่อิงกับเส้นทางที่เป็นไปได้เพียงเส้นทางหนึ่งของอารยธรรมเราเท่านั้น
    ไม่มีเหตุผลรองรับว่า การตายจากภาวะโลกร้อนและการแปรสภาพเป็นทะเลทรายนั้นน่าจะเกิดขึ้นมากกว่าสงครามนิวเคลียร์ การพัฒนาฟิวชันสะอาด โรคระบาด หรือการรุกรานดาวเคราะห์คล้ายโลกที่อยู่ใกล้ ๆ ซึ่งถูกสร้างขึ้นแบบ procedural
    เวลาจำลองสิ่งที่เกิดขึ้นจริงมันยอดเยี่ยม แต่ดีแค่จนถึงก่อนที่ความคิดเห็นจะถูกใส่เข้ามา
    ยิ่งไปกว่านั้น ดูเหมือนจะเทียบความร้อนกับความแห้งแล้งเป็นอย่างเดียว และไม่ได้พิจารณาผลของ CO2 ที่เพิ่มขึ้นต่อพืชด้วย แม้แถบเส้นศูนย์สูตรจะร้อนจนมนุษย์อยู่ไม่ได้ ก็มีความเป็นไปได้ไม่น้อยที่มันจะถูกปกคลุมด้วย ป่าเขตร้อน ไม่ใช่ทะเลทราย

    • มีบางประโยคที่ยังน่าสงสัย แต่โดยรวมเห็นด้วย น่าเสียดายที่เราอยู่ใน โลกแบบ Excel และแนวคิดที่ครอบงำคือการจำลองโลกที่ซับซ้อนด้วยสเปรดชีต แล้วใช้ผลลัพธ์จากมันมาตัดสินใจ
      แนวทางแบบนี้โดยมากมักมองข้าม ผลกระทบลำดับที่สอง ตามที่กล่าวไว้ข้างต้น
    • สำหรับข้อมูลเพิ่มเติม ซิมูเลชันนั้นสะท้อนผลกระทบไว้แบบคร่าว ๆ แล้วว่า ความร้อนทำให้มหาสมุทรดูดซับไอน้ำมากขึ้น พืชเติบโตเร็วขึ้น และผลคืออัตราการ กักเก็บคาร์บอน เพิ่มขึ้น
      ยอมรับว่าส่วนการกลายเป็นทะเลทรายในตอนท้ายเป็นการอนุญาตเชิงศิลปะเล็กน้อย เพื่อให้เล่าเรื่องด้วยภาพได้ง่ายขึ้น ความเป็นจริงคงซับซ้อนกว่านั้นมาก
      มันเป็นเพียงเรื่องเล่าของหนึ่งในฉากทัศน์ที่เป็นไปได้เท่านั้น และที่อื่นก็เขียนไว้แบบนั้นด้วย: “ส่วนท้ายตั้งใจแสดงอนาคตที่เป็นไปได้ แต่คงมีความเป็นไปได้ค่อนข้างต่ำ ผมอยากทำให้มันดราม่า จึงวาดผลลัพธ์สุดโต่งที่เชื้อเพลิงฟอสซิลทั้งหมดถูกเผาอย่างแท้จริง แต่สำหรับผลกระทบอื่น ๆ ผมพยายามรักษาให้สมจริงที่สุดเท่าที่ทำได้ โดยอ่านบทความวิทยาศาสตร์เกี่ยวกับสมมติฐานแบบนั้น”
      https://www.vice.com/en/article/xgx7nq/watch-four-billion-ye...
  • ช่วงปี 1996/1997 ผมเคยทำเกม CD-ROM ที่จำลอง การเคลื่อนที่ของแผ่นธรณีภาค อุณหภูมิ ความสูงจากระดับน้ำทะเล และปริมาณฝน ตลอดช่วงเวลาหลายล้านปี
    เห็นแล้วทึ่งว่าใน 28 ปี ฮาร์ดแวร์และซอฟต์แวร์คอมพิวเตอร์พัฒนาไปมากแค่ไหน: https://www.kmoser.com/evolution/

    • เพิ่งเคยเจอคนที่รู้จักเกมนั้น แถมยังเป็นผู้พัฒนาจริง ๆ ด้วย ดีใจมาก ผมเล่นตอนอายุราว 13 ปี และชอบมากจริง ๆ
      แนวคิดในการจำลองดาวเคราะห์และสัตว์บนดาวนั้นเป็นอะไรที่ช็อกสุด ๆ ในเวลานั้น และตอนนี้ก็ยังเป็นอยู่ น่าจะเก็บโปสเตอร์ที่แถมมาด้วยไว้จริง ๆ เพราะ แขนงวิวัฒนาการของโฮมินิน หลายสายที่อยู่ในนั้นน่าสนใจมาก
    • เจ๋งมาก ช่วงนี้ผมอ่าน Assembling California ของ John McPhee อยู่ ขอแนะนำอย่างแรง
      ผมคิดเลยว่าถ้ามีลูกโลก 3D พร้อมแถบเลื่อนเวลา ให้ลองปรับการเคลื่อนที่ที่คาดการณ์ของแผ่นธรณีภาค แล้วเห็นภาพว่ามันกลายเป็นภูมิประเทศปัจจุบันได้อย่างไรก็คงดี คุณรู้จักอะไรแบบนั้นไหม?
      [1] https://www.goodreads.com/book/show/19898.Assembling_Califor...
      [2] excerpt: https://www.newyorker.com/magazine/1992/09/07/assembling-cal...
  • มีหนังสือ ฮาร์ดไซไฟ ที่ยอดเยี่ยมและเกี่ยวข้องกับหัวข้อนี้มากคือ Permutation City พอเห็นชื่อบทความนี้แล้วรู้สึกเหมือนอยู่ในความฝัน

    • ยังไม่ได้อ่าน Permutation City แต่ Diaspora เป็นหนึ่งในนิยายไซไฟที่ผมชอบที่สุด คงต้องหาเวลาอ่านแล้ว
    • Permutation City ยอดเยี่ยมมาก Greg Egan ยังเผยแพร่เรื่องสั้นฟรีจำนวนมากที่สำรวจฟิสิกส์ไว้บนเว็บไซต์ของเขาด้วย: https://www.gregegan.net/
    • เพิ่งอ่านเล่มนั้นจบเมื่อวาน และมีปฏิกิริยาแบบเดียวกันเป๊ะ
  • อาจจะออกนอกทางนิดหน่อย แต่เรื่องสั้นสั้น ๆ ที่ยอดเยี่ยมชื่อ "I don't know, Timmy, being God is a big responsibility" ในแง่หนึ่งก็พูดถึงการจำลองโลก และดีมากจริง ๆ:
    https://qntm.org/responsibility

    • อยากอ่าน ตอนจบทางเลือก ของเรื่องสั้นนี้
      หลายปีมานี้ผมอยากเขียนเรื่องที่มีพล็อตคล้ายกันมาก แต่มีช่องโหว่ใหญ่ในพล็อตเรื่อง overhead การคำนวณระหว่างจักรวาล และไม่เคยคิดได้ว่าจะใช้คอมพิวเตอร์ควอนตัมมาแก้
      ความต่างอีกอย่างของเรื่องที่ผมคิดไว้คือ ตัวละครจะเขียนเรื่องนั้นขึ้นมา แล้วมันจะกลายเป็นเรื่องของ “ผม” โดยสร้างตัวแปรที่เพิ่มค่าทีละ 1 ในแต่ละจักรวาล เพื่อให้ตอนจบผู้อ่านรู้ว่าตัวเองอยู่ลึกลงไปเป็นชั้นที่เท่าไร
      คนที่อ่านสิ่งนี้บน HN อยู่ลึกลงไป 8474771628371839 ชั้น
    • ถ้าจะออกนอกทางให้ลึกกว่านี้ ขอแนะนำ The Trouble With Bubbles ของ Philip K. Dick เป็นเรื่องที่จินตนาการถึงแขกในงานค็อกเทลปาร์ตี้ยุค 60 อวดสวนเทอร์ราเรียมขนาดดาวเคราะห์จิ๋วของตัวเอง
    • ผมไม่ค่อยแน่ใจว่าควรอ่านอันนี้อย่างไร สับสนว่าควรอ่านเวอร์ชันล่าสุดที่ลิงก์ไว้ด้านบนของหน้า หรือเวอร์ชันที่ให้ไว้ตรงนี้เป็นเหมือนฉบับมาตรฐานมากกว่า
      น่าจะเป็นครั้งแรกที่เจอหลายเวอร์ชันในงานเขียนที่ไม่ใช่ตำราเรียน ผมชอบ งานเขียนแบบการทดลองทางความคิด แบบนี้มากจริง ๆ ตราบใดที่ไม่จี้ช่องโหว่ด้านตรรกะหรือฟิสิกส์
      ชอบไอเดียพหุจักรวาลที่ทุกจักรวาลแทบเหมือนกันหมดจนส่วนใหญ่ไร้ความหมาย
    • ชอบมากที่ นักวิทยาการคอมพิวเตอร์ควอนตัม ระดับโลก ผู้ค้นพบสิ่งที่พลิกทุกอย่างที่มนุษยชาติรู้จัก กลับยังเป็นห่วงจนถึงวินาทีสุดท้ายว่าจะตกรถบัสไหม
    • ตอนดูรายการทีวียอดเยี่ยมเรื่องหนึ่งที่ออกมาในช่วงไม่กี่ทศวรรษที่ผ่านมา มีฉากหนึ่งที่รู้สึกเหมือนเป็นการคารวะเรื่องสั้นนี้อย่างชัดเจน
      ดราม่า ฟิสิกส์ และตอนจบถูกจัดการต่างกัน แต่ทิ้งภาวะครุ่นคิดที่น่าพึงพอใจคล้าย ๆ กันไว้ ผมเกือบจะเขียนชื่อเรื่องหรือชื่อผู้กำกับแล้ว แต่ก็หยุดเมื่อรู้ว่าแค่บริบทนี้ก็อาจเป็น สปอยเลอร์ ใหญ่ได้
      บางทีผมอาจเข้ารหัสชื่อไว้ในคอมเมนต์นี้ก็ได้ พูดตรง ๆ คือผมลองทำแล้ว และตอนนี้ก็ดึกมากแล้ว ดังนั้นเสิร์ชเอนจินสมัยนี้อาจหาเจอก็ได้
  • วิชาหนึ่งที่ชอบที่สุดตอนเรียนมหาวิทยาลัยคือ การวิเคราะห์นโยบายพลังงาน และได้ทดลองกับโมเดล EPPA ที่พัฒนาโดย MIT
    ลองเปลี่ยนพารามิเตอร์บางอย่าง เช่น ถ้าต้นทุนการกักเก็บพลังงานลดลงเหลือหนึ่งในสิบ สถานการณ์จะเป็นอย่างไร สนุกมาก แต่น่าเสียดายที่ในที่ทำงานไม่เคยหาโอกาสทำอะไรคล้าย ๆ กันได้เลย
    [0]: https://globalchange.mit.edu/research/research-tools/eppa

  • พูดตามจริงแล้ว ซิมูเลชันนี้คงละรายละเอียดบางอย่างไปแน่ ๆ :)

  • ไม่รู้ทำไม ตัวอย่าง Shadertoy ทั้งหมดที่ฝังอยู่ในหน้าเว็บถึงเล่นได้แค่ราว 0.6 FPS ในสภาพแวดล้อมของผม
    แต่ถ้าเปิด “final shader” ที่ลิงก์ไว้บนเว็บไซต์ Shadertoy ก็ได้ 60fps ปกติดี

    • ถ้าเหมือนกับเบราว์เซอร์ของผม จะมี ปุ่มเล่น ที่ถูกตัดขอบอยู่ใต้ปุ่มย้อนกลับ กดปุ่มนั้นแล้วจะแก้ได้
  • บางครั้งก็สงสัยว่าการอยู่ใน จักรวาลจำลอง จะรู้สึกอย่างไร

    • ในความหมายหนึ่ง อาจมองได้ว่าเราเป็นแบบนั้นอยู่แล้ว ซิมูเลชันคืออะไร? ก็แค่การปฏิบัติตามชุดกฎที่เรียบง่ายกว่าสภาพแวดล้อมที่ซับซ้อนกว่าซึ่งมันกำลังรันอยู่
      ถ้าเราสามารถ “มองเห็น” “ภายนอก” ของ “จักรวาล” ได้ บางทีเราอาจเข้าใจว่าความเป็นจริงของเรานั้นเรียบง่ายและมีข้อจำกัดมากเมื่อเทียบกับ “ความเป็นจริง” ภายนอก โครงสร้างนี้อาจต่อเนื่องไปไม่สิ้นสุด หรือความเป็นจริงภายนอกอาจมีตรรกะมากกว่าเรามากจนทำให้เรายอมรับความมีขอบเขตจำกัดได้
      แต่เพราะเรามีจุดเริ่มต้นและการไหลของเวลา บางทีเราอาจมีการถือกำเนิด มีแม่ และอาจมีแม้กระทั่งจุดประสงค์ด้วย แน่นอนว่านี่เป็นวิธีคิดแบบมนุษย์มาก ๆ และทั้งหมดอาจเป็นเพียงซุปสุ่ม ๆ ก็ได้
      ลองจินตนาการว่ามีตัวตนที่รู้จักตนเองอยู่ในซิมูเลชันที่เราสร้าง และเริ่มคิดแบบเดียวกัน ทุกคนคงหัวเราะเยาะว่า “พวกเราก็แค่ของสุ่ม ๆ ไม่มีพระเจ้า ไม่มีการออกแบบ ใครจะใช้พลังงานมากขนาดนั้นไปกับก้อนพื้นที่ว่างมหึมาที่ไร้ประโยชน์แบบนี้” และเขาก็คงต้องเห็นด้วยในระดับหนึ่ง แต่ขณะเดียวกันก็ผิดอยู่ในระดับหนึ่งเช่นกัน
      ต่อให้ค้นพบเรา ก็ไม่ได้ช่วยปลอบใจอะไร เพราะเราก็บอกอะไรเกี่ยวกับผู้ออกแบบของเราเองไม่ได้ ด้วยเหตุผลเดียวกัน ต่อให้เราค้นพบพวกเขา ก็ไม่ได้ช่วยปลอบใจเช่นกัน ดังนั้น แนวคิดเรื่องพระเจ้า จึงเป็นเรื่องโง่เขลา ถ้าพระเจ้าก็มีพระเจ้าของพระองค์เอง แล้วจะทำอย่างไรต่อ? ต่อให้ยอมรับการมีอยู่ของพระองค์ ก็ไม่ได้แก้ปัญหาอะไรเลย
    • ทุกครั้งที่คิดเรื่องนี้ ผมมักสงสัยเสมอว่ามันสำคัญจริงหรือไม่ ลองไล่ทั้งสถานการณ์ที่ “ใช่” และ “ไม่ใช่” แล้ว สำหรับผมก็ไม่ได้ให้ข้อคิดอะไรเป็นพิเศษ
      อาจเป็น ลัทธิสุญนิยม อยู่บ้าง แต่เพราะแบบนั้นจึงไม่รู้สึกถูกมันกดทับจนเกินไป
    • “I don't know, Timmy, being God is a big responsibility” https://qntm.org/responsibility
    • พลังงานและสสารของจักรวาล แท้จริงแล้วคือ คอมพิวเตอร์ควอนตัมแอนะล็อก ขนาดมหึมาที่จำลองผลลัพธ์ของชุดสมการ
      ไม่เคยมีใครบอกว่าซิมูเลชันต้องรันอยู่บนเซมิคอนดักเตอร์เท่านั้น
    • ก็คงเหมือนกับจักรวาลนี้ ณ ตอนนี้ทุกประการ
  • ไม่รู้ว่าทำไมถึงใช้แค่ fragment shader ถ้ามี vertex shader สำหรับ heightmap ด้วย ก็น่าจะซูมเข้าไปถึงพื้นผิวได้

  • เขียนไว้ว่า “written entirely in GLSL fragment shaders” แล้วนั่นคือภาษาอะไร?
    ดนตรีค่อนข้างเชย บางทีอาจทำโดย AI ก็ได้

    • เพลงนั้นคือ "Adagio in D Minor" และไม่ใช่ว่าเชยมาตั้งแต่ตอนแต่ง แต่ใกล้เคียงกับการที่ถูกใช้บ่อยเกินไปจนรู้สึกเชยมากกว่า
      เดิมที John Murphy แต่งขึ้นสำหรับภาพยนตร์ Sunshine ปี 2007
      https://en.wikipedia.org/wiki/Sunshine:_Music_from_the_Motio...
    • ไม่แน่ใจว่านี่คือคำถามจริง ๆ หรือเปล่า แต่ GLSL คือภาษานั้น: https://en.m.wikipedia.org/wiki/OpenGL_Shading_Language
    • GLSL คือภาษา