GPU에서 세계 시뮬레이션
40억 년을 4분 만에
- 이 글은 GLSL 프래그먼트 셰이더로 작성된 절차적 지구 시뮬레이션 구현에 대해 다룸
- 지구와 유사한 행성의 전체 역사를 몇 분 만에 시뮬레이션하며, 초당 60프레임으로 업데이트됨
원시 행성
- 45억 년 전, 용암 덩어리로 시작된 이야기
- 초기 지구는 소행성 충돌로 인해 붉고 뜨거운 원시 행성이었음
- 절차적으로 생성된 지형 맵을 통해 지형의 높이를 계산함
- 다양한 크기의 소행성 충돌구를 생성하고, 이를 통해 지형의 높이를 결정함
- 소행성 충돌구는 3D 그리드에서 생성되며, 해시 함수를 사용해 불규칙성을 부여함
- 최종적으로 생성된 높이 맵은 초기 지구의 모습을 재현함
판 구조론
- 산맥, 해구, 대륙 지형을 형성하기 위해 판 구조론 모델을 사용함
- 초기 속도로 판의 시드 위치를 무작위로 생성하고, 시간이 지남에 따라 판이 성장함
- 판의 경계에서 충돌이 발생하면 지형의 높이가 증가함
- 이 충돌은 열 침식 모델을 통해 주변 픽셀로 확산됨
수리 침식
- 자연 지형의 거친 모습은 주로 강 유역의 형성에 의해 결정됨
- 저해상도 지형 맵에서도 강을 시뮬레이션할 수 있는 모델을 사용함
- 각 픽셀은 주변 8개의 픽셀을 검사하여 가장 큰 경사 방향으로 물이 흐름
- 침식은 스트림 파워 법칙에 의해 구동됨
- 물의 흐름과 침식의 상호작용으로 자연스러운 강 유역이 형성됨
전 지구 기후
- 기후 시스템 시뮬레이션은 평균 해수면 기압(MSLP) 맵을 기반으로 함
- MSLP 맵은 육지와 해양의 위치 및 위도의 영향을 받음
- 계절 변화에 따라 기후 패턴이 변하도록 MSLP 맵을 조정함
- MSLP를 기반으로 바람과 온도를 생성함
- 바람은 고기압에서 저기압으로 이동하며, 코리올리 효과를 고려함
- 강수량은 바람 벡터 필드를 통해 해양에서 육지로 이동함
생명
- 기후는 행성의 생명 분포에 영향을 미침
- 강수 패턴과 온도 변화는 식물 성장 속도를 결정함
- 계절 변화에 따라 초식동물과 포식동물이 이동함
- Lotka-Volterra 확산 모델을 사용해 이러한 동적 변화를 시뮬레이션함
인류
- 초기 지구의 서막이 끝나고, 인류가 행성 표면을 식민지화함
- 화석 연료를 태우며 대기 중에 탄소를 방출함
- 수백 년 동안 인류는 모든 화석 연료 자원을 소모하고, 대기 중에 5조 톤의 탄소를 방출함
- 이로 인해 온실 효과가 강화되고, 지구 평균 온도가 약 10도 상승함
- 적도 주변의 넓은 지역이 극한 온도로 인해 사람이 살 수 없게 됨
GN⁺의 정리
- 이 글은 절차적 지구 시뮬레이션의 구현 과정을 상세히 설명함
- GLSL 프래그먼트 셰이더를 사용해 지형, 판 구조론, 수리 침식, 기후, 생명 등을 시뮬레이션함
- 인류의 활동이 지구 환경에 미치는 영향을 시뮬레이션하여 경각심을 일깨움
- 유사한 기능을 가진 프로젝트로는 "SimEarth"와 "Universe Sandbox"가 추천됨