4 phút cho 4 tỷ năm – Mô phỏng thế giới bằng GPU
(davidar.io)- Không cần texture dựng sẵn, chỉ với GLSL fragment shader có thể tạo theo thủ tục toàn bộ lịch sử của một hành tinh kiểu Trái Đất trong vài phút, và mô phỏng cuối cùng được cập nhật ở 60fps
- Địa hình ban đầu được tạo bằng cách đổi vĩ độ và kinh độ sang tọa độ 3D, rồi chồng miệng hố va chạm ở 5 mức chi tiết cùng nhiễu fractional Brownian motion để tạo nên bề mặt hành tinh nguyên thủy
- Chuyển động kiến tạo mảng dịch chuyển các mảng theo các bước thời gian rời rạc ở mức pixel, rồi lan độ nâng địa hình tại điểm va chạm ra xung quanh bằng xói mòn nhiệt để xấp xỉ quá trình hình thành núi và lục địa
- Xói mòn thủy văn cho nước từ mỗi pixel chảy theo hướng dốc xuống mạnh nhất trong 8 ô lân cận, và dùng stream power law để bào mòn độ cao, nhờ đó có thể tạo sông rộng 1 pixel ngay cả ở độ phân giải thấp
- Từ khí hậu, sự sống đến giai đoạn loài người, mô phỏng kết nối áp suất mực nước biển trung bình, gió, mưa, mô hình khuếch tán Lotka–Volterra và đốt nhiên liệu hóa thạch để gói toàn bộ biến đổi dài hạn của bề mặt hành tinh vào một mô phỏng GPU
Mô phỏng hành tinh theo thủ tục bằng GPU shader
- Mô phỏng Trái Đất theo thủ tục được hiện thực chỉ bằng GLSL fragment shader
- Nó mô phỏng toàn bộ lịch sử của một hành tinh giống Trái Đất trong vài phút, và màn hình được cập nhật ở 60fps
- Cũng có cung cấp bản ghi hình của shader cuối cùng
Tạo địa hình hành tinh nguyên thủy
- Trái Đất thuở đầu được xem như một hành tinh nguyên thủy nóng và đầy miệng hố do va chạm tiểu hành tinh
- Vì không có texture dựng sẵn, bước đầu tiên là tính độ cao địa hình tại một vĩ độ và kinh độ nhất định
- Vĩ độ và kinh độ trước tiên được chuyển sang tọa độ Descartes 3D
- Vì kích thước tiểu hành tinh rất đa dạng, các miệng hố cũng được chồng lên ở nhiều kích cỡ
- Shader lặp qua 5 mức chi tiết
- Các lớp được xếp từ miệng hố lớn đến miệng hố nhỏ
- Trộn thêm nhiễu fractional Brownian motion để địa hình trông gồ ghề
- Tỷ lệ được chỉnh để các miệng hố lớn nhất có ảnh hưởng mạnh nhất lên địa hình
- Miệng hố được tạo trong lưới 3D, rồi cắt phần trên bề mặt cầu để dùng làm địa hình
- Để tránh mẫu lặp đều, tâm miệng hố được dịch giả ngẫu nhiên khỏi các điểm lưới bằng hash function
- Ảnh hưởng của các miệng hố thuộc các điểm lưới xung quanh được lấy trung bình bằng trọng số mũ theo khoảng cách
- Vành miệng hố được tạo bằng đường sin đơn giản
- Khi đổ nước vào các vùng thấp, địa hình tạo theo thủ tục này trông giống với hình ảnh mà các nhà khoa học hình dung về Trái Đất sơ khai
- Theo thời gian, đá nguội đi và hơi nước ngưng tụ thành đại dương, còn dòng nước lỏng trên bề mặt tạo ra thung lũng và để lại trầm tích
Kiến tạo mảng và hình thành lục địa
- Để tạo núi, rãnh đại dương và địa hình lục địa quen thuộc, cần có mô hình kiến tạo mảng
- Các mảng bắt đầu từ các vị trí hạt giống ngẫu nhiên và được gán vận tốc ban đầu
- Sự phát triển của mảng được xử lý bằng một mô hình tập hợp đơn giản
- Chọn ngẫu nhiên các điểm lân cận
- Nếu điểm đó chưa được gán cho mảng khác thì thêm vào mảng hiện tại
- Mỗi pixel bên trong mảng lưu vận tốc dịch chuyển của mảng
- Cách này giống diffusion-limited aggregation nhưng không có khuếch tán
- Chuyển động mảng liên tục khó hiện thực vì phải xử lý trạng thái biên di chuyển chỉ một phần pixel
- Thay vào đó, mảng dịch chuyển đúng 1 pixel theo chiều ngang hoặc dọc trong các bước thời gian rời rạc
- Thời điểm dịch chuyển được ngẫu nhiên hóa cho từng mảng
- Vận tốc trung bình theo tốc độ và hướng đã đặt vẫn được giữ nguyên
- Khả năng các mảng lân cận cùng di chuyển một lúc được giảm xuống
- Va chạm mảng xảy ra khi pixel biên của một mảng dịch chuyển vào vị trí vốn có pixel của mảng khác
- Va chạm được xử lý như subduction, mô hình hóa bằng cách nâng nhẹ độ cao tại vị trí va chạm
- Hiệu ứng va chạm chỉ xuất hiện ở pixel biên, nhưng mô hình xói mòn nhiệt sẽ dần lan nó ra các pixel xung quanh
- Xói mòn nhiệt đẩy độ cao của một pixel theo hướng trung bình của các ô lân cận
- Tổ hợp này có thể mô phỏng ở mức nhất định quá trình hình thành lục địa với các dãy núi
Xói mòn thủy văn và lưu vực sông
- Dáng vẻ gồ ghề của địa hình tự nhiên chủ yếu đến từ sự hình thành lưu vực sông, vốn bào mòn cảnh quan thành các mẫu phân nhánh quen thuộc
- Vì bản đồ địa hình của cả hành tinh có độ phân giải thấp, mô hình cần có khả năng mô phỏng cả những con sông rộng 1 pixel
- Mô hình đơn giản của Barnes (2018) đáp ứng yêu cầu này
- Mỗi pixel kiểm tra 8 ô lân cận để tìm hướng có độ giảm cao lớn nhất
- Các ô chéo ở xa hơn nên được hiệu chỉnh
- Hướng dốc xuống mạnh nhất trở thành hướng nước chảy ra từ pixel đó
- Nước ban đầu được phân bố vào các ô dưới dạng mưa, rồi di chuyển giữa các pixel lân cận ở mỗi bước thời gian
- Xói mòn được xử lý theo stream power law
- Sử dụng
elevation,watervàslopetheo hướng nước di chuyển của ô hiện tại - Mức giảm độ cao được giới hạn để không thấp hơn vị trí mà nước đang chảy tới
- Sử dụng
- Khi dòng chảy và xói mòn tương tác với nhau, các lưu vực sông tự nhiên dần hình thành trên địa hình
- Nếu tô màu các thủy hệ liên thông theo vị trí cửa sông, có thể tạo ra hình ảnh gợi nhớ đến bản đồ lưu vực sông thực tế
- Cũng có cung cấp original shader của lưu vực sông mô phỏng
Mô hình khí hậu toàn cầu
- Hệ thống khí hậu của toàn bộ hành tinh rất phức tạp, nhưng trong mô phỏng này nó được xấp xỉ theo cách tương đối đơn giản
- Yếu tố cốt lõi dẫn động mô phỏng khí hậu là bản đồ áp suất mực nước biển trung bình (MSLP) được tạo theo thủ tục
- Theo Climate Cookbook, các yếu tố chính để tạo bản đồ MSLP là vị trí đất liền giữa đại dương và ảnh hưởng của vĩ độ
- Khi lấy dữ liệu MSLP thực của Trái Đất, tách riêng đất liền và biển rồi vẽ theo vĩ độ, sẽ thu được hai đường sin có hình dạng hơi khác nhau
- Mô hình áp suất trung bình năm được tính bằng công thức theo vĩ độ, tách riêng đất liền và biển
- Đất liền:
1012.5 - 6. * cos(lat*PI/45.) - Biển:
1014.5 - 20. * cos(lat*PI/30.)
- Đất liền:
- Nếu tính riêng đất liền và biển, biên chuyển tiếp sẽ xuất hiện gián đoạn sắc nét
- Trong thực tế, do khuếch tán cục bộ của áp suất, MSLP thay đổi mượt hơn ở vùng chuyển tiếp giữa biển và đất liền
- Quá trình khuếch tán này được xấp xỉ bằng cách áp dụng Gaussian blur lên bản đồ MSLP
- Độ lệch chuẩn nằm trong khoảng 10–15 độ
- Biến thiên theo mùa được hiện thực bằng cách mô hình hóa thêm chênh lệch MSLP giữa tháng 1 và tháng 7
- Chênh lệch này cũng tuân theo mẫu hình sin từ dữ liệu Trái Đất
- Sau khi chỉnh tham số và áp dụng Gaussian blur, nó được kết hợp với MSLP trung bình năm
- Từ MSLP, mô phỏng tạo ra gió và nhiệt độ
- Trong thực tế, nhiệt độ tạo ra áp suất, nhưng ở đây mô phỏng tận dụng mối tương quan giữa chúng
seasondao động giữa -1 và 1 trong suốt một năm
- Gió có xu hướng đi từ vùng áp cao sang áp thấp, nhưng ở quy mô toàn cầu còn phải xét tới lực Coriolis
- Lực Coriolis khiến gió lưu thông quanh các vùng áp suất
- Vector vận tốc được tính bằng cách kết hợp thành phần Coriolis và gradient áp suất
- Mô phỏng còn khá thô này vẫn tạo ra các mẫu tuần hoàn gió giống thực tế
- Nó cũng tái hiện hiện tượng gió đảo chiều trong mùa gió mùa ở khu vực Ấn Độ
- Lượng mưa được mô phỏng bằng cách advection hơi nước từ biển vào đất liền dọc theo trường vector gió
- Advection được hiện thực theo cách tương tự mô phỏng chất lưu
Phân bố sự sống và động lực học thú săn mồi - con mồi
- Khí hậu ảnh hưởng đến phân bố sự sống trên hành tinh
- Mẫu mưa và biến thiên nhiệt độ quyết định tốc độ tăng trưởng của thực vật
- Khi mùa thay đổi, động vật ăn cỏ di chuyển đến những nơi có đủ thảm thực vật để duy trì chúng
- Thú săn mồi đi theo các đàn động vật ăn cỏ đang bám theo thảm thực vật
- Những động lực này được mô tả bằng mô hình khuếch tán Lotka–Volterra
- Các thành phần
xyzcủa biếnclần lượt biểu thị quần thể thực vật, động vật ăn cỏ và thú săn mồi - Động lực học quần thể động vật ở quy mô lớn tạo ra những mẫu hình thú vị
- Trong thực tế, các mẫu như vậy dễ thấy nhất ở quần thể vi sinh vật trong đĩa petri, nhưng các quy luật tương tự cũng áp dụng cho quần thể động vật lớn trên toàn thế giới
Loài người và phát thải carbon
- Sau giai đoạn Trái Đất sơ khai, tốc độ mô phỏng chậm lại thành chu kỳ ngày và đêm, kiến tạo mảng trở nên khó nhận ra và địa hình được cố định
- Vào ban đêm, khi loài người thuộc địa hóa bề mặt hành tinh, các mẫu ánh sáng chưa từng có xuất hiện
- Sự mở rộng nhanh chóng của loài người đi kèm với việc đốt nhiên liệu hóa thạch
- Trong vài trăm năm, loài người đốt hết mọi tài nguyên nhiên liệu hóa thạch sẵn có và thải 5 nghìn tỷ tấn carbon vào khí quyển
- Lượng phát thải này làm tăng hiệu ứng nhà kính, nâng nhiệt độ trung bình toàn cầu gần 10 độ C
- Vì nhiệt độ cực đoan, các vùng đất rộng lớn quanh xích đạo trở nên không thể sinh sống
- Kết quả là loài người biến mất khỏi phần lớn hành tinh
1 bình luận
Ý kiến trên Hacker News
Dù rất ấn tượng, phần cuối nói rằng một nền văn minh có ánh sáng ban đêm tất yếu sẽ đốt hết mọi nhiên liệu hóa thạch và biến hành tinh thành sa mạc có vẻ là một giả định chỉ dựa vào một trong các con đường khả dĩ của nền văn minh chúng ta
Không có cơ sở nào để cho rằng chết vì nóng lên và sa mạc hóa là hợp lý hơn so với chiến tranh hạt nhân, phát triển được nhiệt hạch sạch, đại dịch, hay xâm chiếm một hành tinh kiểu Trái Đất được tạo theo thủ tục ở gần đó
Khi mô phỏng những gì đã thực sự xảy ra thì rất tuyệt, nhưng chỉ tốt cho đến trước khi ý kiến chủ quan chen vào
Hơn nữa, có vẻ họ còn đánh đồng nhiệt với khô hạn, và cũng không xét đến tác động của CO2 bổ sung lên thực vật. Ngay cả khi vành đai xích đạo trở nên nóng đến mức con người không sống nổi, vẫn hoàn toàn có khả năng nó sẽ được phủ bởi rừng rậm chứ không phải sa mạc
Cách tiếp cận này phần lớn bỏ qua các hiệu ứng bậc hai như đã nói ở trên
Tôi thừa nhận rằng sa mạc hóa ở phần cuối là một chút tự do nghệ thuật để kể câu chuyện bằng hình ảnh dễ hơn. Thực tế chắc chắn phức tạp hơn nhiều
Nó chỉ là câu chuyện về một kịch bản khả dĩ cụ thể, và ở nơi khác cũng đã viết như vậy: “Phần cuối nhằm thể hiện một tương lai có thể xảy ra nhưng có lẽ ít khả năng. Tôi muốn làm nó kịch tính, nên đã mô tả kết quả cực đoan là theo nghĩa đen tất cả nhiên liệu hóa thạch đều bị đốt cháy, nhưng với các hiệu ứng còn lại, tôi đã đọc các bài báo khoa học về giả định đó và cố giữ chúng thực tế nhất có thể.”
https://www.vice.com/en/article/xgx7nq/watch-four-billion-ye...
Vào năm 1996/1997, tôi từng làm một game CD-ROM mô phỏng chuyển động kiến tạo mảng, nhiệt độ, độ cao và lượng mưa trong hàng triệu năm
Thật đáng kinh ngạc khi thấy phần cứng và phần mềm máy tính đã tiến bộ đến mức nào trong 28 năm: https://www.kmoser.com/evolution/
Bản thân ý tưởng mô phỏng một hành tinh và các loài động vật trên đó khi ấy đã hoàn toàn gây sốc, và đến giờ vẫn vậy. Lẽ ra tôi nên giữ tấm poster đi kèm; các nhánh tiến hóa sapiens khác nhau thật sự rất thú vị
Tôi đã nghĩ sẽ thật tuyệt nếu có thể thao tác chuyển động dự đoán của các mảng trên một quả địa cầu 3D có thanh trượt thời gian, để trực quan hóa quá trình chúng trở thành địa hình hiện nay. Bạn có biết thứ nào như vậy không?
[1] https://www.goodreads.com/book/show/19898.Assembling_Califor...
[2] trích đoạn: https://www.newyorker.com/magazine/1992/09/07/assembling-cal...
Có một cuốn hard SF tuyệt vời rất liên quan đến chủ đề này là Permutation City. Khi thấy tiêu đề bài này, tôi có cảm giác như đang ở trong mơ
Hơi lạc đề một chút, nhưng truyện ngắn xuất sắc "I don't know, Timmy, being God is a big responsibility" theo một nghĩa nào đó cũng nói về mô phỏng thế giới, và thật sự rất hay:
https://qntm.org/responsibility
Trong nhiều năm tôi đã muốn viết một câu chuyện có cốt truyện rất giống vậy, nhưng có một lỗ hổng lớn trong mạch truyện là overhead tính toán giữa các vũ trụ, và tôi đã không nghĩ đến cách giải quyết bằng máy tính lượng tử
Một khác biệt nữa trong câu chuyện tôi hình dung là các nhân vật sẽ viết chính câu chuyện đó, nó trở thành câu chuyện “của tôi”, và họ tạo ra một biến có giá trị tăng thêm 1 ở mỗi vũ trụ, để đến đoạn kết người đọc biết mình đang ở độ sâu thứ mấy
Người đang đọc điều này trên HN đang ở độ sâu cấp 8474771628371839
Có lẽ đây là lần đầu tôi gặp nhiều phiên bản của một tác phẩm hư cấu, ngoài sách giáo khoa. Nếu không soi mói các lỗ hổng về logic hay vật lý, tôi thật sự thích kiểu bài viết dạng thí nghiệm tư duy này
Tôi thích ý tưởng đa vũ trụ trong đó mọi vũ trụ về cơ bản giống hệt nhau nên phần lớn trở nên vô nghĩa
Phần kịch, vật lý và kết thúc đều được xử lý khác, nhưng nó để lại một trạng thái suy tưởng dễ chịu tương tự. Tôi suýt viết ra tên phim hoặc tên đạo diễn, nhưng nhận ra chỉ riêng ngữ cảnh này thôi cũng có thể là spoiler lớn nên đã dừng lại
Có lẽ tôi đã mã hóa cái tên trong bình luận này. Thành thật mà nói là tôi đã thử, và giờ đã khuya, nên với các công cụ tìm kiếm ngày nay có thể vẫn tìm ra được
Một trong những môn học tôi thích nhất ở đại học là phân tích chính sách năng lượng, và tôi đã thử nghiệm với mô hình EPPA do MIT phát triển
Tôi đã thử thay đổi các tham số cụ thể, kiểu như nếu chi phí lưu trữ năng lượng giảm xuống còn một phần mười thì mọi thứ sẽ diễn biến ra sao. Rất thú vị, nhưng tiếc là khi đi làm tôi không tìm được cơ hội để thử những thứ tương tự
[0]: https://globalchange.mit.edu/research/research-tools/eppa
Nói thật thì, rõ ràng mô phỏng đã bỏ qua một vài chi tiết :)
Không hiểu vì sao, tất cả ví dụ Shadertoy được nhúng trên trang đều chạy ở khoảng 0,6 FPS trong môi trường của tôi
Nếu mở “final shader” được liên kết trên trang web Shadertoy thì chạy ổn ở 60fps
Thỉnh thoảng tôi tự hỏi sống trong một vũ trụ được mô phỏng sẽ có cảm giác như thế nào
Nếu chúng ta có thể “nhìn” ra “bên ngoài” của “vũ trụ”, có lẽ chúng ta sẽ hiểu rằng thực tại của mình rất đơn giản và hạn chế so với “thực tại” bên ngoài. Cấu trúc này có thể tiếp diễn vô hạn, hoặc thực tại bên ngoài có thể logic hơn chúng ta rất nhiều đến mức khiến ta chấp nhận tính hữu hạn
Nhưng vì chúng ta có khởi đầu và dòng chảy thời gian, nên có lẽ cũng có sự ra đời, người mẹ, thậm chí có thể là mục đích. Tất nhiên đây là lối nghĩ rất con người, và tất cả cũng có thể chỉ là một nồi súp ngẫu nhiên
Hãy tưởng tượng trong một mô phỏng do chúng ta tạo ra có các chủ thể tự nhận thức và họ bắt đầu nghĩ như vậy. Mọi người sẽ cười nhạo rằng “chúng ta chỉ là ngẫu nhiên thôi, không có thần thánh hay thiết kế nào cả, ai lại tốn nhiều năng lượng như thế cho một khối không gian trống khổng lồ vô dụng này chứ”, và anh ta sẽ phải đồng ý ở một mức nào đó, nhưng đồng thời cũng sai ở một mức nào đó
Việc phát hiện ra chúng ta cũng không đem lại sự an ủi. Vì chúng ta cũng không thể nói cho họ biết gì về người thiết kế của chính mình. Cũng vì lý do đó, nếu chúng ta phát hiện ra họ thì cũng chẳng được an ủi. Vì thế khái niệm Thượng đế là ngớ ngẩn. Nếu Thượng đế cũng có Thượng đế thì giờ phải làm gì? Chấp nhận sự tồn tại của ông ấy cũng không giải quyết được vấn đề nào
Có lẽ đó là một mức độ chủ nghĩa hư vô nào đó, nhưng nhờ vậy tôi không bị choáng ngợp
Chưa ai từng nói mô phỏng nhất thiết phải chạy trên chất bán dẫn
Không hiểu vì sao chỉ dùng fragment shader. Nếu có cả vertex shader cho heightmap thì đã có thể zoom tới tận bề mặt rồi
Có câu “written entirely in GLSL fragment shaders”, vậy đó là ngôn ngữ gì?
Nhạc thì khá sáo mòn. Có lẽ do AI tạo ra cũng nên
Ban đầu nó được John Murphy sáng tác cho phim Sunshine năm 2007
https://en.wikipedia.org/wiki/Sunshine:_Music_from_the_Motio...