1 puntos por GN⁺ 2024-07-30 | 1 comentarios | Compartir por WhatsApp
  • Sin texturas prerenderizadas, se genera procedimentalmente toda la historia de un planeta similar a la Tierra en pocos minutos usando solo fragment shaders GLSL, y la simulación final se actualiza a 60 fps
  • El terreno inicial se crea convirtiendo latitud y longitud a coordenadas 3D, y superponiendo cráteres con 5 niveles de detalle y ruido fractional Brownian motion para formar la superficie de un planeta primitivo
  • La tectónica de placas mueve las placas en pasos de tiempo discretos a nivel de píxel, y la elevación en los puntos de colisión se dispersa alrededor mediante erosión térmica para aproximar la formación de cordilleras y continentes
  • La erosión hídrica hace que cada píxel envíe agua hacia la dirección de mayor descenso entre sus 8 vecinos, y usa la stream power law para erosionar la elevación, permitiendo formar ríos de 1 píxel de ancho incluso a baja resolución
  • Desde el clima, la vida y hasta la etapa humana, conecta presión media al nivel del mar, vientos, precipitación, un modelo de difusión Lotka–Volterra y la quema de combustibles fósiles para incluir cambios de largo plazo en la superficie planetaria dentro de una sola simulación en GPU

Simulación procedimental de un planeta hecha con shaders de GPU

  • La simulación procedimental de la Tierra está implementada solo con fragment shaders GLSL
  • Simula toda la historia de un planeta similar a la Tierra en pocos minutos, y la pantalla se actualiza a 60 fps
  • También se ofrece una grabación en video del shader final

Generación del terreno de un planeta primitivo

  • La Tierra inicial se trata como un planeta primitivo, caliente y lleno de cráteres por impactos de asteroides
  • Como no hay texturas prerenderizadas, el primer paso es calcular la altura del terreno para una latitud y longitud específicas
  • La latitud y la longitud primero se convierten a coordenadas cartesianas 3D
  • Como los asteroides tienen tamaños variados, los cráteres también se superponen en varios tamaños
    • El shader itera 5 niveles de detalle
    • Se colocan capas desde cráteres grandes hasta cráteres pequeños
    • Se mezcla ruido fractional Brownian motion para que el terreno se vea rugoso
    • Se escala para que los cráteres más grandes tengan el mayor impacto sobre el terreno
  • Los cráteres se generan en una grilla 3D, y de allí se recorta la superficie esférica para usarla como terreno
    • Para evitar patrones regulares, el centro de cada cráter tiene un desplazamiento seudoaleatorio desde el punto de la grilla mediante una hash function
    • La influencia de los cráteres pertenecientes a puntos vecinos de la grilla se promedia con ponderación exponencial basada en la distancia
    • El borde del cráter se genera con una simple curva seno
  • Al llenar de agua las zonas bajas, el terreno creado procedimentalmente se parece a la imagen que los científicos imaginan de la Tierra temprana
  • Con el tiempo, las rocas se enfrían y el vapor de agua se condensa en océanos; el flujo de agua líquida en la superficie forma valles y deja sedimentos

Tectónica de placas y formación de continentes

  • Para crear cordilleras, fosas oceánicas y formas continentales familiares, se necesita un modelo de tectónica de placas
  • Las placas comienzan en posiciones semilla aleatorias y reciben una velocidad inicial
  • El crecimiento de las placas se maneja con un modelo de conjunto simple
    • Se elige aleatoriamente un punto adyacente
    • Si el punto aún no fue asignado a otra placa, se agrega a esa placa
    • Cada píxel dentro de una placa almacena la velocidad de movimiento de la placa
    • Este método se parece a la diffusion-limited aggregation sin difusión
  • El movimiento continuo de las placas es difícil de implementar porque habría que manejar límites desplazados por una fracción de píxel
  • En su lugar, las placas se mueven exactamente 1 píxel en horizontal o vertical en pasos de tiempo discretos
    • El momento del movimiento se aleatoriza para cada placa
    • Se mantiene la velocidad promedio de la velocidad y dirección configuradas
    • Se reduce la probabilidad de que placas vecinas se muevan simultáneamente
  • La colisión de placas ocurre cuando un píxel de borde de una placa se mueve a una posición donde había un píxel de otra placa
  • La colisión se trata como subduction, modelada elevando ligeramente la altitud en el lugar de la colisión
  • El efecto de la colisión solo aparece en los píxeles de borde, pero el modelo de erosión térmica lo dispersa gradualmente a los píxeles vecinos
    • La erosión térmica empuja la altura de un píxel hacia el promedio de sus vecinos
  • Con esta combinación se puede simular hasta cierto punto la formación de continentes con cordilleras

