Cidade de uma semente
Digite um número e a cidade se ergue. Mesma semente, mesma cidade. geração procedural · instancing · WASD
Digite um número e a cidade se ergue. Mesma semente, mesma cidade. geração procedural · instancing · WASD
Modo Visual: iluminação por HDRI, oclusão de ambiente, bloom, profundidade de campo e qualidade que se ajusta ao seu aparelho. Modo Leve: sem pós-processamento, para celular, notebook fraco e para estudar a técnica.
Cada quadra recebe um número derivado da semente e da sua posição (hash). Esse número alimenta um gerador pseudoaleatório; por isso a mesma semente sempre ergue a mesma cidade.
r = mulberry32(hash(semente, x, z))Um ruído de baixa frequência, somado à distância ao centro, decide se a quadra é centro (torres), residencial, industrial ou parque.
A cidade é dividida em pedaços de 288 m. Só os 7 × 7 em volta da câmera existem; ao voar, os de trás somem e os da frente nascem.
Todos os prédios de um pedaço são uma única malha instanciada; as janelas são desenhadas no shader, sem textura, com bordas suavizadas por derivadas de tela.
No fim da tarde o sol desce até perto do horizonte: a face voltada para ele esquenta, a oposta esfria, o vidro reflete o céu laranja. Uma camada de neblina baixa engrossa com a distância, e caixas d’água, antenas e letreiros saem do hash de cada prédio. À noite, os carros deixam rastros de luz proporcionais à velocidade.
névoa = max(dist, e^(−y/22) · dist)