1 pontos por GN⁺ 2024-07-30 | 1 comentários | Compartilhar no WhatsApp
  • Sem texturas pré-renderizadas, a história completa de um planeta terrestre é gerada proceduralmente em poucos minutos usando apenas um fragment shader GLSL, e a simulação final é atualizada a 60 fps
  • O relevo inicial é criado convertendo latitude e longitude em coordenadas 3D e sobrepondo crateras em 5 níveis de detalhe com ruído fractional Brownian motion para formar a superfície de um planeta primitivo
  • A tectônica de placas move placas em passos discretos de tempo no nível de pixel, e a elevação causada nos pontos de colisão é espalhada ao redor por erosão térmica, aproximando a formação de cadeias de montanhas e continentes
  • A erosão hídrica faz cada pixel enviar água na direção de maior descida entre 8 vizinhos e reduz a altitude com a stream power law, permitindo criar rios com 1 pixel de largura mesmo em baixa resolução
  • Até as fases de clima, vida e humanidade, a simulação conecta pressão média ao nível do mar, vento, precipitação, modelo de difusão de Lotka–Volterra e queima de combustíveis fósseis para reunir mudanças de longo prazo na superfície planetária em uma única simulação na GPU

Simulação procedural de planeta feita com shader de GPU

  • A simulação procedural da Terra foi implementada apenas com fragment shader GLSL
  • Ela simula, em poucos minutos, toda a história de um planeta parecido com a Terra, enquanto a tela é atualizada a 60 fps
  • Também é fornecido um registro em vídeo do shader final

Geração do relevo de um planeta primitivo

  • A Terra inicial é tratada como um planeta primitivo quente e coberto de crateras causadas por impactos de asteroides
  • Como não há texturas pré-renderizadas, a primeira etapa é calcular a altura do terreno em uma latitude e longitude específicas
  • Latitude e longitude são primeiro convertidas em coordenadas cartesianas 3D
  • Como os asteroides têm tamanhos variados, crateras de vários tamanhos são sobrepostas
    • O shader repete 5 níveis de detalhe
    • As crateras são dispostas em camadas, das maiores às menores
    • Ruído fractional Brownian motion é misturado para deixar o terreno mais áspero
    • O escalonamento faz com que as maiores crateras tenham o maior impacto sobre o relevo
  • As crateras são geradas em uma grade 3D, e uma fatia da superfície da esfera é usada como terreno
    • Para evitar padrões regulares, os centros das crateras recebem offsets pseudoaleatórios nos pontos da grade com uma hash function
    • A influência das crateras pertencentes aos pontos vizinhos da grade é combinada por média com pesos exponenciais baseados na distância
    • A borda da cratera é gerada com uma curva senoidal simples
  • Ao preencher com água as áreas mais baixas, o relevo gerado proceduralmente se torna parecido com o que cientistas imaginam para a Terra primitiva
  • Com o tempo, as rochas esfriam e o vapor d’água se condensa em oceanos, enquanto o fluxo de água líquida na superfície cria vales e deixa sedimentos

Tectônica de placas e formação dos continentes

  • Para criar cadeias de montanhas, fossas oceânicas e formas continentais familiares, é necessário um modelo de tectônica de placas
  • As placas começam em posições-semente aleatórias e recebem velocidades iniciais
  • O crescimento das placas é tratado com um modelo simples de agregação
    • Pontos adjacentes são escolhidos aleatoriamente
    • Se o ponto ainda não foi atribuído a outra placa, ele é adicionado à placa atual
    • Cada pixel dentro da placa armazena a velocidade de movimento da placa
    • Esse método é parecido com diffusion-limited aggregation sem difusão
  • O movimento contínuo das placas é difícil de implementar porque exigiria tratar fronteiras deslocadas por frações de pixel
  • Em vez disso, as placas se movem exatamente 1 pixel na horizontal ou vertical em passos discretos de tempo
    • O momento do movimento é randomizado para cada placa
    • A velocidade média definida e a direção são preservadas
    • A chance de placas vizinhas se moverem ao mesmo tempo diminui
  • A colisão de placas ocorre quando um pixel de fronteira de uma placa se desloca para uma posição antes ocupada por um pixel de outra placa
  • A colisão é tratada como subduction e modelada elevando levemente a altitude no ponto de impacto
  • O efeito da colisão aparece apenas nos pixels de fronteira, mas o modelo de erosão térmica o espalha gradualmente para os pixels ao redor
    • A erosão térmica empurra a altitude de um pixel na direção da média dos vizinhos
  • Essa combinação permite simular até certo ponto a formação de continentes com cadeias de montanhas