Erosión hídrica y cuencas fluviales

  • El aspecto rugoso del terreno natural proviene en gran parte de la formación de cuencas fluviales, que erosionan el paisaje con patrones ramificados familiares
  • Como el mapa de terreno que contiene todo el planeta tiene baja resolución, el modelo debe poder simular también ríos de 1 píxel de ancho
  • El modelo simple de Barnes (2018) cumple este requisito
  • Cada píxel examina sus 8 vecinos y encuentra la dirección con la mayor disminución de elevación
    • Los vecinos diagonales están más lejos, así que se corrige por eso
    • La dirección de descenso más pronunciado se convierte en la dirección por la que el agua sale de ese píxel
  • El agua se distribuye inicialmente en las celdas como lluvia, y en cada paso de tiempo se mueve entre píxeles vecinos
  • La erosión se maneja según la stream power law
    • Usa la elevation, el water de la celda actual y el slope de la dirección en la que se mueve el agua
    • La disminución de altura se limita para que no quede por debajo de la ubicación hacia la que fluye el agua
  • A medida que el flujo de agua y la erosión interactúan, las cuencas fluviales se forman naturalmente en el terreno
  • Si se colorean los canales conectados según la ubicación de la desembocadura, se puede crear una visualización que recuerda a un mapa real de cuencas fluviales
  • También se ofrece el original shader de las cuencas fluviales simuladas

Modelo climático global

  • El sistema climático de todo el planeta es complejo, pero en esta simulación se aproxima de forma relativamente simple
  • El elemento impulsor central de la simulación climática es un mapa de presión media al nivel del mar (MSLP) generado procedimentalmente
  • Según el Climate Cookbook, los principales factores para generar mapas MSLP son dónde está la tierra entre los océanos y el efecto de la latitud
  • Si se grafican los datos MSLP reales de la Tierra por latitud, separando tierra y océano, aparecen dos curvas seno con formas ligeramente distintas
  • El modelo de presión media anual se calcula con fórmulas basadas en la latitud, distinguiendo tierra y océano
    • Tierra: 1012.5 - 6. * cos(lat*PI/45.)
    • Océano: 1014.5 - 20. * cos(lat*PI/30.)
  • Calcular tierra y océano por separado crea discontinuidades marcadas en los límites
  • En la realidad, la MSLP cambia suavemente en las zonas de transición entre océano y tierra debido a la difusión local de la presión
  • Este proceso de difusión se aproxima aplicando Gaussian blur al mapa MSLP
    • La desviación estándar está en el rango de 10–15 grados
  • Los cambios estacionales se implementan modelando adicionalmente la diferencia de MSLP entre enero y julio
    • Esta diferencia también sigue un patrón senoidal en los datos de la Tierra
    • Se ajustan los parámetros, se aplica Gaussian blur y se combina con la MSLP media anual
  • A partir de la MSLP se generan vientos y temperatura
    • En la realidad, la temperatura crea la presión, pero aquí se aprovecha la correlación
    • season oscila entre -1 y 1 durante un año
  • Los vientos tienden a moverse de alta presión a baja presión, pero a escala global también hay que considerar la fuerza de Coriolis
    • La fuerza de Coriolis hace que los vientos circulen alrededor de las zonas de presión
    • El vector de velocidad se calcula combinando el término de Coriolis y el gradiente de presión
  • Esta simulación relativamente gruesa genera patrones de circulación de vientos realistas
  • También se reproduce la inversión de los vientos durante la temporada de monzones en la región de India
  • La precipitación se simula advectando el vapor de agua del océano hacia tierra a lo largo del campo vectorial de vientos
  • La advección se implementa de una forma similar a una simulación de fluidos

