1P by neo 2달전 | favorite | 댓글 1개

GPU에서 세계 시뮬레이션

40억 년을 4분 만에

  • 이 글은 GLSL 프래그먼트 셰이더로 작성된 절차적 지구 시뮬레이션 구현에 대해 다룸
  • 지구와 유사한 행성의 전체 역사를 몇 분 만에 시뮬레이션하며, 초당 60프레임으로 업데이트됨

원시 행성

  • 45억 년 전, 용암 덩어리로 시작된 이야기
  • 초기 지구는 소행성 충돌로 인해 붉고 뜨거운 원시 행성이었음
  • 절차적으로 생성된 지형 맵을 통해 지형의 높이를 계산함
  • 다양한 크기의 소행성 충돌구를 생성하고, 이를 통해 지형의 높이를 결정함
  • 소행성 충돌구는 3D 그리드에서 생성되며, 해시 함수를 사용해 불규칙성을 부여함
  • 최종적으로 생성된 높이 맵은 초기 지구의 모습을 재현함

판 구조론

  • 산맥, 해구, 대륙 지형을 형성하기 위해 판 구조론 모델을 사용함
  • 초기 속도로 판의 시드 위치를 무작위로 생성하고, 시간이 지남에 따라 판이 성장함
  • 판의 경계에서 충돌이 발생하면 지형의 높이가 증가함
  • 이 충돌은 열 침식 모델을 통해 주변 픽셀로 확산됨

수리 침식

  • 자연 지형의 거친 모습은 주로 강 유역의 형성에 의해 결정됨
  • 저해상도 지형 맵에서도 강을 시뮬레이션할 수 있는 모델을 사용함
  • 각 픽셀은 주변 8개의 픽셀을 검사하여 가장 큰 경사 방향으로 물이 흐름
  • 침식은 스트림 파워 법칙에 의해 구동됨
  • 물의 흐름과 침식의 상호작용으로 자연스러운 강 유역이 형성됨

전 지구 기후

  • 기후 시스템 시뮬레이션은 평균 해수면 기압(MSLP) 맵을 기반으로 함
  • MSLP 맵은 육지와 해양의 위치 및 위도의 영향을 받음
  • 계절 변화에 따라 기후 패턴이 변하도록 MSLP 맵을 조정함
  • MSLP를 기반으로 바람과 온도를 생성함
  • 바람은 고기압에서 저기압으로 이동하며, 코리올리 효과를 고려함
  • 강수량은 바람 벡터 필드를 통해 해양에서 육지로 이동함

생명

  • 기후는 행성의 생명 분포에 영향을 미침
  • 강수 패턴과 온도 변화는 식물 성장 속도를 결정함
  • 계절 변화에 따라 초식동물과 포식동물이 이동함
  • Lotka-Volterra 확산 모델을 사용해 이러한 동적 변화를 시뮬레이션함

인류

  • 초기 지구의 서막이 끝나고, 인류가 행성 표면을 식민지화함
  • 화석 연료를 태우며 대기 중에 탄소를 방출함
  • 수백 년 동안 인류는 모든 화석 연료 자원을 소모하고, 대기 중에 5조 톤의 탄소를 방출함
  • 이로 인해 온실 효과가 강화되고, 지구 평균 온도가 약 10도 상승함
  • 적도 주변의 넓은 지역이 극한 온도로 인해 사람이 살 수 없게 됨

GN⁺의 정리

  • 이 글은 절차적 지구 시뮬레이션의 구현 과정을 상세히 설명함
  • GLSL 프래그먼트 셰이더를 사용해 지형, 판 구조론, 수리 침식, 기후, 생명 등을 시뮬레이션함
  • 인류의 활동이 지구 환경에 미치는 영향을 시뮬레이션하여 경각심을 일깨움
  • 유사한 기능을 가진 프로젝트로는 "SimEarth"와 "Universe Sandbox"가 추천됨
Hacker News 의견
  • "I don't know, Timmy, being God is a big responsibility"라는 단편 소설이 세계 시뮬레이션 주제를 다루고 있음
  • 문명에 야간 조명이 있으면 화석 연료를 모두 태워 사막화된다는 가정은 우리의 문명 궤적에만 기반한 것임
    • 핵전쟁, 청정 융합 개발, 전염병, 외계 행성 침략 등 다른 가능성도 있음
    • 온도 상승이 건조함과 동일시되고 추가 CO2가 식물에 미치는 영향이 고려되지 않음
  • 1996/1997년에 판 구조 이동, 온도, 고도, 강수량을 시뮬레이션하는 CD-ROM 게임을 개발했음
    • 28년 동안 컴퓨팅 하드웨어와 소프트웨어의 발전이 놀라움
  • "Permutation City"라는 하드 SF 책이 이 주제와 관련이 깊음
    • 이 글의 제목을 읽을 때 꿈을 꾸는 듯한 느낌을 받았음
  • 대학에서 에너지 정책 분석 수업에서 MIT에서 개발한 EPPA 모델을 사용해 에너지 저장 비용을 10배 줄이는 등의 시뮬레이션을 했음
    • 매우 재미있었지만 직장에서 비슷한 일을 찾지 못했음
  • 시뮬레이션에서 일부 세부 사항이 생략되었음을 언급함
  • 왜 프래그먼트 셰이더만 사용하는지 의문을 가짐
    • 높이 맵을 위한 버텍스 셰이더도 사용하면 표면까지 확대할 수 있음
  • Shadertoy 예제가 페이지에서 0.6 FPS로 재생되지만 Shadertoy 웹사이트에서는 60 FPS로 잘 재생됨
  • 가끔 시뮬레이션된 우주에서 사는 것이 어떤 느낌일지 궁금해함
  • 전체 비디오에 동반된 음악이 익숙했지만 출처를 알 수 없었음
    • AI가 생성한 음악일 가능성도 있음