Pular para o conteúdo
Revelar · TécnicaIntermediário

Varredura no espaço do mundo

Iluminar ou revelar superfícies pela distância até um ponto ou um plano no mundo, como um pulso que atravessa a cena.

PosiçãoTempoSuperfície

Cards

Um exemplo ao vivo para ajustar, aprender e copiar.

Como funciona

O pulso de um scanner num jogo, o anel de sonar que mostra inimigos escondidos, um holograma que se monta a partir do chão: cada um marca superfícies pelo lugar onde elas estão no mundo, e não pelo lugar onde ficam na própria textura. Um anel de luz que se expande a partir de um ponto cruza uma parede, uma caixa e um personagem numa linha contínua, porque os três são medidos em relação ao mesmo ponto.

A posição no mundo no shader de fragmento

O shader de fragmento não sabe onde o seu pixel está no mundo, a menos que alguém conte a ele. O shader de vértice já transforma cada vértice para o espaço do mundo no caminho até a tela, então ele escreve essa posição num varying, e o rasterizador a interpola ao longo de cada triângulo. Cada fragmento recebe então o ponto do mundo que ele cobre. As engines fazem isso por você, cada uma do seu jeito: o Godot entrega ao shader de fragmento o VERTEX em espaço de visão, e a matriz de visão inversa o devolve ao espaço do mundo; num editor de nós, é a entrada “posição no mundo”.

É a lição de espaços de coordenadas posta em prática. O UV daria a cada objeto o seu próprio padrão, e o espaço do objeto moveria o padrão junto com cada objeto. Só o espaço do mundo põe todos no mesmo referencial, então uma única função da posição desenha uma única forma pela cena inteira.

A distância como forma

A forma é uma distância. A partir de um ponto, ela dá esferas que crescem para fora (um scanner, uma onda de choque, um sonar). A partir de um plano, um produto escalar com a normal do plano, ela dá uma frente reta que sobe ou atravessa (um objeto se montando a partir do chão, um laser de segurança). Um raio que cresce com o tempo e recomeça com fract é um pulso periódico, e um smoothstep em volta do raio separa uma casca fina de superfícies naquela distância. Atrás da casca, um rastro que se apaga e um padrão desenhado em unidades do mundo (uma grade, linhas de varredura) mostram o espaço que o pulso já cobriu.

Revelar, e não só destacar

Escrita como uma camada emissiva e aditiva, a varredura ilumina objetos que já estão lá. Escrita como recorte por alfa, a mesma casca vira uma borda de revelação: tudo dentro do raio existe, tudo fora é descartado, e é assim que os efeitos de “materialização” constroem um objeto do nada. A função de distância é a mesma nos dois casos; só a saída muda.

Leitura complementar