Erosão hídrica e bacias hidrográficas

  • O aspecto acidentado do relevo natural vem em grande parte da formação de bacias hidrográficas, que erodem a paisagem em padrões ramificados familiares
  • Como o mapa de relevo que representa o planeta inteiro tem baixa resolução, o modelo precisa conseguir simular rios com 1 pixel de largura
  • O modelo simples de Barnes (2018) atende a esse requisito
  • Cada pixel examina 8 vizinhos para encontrar a direção com a maior queda de altitude
    • Os vizinhos diagonais são mais distantes, então recebem correção
    • A direção de descida mais íngreme se torna a direção pela qual a água sai daquele pixel
  • A água é inicialmente distribuída nas células pela chuva e, a cada passo de tempo, se move entre pixels vizinhos
  • A erosão é tratada de acordo com a stream power law
    • Usa elevation, water e a slope na direção para onde a água está se movendo
    • A redução de altitude é limitada para não ficar abaixo do ponto para onde a água escoa
  • Com a interação entre fluxo de água e erosão, as bacias hidrográficas se formam naturalmente no relevo
  • Ao colorir os cursos d’água conectados de acordo com a posição de sua foz, é possível criar uma visualização que lembra mapas reais de bacias hidrográficas
  • O shader original da bacia hidrográfica simulada também é fornecido

Modelo climático global

  • O sistema climático de um planeta inteiro é complexo, mas nesta simulação ele é aproximado de forma relativamente simples
  • O principal motor da simulação climática é um mapa de pressão média ao nível do mar (MSLP) gerado proceduralmente
  • Segundo o Climate Cookbook, os principais fatores para gerar um mapa de MSLP são a posição das massas de terra em relação aos oceanos e o efeito da latitude
  • Ao separar os dados reais de MSLP da Terra entre terra e mar e plotá-los por latitude, surgem duas curvas senoidais de formato um pouco diferente
  • O modelo de pressão média anual é calculado com fórmulas baseadas na latitude, separando terra e mar
    • Terra: 1012.5 - 6. * cos(lat*PI/45.)
    • Mar: 1014.5 - 20. * cos(lat*PI/30.)
  • Calcular terra e mar separadamente cria descontinuidades bruscas nas fronteiras
  • Na realidade, por causa da difusão local da pressão, a MSLP varia de forma suave na transição entre oceano e continente
  • Esse processo de difusão é aproximado aplicando um Gaussian blur ao mapa de MSLP
    • O desvio padrão fica na faixa de 10–15 graus
  • A variação sazonal é implementada modelando adicionalmente a diferença de MSLP entre janeiro e julho
    • Essa diferença também segue um padrão senoidal nos dados da Terra
    • Após ajustar os parâmetros e aplicar Gaussian blur, ela é combinada com a MSLP média anual
  • A partir da MSLP, são gerados vento e temperatura
    • Na realidade, a temperatura cria a pressão, mas aqui a correlação é aproveitada
    • season oscila entre -1 e 1 ao longo de um ano
  • O vento tende a ir de alta para baixa pressão, mas em escala global também é preciso considerar a força de Coriolis
    • A força de Coriolis faz o vento circular ao redor das áreas de pressão
    • O vetor velocidade é calculado combinando o termo de Coriolis e o gradiente de pressão
  • Essa simulação relativamente grosseira produz padrões de circulação de vento realistas
  • O fenômeno de reversão dos ventos durante a estação das monções na região da Índia também é reproduzido
  • A precipitação é simulada por advecção do vapor d’água do oceano para o continente ao longo do campo vetorial dos ventos
  • A advecção é implementada de forma semelhante à usada em simulação de fluidos

Distribuição da vida e dinâmica predador-presa

  • O clima influencia a distribuição da vida no planeta
  • Padrões de chuva e variações de temperatura determinam a taxa de crescimento da vegetação
  • Quando as estações mudam, os herbívoros migram para áreas com vegetação suficiente para sustentá-los
  • Os predadores seguem os herbívoros, que por sua vez seguem a vegetação
  • Essa dinâmica é capturada com um modelo de difusão de Lotka–Volterra
  • Os componentes xyz da variável c representam respectivamente as populações de vegetação, herbívoros e predadores
  • A dinâmica populacional de animais em grande escala cria padrões interessantes
  • No mundo real, esses padrões são mais fáceis de observar em populações microbianas em placas de Petri, mas as mesmas leis também se aplicam a populações de grandes animais em escala global

Humanidade e emissões de carbono

  • Depois de passar pela fase da Terra inicial, a velocidade da simulação desacelera para o ciclo de dia e noite, a tectônica de placas se torna difícil de perceber e o relevo fica fixo
  • À noite, à medida que a humanidade coloniza a superfície do planeta, surgem padrões de luz sem precedentes
  • A rápida expansão humana vem acompanhada da queima de combustíveis fósseis
  • Ao longo de algumas centenas de anos, a humanidade queima todos os recursos disponíveis de combustíveis fósseis e emite 5 trilhões de toneladas de carbono na atmosfera
  • Essas emissões intensificam o efeito estufa e elevam a temperatura média global em quase 10 graus Celsius
  • Devido às temperaturas extremas, vastas áreas terrestres próximas ao equador se tornam inabitáveis
  • Como resultado, a humanidade desaparece de uma parte significativa do planeta

