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.
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érticeO programa da GPU que roda uma vez para cada vértice de uma malha. Ele posiciona o vértice na tela escrevendo gl_Position e repassa valores para o shader de fragmento. Shader de vértice O programa da GPU que roda uma vez para cada vértice de uma malha. Ele posiciona o vértice na tela escrevendo gl_Position e repassa valores para o shader de fragmento. Varying Um valor que o shader de vértice escreve para cada vértice (um out) e o shader de fragmento lê (um in). O rasterizador o mistura ao longo do triângulo, então cada pixel recebe a sua própria mistura.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 coordenadasO referencial em que uma posição ou direção é medida, como o espaço do objeto, do mundo, da câmera, de recorte ou da tela. Só dá para combinar valores do mesmo espaço. Espaço de coordenadas O referencial em que uma posição ou direção é medida, como o espaço do objeto, do mundo, da câmera, de recorte ou da tela. Só dá para combinar valores do mesmo espaço.
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 Smoothstep Um limiar suave. Vale 0 abaixo da primeira borda, 1 acima da segunda e segue uma curva em S com as pontas planas entre elas.fract
é um pulso periódico, e um smoothstepUm limiar suave. Vale 0 abaixo da primeira borda, 1 acima da segunda e segue uma curva em S com as pontas planas entre elas.t = clamp((x − e0) / (e1 − e0), 0, 1); s = t² (3 − 2t)
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
alfaDescartar todo fragmento cujo alfa fica abaixo de um limiar e desenhar o resto totalmente opaco. A superfície continua na passagem opaca, grava profundidade e não precisa de ordenação, mas as bordas ficam duras. Recorte por alfa Descartar todo fragmento cujo alfa fica abaixo de um limiar e desenhar o resto totalmente opaco. A superfície continua na passagem opaca, grava profundidade e não precisa de ordenação, mas as bordas ficam duras.if (alpha < threshold) discard;
Leitura complementar
- sin (abre em uma nova aba)Referência
- Sine wave (abre em uma nova aba)Referência
- Shaping functions (abre em uma nova aba)Livro
- Coordinate Systems (abre em uma nova aba)Artigo
- OpenGL Transformation (abre em uma nova aba)Artigo
- gl_FragCoord (abre em uma nova aba)Referência
- step (abre em uma nova aba)Referência
- smoothstep (abre em uma nova aba)Referência
- The OpenGL ES Shading Language, version 3.00 (abre em uma nova aba)Documentação
- Spatial shaders (abre em uma nova aba)Documentação
- GeometryInstance3D (abre em uma nova aba)Referência
- distance (abre em uma nova aba)Referência
- exp (abre em uma nova aba)Referência
- fract (abre em uma nova aba)Referência