Distribución de la vida y dinámica depredador-presa

  • El clima influye en la distribución de la vida en el planeta
  • Los patrones de lluvia y los cambios de temperatura determinan la tasa de crecimiento de las plantas
  • Cuando cambian las estaciones, los herbívoros se desplazan a regiones con vegetación suficiente para sostenerlos
  • Los depredadores siguen a los herbívoros que se desplazan siguiendo la vegetación
  • Esta dinámica se captura con un modelo de difusión Lotka–Volterra
  • Los componentes xyz de la variable c representan, respectivamente, las poblaciones de vegetación, herbívoros y depredadores
  • La dinámica de poblaciones animales a gran escala crea patrones interesantes
  • En la realidad, estos patrones se observan más fácilmente en poblaciones microbianas en placas de Petri, pero las mismas leyes se aplican también a poblaciones de grandes animales en todo el mundo

Humanidad y emisiones de carbono

  • Tras la etapa de la Tierra temprana, la velocidad de la simulación baja al ciclo de día y noche, la tectónica de placas se vuelve difícil de percibir y el terreno queda fijo
  • De noche, a medida que la humanidad coloniza la superficie del planeta, aparecen patrones de luz sin precedentes
  • La rápida expansión de la humanidad viene acompañada de la quema de combustibles fósiles
  • Durante cientos de años, la humanidad quema todos los recursos de combustibles fósiles disponibles y libera 5 billones de toneladas de carbono a la atmósfera
  • Estas emisiones fortalecen el efecto invernadero y elevan la temperatura media global casi 10 grados Celsius
  • Debido a las temperaturas extremas, grandes regiones terrestres alrededor del ecuador se vuelven inhabitables
  • Como resultado, la humanidad desaparece de una parte considerable del planeta