1 comentários

 
GN⁺ 2024-07-30
Opiniões no Hacker News
  • É interessante, mas a parte no final em que uma civilização com iluminação noturna inevitavelmente queima todos os combustíveis fósseis e transforma o planeta em um deserto parece uma suposição baseada em apenas um caminho possível da nossa civilização
    Não há motivo para considerar a morte por aquecimento e desertificação mais plausível do que guerra nuclear, desenvolvimento de fusão nuclear limpa, pandemia ou invasão de um planeta semelhante à Terra gerado proceduralmente nas proximidades
    É ótimo quando simula o que realmente aconteceu, mas só até começar a inserir opinião
    Além disso, parece equiparar calor a aridez e não considerar o efeito do CO2 adicional sobre as plantas. Mesmo que a faixa equatorial fique quente demais para humanos viverem, há uma boa chance de ela acabar coberta por selvas, não por desertos

    • Tenho dúvidas sobre algumas frases, mas concordo no geral. Infelizmente, vivemos em um mundo Excel, e predomina a ideia de que devemos modelar um mundo complexo em planilhas e tomar decisões com base nos resultados delas
      Essa abordagem em geral ignora os efeitos de segunda ordem mencionados acima
    • Para referência, a simulação incorpora, ainda que de forma rudimentar, o efeito de o calor aumentar a absorção de vapor d’água pelos oceanos e acelerar o crescimento das plantas, o que por sua vez aumenta a taxa de sequestro de carbono
      Reconheço que a desertificação no final é uma certa licença artística para facilitar a narrativa visual. A realidade seria muito mais complexa
      É apenas a história de um cenário possível específico, e isso foi dito também em outro lugar: “A parte final pretende mostrar um futuro possível, mas provavelmente improvável. Eu queria torná-la dramática, então retratei o resultado extremo de literalmente todos os combustíveis fósseis sendo queimados, mas tentei manter os outros efeitos tão realistas quanto possível lendo artigos científicos sobre essa suposição.”
      https://www.vice.com/en/article/xgx7nq/watch-four-billion-ye...
  • Em 1996/1997 trabalhei em um jogo em CD-ROM que simulava tectônica de placas, temperatura, altitude e precipitação ao longo de milhões de anos
    É impressionante ver quanto o hardware e o software de computação avançaram em 28 anos: https://www.kmoser.com/evolution/

    • É a primeira vez que vejo alguém que conhece esse jogo, e é ótimo saber que você foi um dos desenvolvedores. Joguei por volta dos 13 anos e adorava
      A própria ideia de simular um planeta e os animais nele era absolutamente chocante na época, e ainda é. Eu deveria ter guardado o pôster que vinha junto; os vários ramos evolutivos dos sapiens eram realmente fascinantes
    • Legal. Li recentemente Assembling California, do John McPhee, e recomendo muito
      Pensei que seria ótimo ter um globo 3D com um controle deslizante de tempo para manipular os movimentos previstos das placas e visualizar como elas chegam à topografia atual. Você conhece algo assim?
      [1] https://www.goodreads.com/book/show/19898.Assembling_Califor...
      [2] trecho: https://www.newyorker.com/magazine/1992/09/07/assembling-cal...
  • Um excelente livro de hard sci-fi muito relacionado a esse tema é Permutation City. Quando vi o título deste artigo, tive a sensação de estar dentro de um sonho

    • Ainda não li Permutation City, mas Diaspora é um dos meus romances de ficção científica favoritos. Preciso arrumar tempo para ler
    • Permutation City é excelente. Greg Egan também disponibiliza em seu site muitos contos gratuitos que exploram física: https://www.gregegan.net/
    • Terminei de ler esse livro ontem e tive exatamente a mesma reação
  • Saindo um pouco pela tangente, o conto curto e excelente "I don't know, Timmy, being God is a big responsibility" trata, em certo sentido, de simulação de mundos e é muito bom:
    https://qntm.org/responsibility

    • Eu gostaria de ler os finais alternativos desse conto
      Durante anos quis escrever uma história com uma trama muito parecida, mas havia um grande furo de enredo no overhead computacional entre universos, e eu não tinha pensado em resolver isso com computadores quânticos
      Outra diferença na história que eu imaginava era que os personagens escreveriam essa história, ela se tornaria “minha” história, e criariam uma variável cujo valor aumentaria em 1 a cada universo, permitindo que no final o leitor soubesse em que nível de profundidade está
      Quem estiver lendo isso no HN está no nível de profundidade 8474771628371839
    • Para ir ainda mais fundo nessa tangente, recomendo The Trouble With Bubbles, de Philip K. Dick. Ele imagina convidados de coquetéis dos anos 60 exibindo seus terrários em escala de planetas em miniatura
    • Não tenho muita certeza de como devo ler isso. Fico confuso se devo ler a versão mais recente linkada no topo da página ou se a versão apresentada aqui é a mais canônica
      Acho que é a primeira vez que me deparo com várias versões em ficção, fora livros didáticos. Gosto muito desse tipo de texto em forma de experimento mental, desde que não se explorem brechas de lógica ou de física
      Gosto da ideia de um multiverso em que todos os universos são praticamente idênticos, tornando a maior parte dele sem sentido
    • Acho ótimo que uma cientista da computação quântica de renome mundial, que fez uma descoberta que vira de cabeça para baixo tudo o que a humanidade sabe, continue preocupada até o fim em perder o ônibus
    • Ao assistir a uma ótima série de TV lançada nas últimas décadas, uma cena me pareceu uma homenagem clara a esse conto
      O drama, a física e o final foram tratados de maneiras diferentes, mas deixou um estado de reflexão agradável parecido. Quase escrevi o título ou o nome do diretor, mas percebi que, só por este contexto, isso poderia ser um grande spoiler, então parei
      Talvez eu tenha cifrado o nome dentro deste comentário. Sinceramente, eu tentei, e agora é tarde da noite, então talvez os mecanismos de busca de hoje consigam descobrir
  • Uma das minhas aulas favoritas na universidade foi análise de políticas energéticas, e fiz experimentos com o modelo EPPA desenvolvido pelo MIT
    Eu alterava parâmetros específicos, como o que aconteceria se o custo de armazenamento de energia caísse para um décimo. Foi muito divertido, mas infelizmente nunca encontrei no trabalho uma oportunidade de fazer algo parecido
    [0]: https://globalchange.mit.edu/research/research-tools/eppa

  • Para falar a verdade, a simulação claramente omitiu alguns detalhes :)

  • Não sei por quê, mas todos os exemplos do Shadertoy incorporados na página rodam a cerca de 0,6 FPS no meu ambiente
    Se eu abro o “final shader” linkado no site do Shadertoy, ele roda bem a 60 fps

    • Se for como no meu navegador, há um botão de reprodução cortado abaixo do botão de voltar; clicar nele resolve
  • Às vezes fico pensando em como seria viver em um universo simulado

    • Em certo sentido, já se pode dizer que é isso. O que é uma simulação? É apenas seguir um conjunto de regras mais simples do que o ambiente mais complexo que a executa
      Se pudéssemos “ver” o “fora” do “universo”, talvez entendêssemos que a nossa realidade é muito simples e limitada em comparação com a “realidade” externa. Essa estrutura poderia continuar infinitamente, ou a realidade externa poderia ser muito mais lógica que a nossa, levando-nos a aceitar sua finitude
      Mas, como temos um começo e a passagem do tempo, talvez também haja um nascimento, uma mãe e quem sabe até um propósito. Claro que essa é uma forma de pensar muito humana, e tudo pode ser apenas uma sopa aleatória
      Imagine que exista uma entidade autoconsciente dentro de uma simulação que criamos, e que ela comece a pensar a mesma coisa. Todos ririam dizendo “somos só aleatórios, não há deus nem projeto, por que alguém gastaria tanta energia com esse monte enorme e inútil de espaço vazio?”, e ela teria de concordar em parte, mas ao mesmo tempo estaria parcialmente errada
      Descobrir a nossa existência não serviria de consolo, porque também não podemos dizer nada sobre os nossos próprios projetistas. Pelo mesmo motivo, se nós os descobríssemos, isso não seria consolo. Por isso o conceito de deus é tolo. Se deus também tem um deus, o que fazemos agora? Aceitar a existência dele não resolve nada
    • Sempre que penso nisso, fico me perguntando se isso realmente importa. Mesmo rodando os cenários “sim” e “não”, eles não me dão nenhum grande insight
      Talvez isso seja um certo niilismo, mas é por isso que não fico sobrecarregado
    • “I don't know, Timmy, being God is a big responsibility” https://qntm.org/responsibility
    • A energia e a matéria do universo são, na verdade, um enorme computador quântico analógico que simula o resultado de um conjunto de equações
      Ninguém disse que uma simulação precisa rodar em semicondutores
    • Seria exatamente igual a este universo agora
  • Não sei por que usam só fragment shaders. Se também houvesse um vertex shader para o heightmap, daria para dar zoom até a superfície

  • Está escrito “written entirely in GLSL fragment shaders”, mas que linguagem é essa?
    A música é bem clichê. Talvez tenha sido feita por IA