Simulando um mundo na GPU
4 bilhões de anos em 4 minutos
- Este texto aborda a implementação de uma simulação procedural da Terra escrita em um fragment shader GLSL
- Simula toda a história de um planeta semelhante à Terra em poucos minutos, com atualização a 60 quadros por segundo
Planeta primordial
- A história começa há 4,5 bilhões de anos, com uma massa de lava
- A Terra primitiva era um planeta primordial vermelho e quente devido aos impactos de asteroides
- A altura do terreno é calculada por meio de um mapa de relevo gerado proceduralmente
- Crateras de impacto de asteroides de vários tamanhos são geradas, e a altura do terreno é determinada a partir delas
- As crateras de impacto de asteroides são geradas em uma grade 3D, usando uma função hash para dar irregularidade
- O mapa de altura gerado ao final recria a aparência da Terra primitiva
Tectônica de placas
- Um modelo de tectônica de placas é usado para formar cadeias de montanhas, fossas oceânicas e relevo continental
- As posições iniciais das sementes das placas são geradas aleatoriamente com velocidades iniciais, e as placas crescem com o tempo
- Quando ocorrem colisões nas fronteiras das placas, a altura do terreno aumenta
- Essas colisões se espalham para os pixels ao redor por meio de um modelo de erosão térmica
Erosão hídrica
- O aspecto áspero do relevo natural é determinado principalmente pela formação de bacias fluviais
- É usado um modelo que consegue simular rios mesmo em mapas de relevo de baixa resolução
- Cada pixel verifica os 8 pixels ao redor, e a água flui na direção de maior declive
- A erosão é impulsionada pela lei de stream power
- A interação entre o fluxo de água e a erosão forma bacias fluviais naturais
Clima global
- A simulação do sistema climático se baseia em um mapa de pressão média ao nível do mar (MSLP)
- O mapa de MSLP é influenciado pela posição de terras e oceanos e pela latitude
- O mapa de MSLP é ajustado para que os padrões climáticos mudem conforme as estações
- A partir do MSLP, são gerados os ventos e a temperatura
- Os ventos se movem de alta pressão para baixa pressão, considerando o efeito Coriolis
- A precipitação se desloca do oceano para o continente por meio do campo vetorial dos ventos
Vida
- O clima afeta a distribuição da vida no planeta
- Os padrões de precipitação e as variações de temperatura determinam a taxa de crescimento das plantas
- Herbívoros e predadores migram de acordo com as mudanças sazonais
- Essas mudanças dinâmicas são simuladas com um modelo de difusão de Lotka-Volterra
Humanidade
- Quando termina o prólogo da Terra primitiva, a humanidade coloniza a superfície do planeta
- Queima combustíveis fósseis e libera carbono na atmosfera
- Ao longo de centenas de anos, a humanidade consome todos os recursos de combustíveis fósseis e libera 5 trilhões de toneladas de carbono na atmosfera
- Como resultado, o efeito estufa se intensifica e a temperatura média da Terra sobe cerca de 10 graus
- Amplas áreas ao redor do equador tornam-se inabitáveis para humanos devido às temperaturas extremas
Resumo do GN⁺
- Este texto explica em detalhes o processo de implementação de uma simulação procedural da Terra
- Usa fragment shaders GLSL para simular relevo, tectônica de placas, erosão hídrica, clima, vida e muito mais
- Ao simular o impacto das atividades humanas no ambiente da Terra, desperta um senso de alerta
- Projetos recomendados com funcionalidades semelhantes incluem "SimEarth" e "Universe Sandbox"
1 comentários
Opiniões no Hacker News