1 comentarios

 
GN⁺ 2024-07-30
Opiniones en Hacker News
  • Está genial, pero la parte del final donde una civilización con luces nocturnas inevitablemente quema todos los combustibles fósiles y convierte el planeta en un desierto parece una suposición apoyada solo en una posible trayectoria de nuestra civilización.
    No hay base para decir que morir por calentamiento y desertificación sea más plausible que una guerra nuclear, el desarrollo de fusión nuclear limpia, una pandemia o la invasión de un planeta similar a la Tierra cercano y generado proceduralmente.
    Es excelente cuando simula lo que realmente ocurrió, pero solo hasta antes de que entren las opiniones.
    Además, parece equiparar calor con sequedad, y tampoco considera el efecto del CO2 adicional en las plantas. Incluso si la zona ecuatorial se volviera demasiado caliente para que vivieran humanos, bien podría terminar cubierta de selva, no de desierto.

    • Tengo dudas sobre algunas frases, pero en general estoy de acuerdo. Lamentablemente vivimos en un mundo Excel, dominado por la idea de modelar un mundo complejo en una hoja de cálculo y luego tomar decisiones con base en sus resultados.
      Ese enfoque suele ignorar los efectos de segundo orden mencionados arriba.
    • Como referencia, esa simulación sí incorpora, aunque de forma rudimentaria, el efecto de que el calor aumenta la absorción de vapor de agua por los océanos y acelera el crecimiento de las plantas, lo que a su vez incrementa la velocidad de secuestro de carbono.
      Admito que la desertificación del final es una pequeña licencia artística para transmitir la historia visualmente con más facilidad. La realidad sería mucho más compleja.
      Es simplemente el relato de un escenario posible en particular, y también lo escribí así en otro lado: “La última parte busca mostrar un futuro posible, pero probablemente poco probable. Quería hacerlo dramático, así que representé el resultado extremo de que literalmente se queman todos los combustibles fósiles, pero para los demás efectos intenté mantenerlo lo más realista posible leyendo artículos científicos sobre ese supuesto.”
      https://www.vice.com/en/article/xgx7nq/watch-four-billion-ye...
  • En 1996/1997 trabajé en un juego en CD-ROM que simulaba tectónica de placas, temperatura, elevación y precipitaciones a lo largo de millones de años.
    Es asombroso ver cuánto avanzaron el hardware y el software de cómputo en 28 años: https://www.kmoser.com/evolution/

    • Es la primera vez que veo a alguien que conoce ese juego, y qué gusto que haya sido uno de sus desarrolladores. Lo jugué cuando tenía unos 13 años y me encantó.
      La idea misma de simular un planeta y los animales sobre él era totalmente impactante en esa época, y todavía lo es. Debí haber guardado el póster que venía incluido; las distintas ramas de la evolución de los sapiens eran realmente fascinantes.
    • Genial. Hace poco leí Assembling California, de John McPhee, y lo recomiendo mucho.
      Pensé que sería bueno poder manipular el movimiento previsto de las placas en un globo 3D con un deslizador de tiempo, para visualizar cómo llegan a formar la topografía actual. ¿Conoces algo así?
      [1] https://www.goodreads.com/book/show/19898.Assembling_Califor...
      [2] excerpt: https://www.newyorker.com/magazine/1992/09/07/assembling-cal...
  • Hay un excelente libro de ciencia ficción dura muy relacionado con este tema: Permutation City. Cuando vi el título de este artículo sentí como si estuviera en un sueño.

    • No he leído Permutation City todavía, pero Diaspora es una de mis novelas de ciencia ficción favoritas. Tengo que hacerme el tiempo para leerla.
    • Permutation City es excelente. Greg Egan también publica en su sitio web muchos cuentos gratuitos que exploran la física: https://www.gregegan.net/
    • Terminé de leer ese libro ayer y tuve exactamente la misma reacción.
  • Un poco tangencial, pero el cuento corto y excelente "I don't know, Timmy, being God is a big responsibility" trata, en cierto sentido, sobre simulación de mundos y es muy bueno:
    https://qntm.org/responsibility

    • Me gustaría leer los finales alternativos de este cuento.
      Durante años quise escribir una historia con una trama muy parecida, pero tenía un gran agujero argumental: la sobrecarga de cálculo entre universos, y no se me ocurrió resolverlo con una computadora cuántica.
      Otra diferencia de la historia que imaginaba era que los personajes escribían esa historia, esta se convertía en “mi” historia, y creaban una variable cuyo valor aumentaba en 1 en cada universo, para que al final el lector supiera en qué nivel de profundidad estaba.
      Quien lea esto en HN está a 8474771628371839 niveles de profundidad.
    • Para ir todavía más lejos por esta tangente, recomiendo The Trouble With Bubbles, de Philip K. Dick. Imagina a invitados de una fiesta de coctel de los años 60 presumiendo sus terrarios a escala de planetas en miniatura.
    • No estoy muy seguro de cómo debería leer esto. No sé si hay que leer la versión más reciente enlazada en la parte superior de la página, o si la versión ofrecida aquí es más bien la canónica.
      Creo que es la primera vez que me encuentro con múltiples versiones en ficción, fuera de los libros de texto. Me encantan estos textos tipo experimento mental, siempre que no se dediquen a explotar huecos de lógica o de física.
      Me gusta la idea de un multiverso donde todos los universos son en la práctica iguales, lo que vuelve casi todo irrelevante.
    • Me encanta que un científico de computación cuántica de talla mundial que hizo un descubrimiento que derriba todo lo que la humanidad sabe siga preocupado hasta el final por perder el autobús.
    • Mientras veía un excelente programa de TV de las últimas décadas, una escena me pareció un claro homenaje a este cuento.
      El drama, la física y el desenlace se manejaban de forma distinta, pero dejaban un estado de reflexión agradable y parecido. Casi escribo el título o el nombre del director, pero me di cuenta de que, en este contexto, eso podría ser un gran spoiler, y me detuve.
      Tal vez haya cifrado el nombre dentro de este comentario. La verdad es que lo intenté, y ya es tarde por la noche, así que quizá los buscadores actuales puedan encontrarlo.
  • Una de mis clases favoritas en la universidad fue Análisis de políticas energéticas, y experimenté con el modelo EPPA desarrollado en el MIT.
    Probaba cambiar ciertos parámetros, por ejemplo qué pasaría si el costo del almacenamiento de energía se redujera a una décima parte. Fue muy divertido, pero lamentablemente en el trabajo no he encontrado la oportunidad de hacer algo parecido.
    [0]: https://globalchange.mit.edu/research/research-tools/eppa

  • Para ser honestos, la simulación claramente omite algunos detalles :)

  • No sé por qué, pero todos los ejemplos de Shadertoy incrustados en la página se reproducen a unos 0.6 FPS en mi entorno.
    Si abro el “final shader” enlazado en el sitio de Shadertoy, va perfectamente a 60 fps.

    • Si te pasa lo mismo que a mí en el navegador, hay un botón de reproducción recortado debajo del botón de rebobinar; al presionarlo se soluciona.
  • A veces me pregunto cómo se sentiría vivir en un universo simulado.

    • En cierto sentido, podría decirse que ya es así. ¿Qué es una simulación? No es más que seguir un conjunto de reglas más simple que el entorno más complejo en el que se ejecuta.
      Si pudiéramos “ver” el “exterior” del “universo”, tal vez entenderíamos que nuestra realidad es muy simple y limitada comparada con la “realidad” de afuera. Esta estructura podría continuar infinitamente, o la realidad exterior podría ser mucho más lógica que la nuestra y hacernos aceptar su finitud.
      Pero como tenemos un comienzo y el paso del tiempo, quizá también haya un nacimiento, una madre, e incluso tal vez un propósito. Claro que esta es una forma de pensar muy humana, y todo podría ser una sopa aleatoria.
      Imagina que dentro de una simulación que creamos hubiera sujetos autoconscientes y empezaran a pensar lo mismo. Todos se burlarían diciendo: “somos simplemente aleatorios, no hay dios ni diseño; ¿por qué alguien gastaría tanta energía en una enorme masa inútil de espacio vacío como esta?”, y él tendría que estar de acuerdo en cierta medida, pero al mismo tiempo estaría equivocado en cierta medida.
      Descubrirnos a nosotros no les daría consuelo, porque tampoco podríamos contarles nada sobre nuestros propios diseñadores. Por la misma razón, si nosotros los descubriéramos a ellos, tampoco nos daría consuelo. Por eso el concepto de dios es absurdo. Si dios también tiene un dios, ¿qué hacemos ahora? Aceptar su existencia no resuelve ningún problema.
    • Cada vez que pienso en esto, siempre me pregunto si realmente importa. Incluso si desarrollo tanto el escenario de “sí” como el de “no”, no me aporta demasiada claridad.
      Tal vez sea cierto grado de nihilismo, pero por eso no me abruma.
    • “I don't know, Timmy, being God is a big responsibility” https://qntm.org/responsibility
    • La energía y la materia del universo son en realidad una enorme computadora cuántica analógica que simula los resultados de un conjunto de ecuaciones.
      Nadie dijo que una simulación necesariamente tuviera que ejecutarse sobre semiconductores.
    • Sería exactamente igual a este universo ahora mismo.
  • No sé por qué usan solo fragment shaders. Si también hubiera vertex shaders para el mapa de alturas, se podría hacer zoom hasta la superficie.

  • Dice “written entirely in GLSL fragment shaders”, pero ¿qué lenguaje es ese?
    La música es bastante trillada. Tal vez la hizo una IA.