Voltar para o Blog
Quest Log

Godot Visual Shader: Crie Shaders Sem Escrever Código

Editor de grafo de nós do Godot Visual Shader com nós conectados criando um efeito

Aprenda a usar o Godot Visual Shader para criar efeitos com nós, sem escrever código de shader: interface, nós essenciais e dois efeitos passo a passo.

Se código de shader te dá calafrio, o Godot Visual Shader existe exatamente pra isso: montar efeitos gráficos ligando caixinhas (nós) numa tela, sem digitar uma linha de GLSL. Você arrasta nós, conecta a saída de um na entrada de outro e vê o resultado na hora. É o mesmo poder dos shaders escritos à mão, só que numa interface visual que deixa o fluxo dos dados óbvio. Neste guia, feito no CursoGame.Dev, você vai entender quando usar o VisualShader, conhecer os nós essenciais e construir dois efeitos do zero, ligando nó por nó.

Antes de começar, um aviso honesto de escopo: este post é sobre o editor de nós. Se o que você quer é aprender a escrever shader digitando código na Godot Shading Language, o caminho é outro (e ele existe aqui no blog, com link mais pra frente). Aqui a regra é: zero código de shader escrito por você.

O que é o Godot Visual Shader e quando usar

Um shader é um programa que roda na GPU e decide, entre outras coisas, a cor final de cada pixel. Normalmente você escreve isso em texto. O Godot Visual Shader troca o texto por um grafo de nós: cada nó é uma operação (somar, multiplicar, ler uma textura, pegar o tempo) e as ligações entre eles definem por onde os dados fluem até chegar na saída.

Ele brilha em três situações:

  • Você tem medo de código de shader e quer entender a lógica vendo os dados andarem pela tela.
  • Você está prototipando e quer testar ideias rápido, sem decorar sintaxe.
  • Você quer visualizar o fluxo de um efeito para depois reescrever em código com mais clareza.

Onde ele incomoda: efeitos complexos viram uma teia de nós difícil de navegar, e algumas funções ficam mais rápidas de escrever em uma linha de código do que em cinco nós. Por isso o VisualShader é excelente como ponto de partida e como ferramenta de prototipagem, não necessariamente como destino final de todo projeto.

Como criar um VisualShader na Godot 4

Existem dois caminhos, e os dois chegam no mesmo lugar.

Caminho pelo material: selecione um nó que aceite material (um Sprite2D, um MeshInstance3D, etc.), vá no Inspector, encontre a propriedade Material, clique e escolha New ShaderMaterial. Abra esse ShaderMaterial e, na propriedade Shader, clique e escolha New VisualShader. Pronto, ao dar dois cliques no recurso, o editor de nós abre no painel de baixo.

Caminho pelo recurso: no dock FileSystem, clique com o botão direito, Create New > Resource, procure por VisualShader e salve como um arquivo .tres. Depois é só arrastar esse recurso para dentro de um ShaderMaterial.

No momento da criação (ou no canto do editor), você define o Mode do VisualShader:

  • CanvasItem para 2D: sprites, UI, TileMap.
  • Spatial para materiais 3D.
  • Particles para sistemas de partículas.

A interface é direta: uma tela grande onde você move e conecta nós, e um nó de saída (Output) já presente por padrão. Para adicionar nós, clique no botão de adicionar (ou dê o atalho de adicionar nó) e navegue pelas categorias. Para ligar dois nós, clique numa bolinha de saída de um e arraste até a bolinha de entrada de outro. As bolinhas têm cores por tipo: escalares (float) e vetores (vec2, vec3, vec4) não se misturam por acidente, o editor avisa quando os tipos batem.

Os nós essenciais do Godot Visual Shader

Você não precisa decorar as centenas de nós disponíveis. Um punhado resolve a maioria dos efeitos de iniciante.

  • Input: dá acesso aos dados que a GPU já conhece. Os mais usados são UV (as coordenadas de textura de cada pixel, um vec2 que vai de 0 a 1), Time (um escalar que cresce com o tempo, motor de qualquer animação) e, no modo Spatial, coisas como Normal e Screen UV.
  • Texture2D (nó Texture): lê uma imagem. Recebe uma UV na entrada e devolve a cor daquele ponto da textura.
  • ColorConstant: uma cor fixa que você escolhe no color picker. Sai como vec4 (RGBA).
  • FloatOp e VectorOp: operações matemáticas. FloatOp opera entre dois floats (somar, subtrair, multiplicar, dividir) e VectorOp faz o mesmo com vetores. São eles que ajustam velocidade, intensidade e deslocamento.
  • FloatFunc e VectorFunc: funções de um valor só, como Sin (seno), Abs, Fract. O Sin é o coração dos efeitos que pulsam, porque transforma um tempo que só cresce numa onda que vai e volta entre menos 1 e 1.
  • Mix: a interpolação linear (o famoso lerp). Tem entradas A, B e Weight. Com Weight em 0 sai A, em 1 sai B, no meio mistura os dois. É o nó para transições de cor.
  • ColorRamp: um degradê editável. Você recebe um escalar de 0 a 1 na entrada e ele devolve a cor correspondente naquele ponto da rampa que você desenhou. Ótimo para mapear valores em paletas.
  • Output: o nó final. No modo Spatial ele expõe entradas como Albedo (cor base), Emission (brilho próprio), Alpha (transparência), Metallic, Roughness e mais. No modo CanvasItem as entradas principais são Color e Alpha. O que você ligar aqui é o que a tela mostra.

Com esse vocabulário, dá para montar efeitos de verdade. Vamos a dois.

Próximo nível
Quer aprender isso na prática?

No CursoGame.Dev você sai dos tutoriais soltos e constrói jogos publicáveis, com trilha progressiva, quests práticas e feedback real.

Conhecer a plataforma
+500 alunos4.9/5Garantia 7 dias

Perguntas frequentes

O Godot Visual Shader gera o mesmo código de um shader escrito à mão?

Sim. O VisualShader é apenas uma camada visual: por baixo ele monta um shader normal na Godot Shading Language. Você pode ver o código gerado clicando com o botão direito no recurso VisualShader e escolhendo copiar, ou inspecionando o material. O resultado roda igual a qualquer shader escrito à mão.

Vale a pena aprender VisualShader ou já pulo direto pro código?

Depende do seu conforto com programação. Se código de shader te intimida, o VisualShader é uma ótima porta de entrada porque você vê o fluxo dos dados de forma gráfica. Mas ele fica verboso em efeitos complexos, então recomendo migrar para código quando quiser controle total e projetos maiores.

Como eu ligo o tempo (Time) num efeito de VisualShader?

Adicione o nó de input Time (categoria Input, Scalar). A saída dele é um float que cresce continuamente. Você liga essa saída em operações como multiplicação (para controlar velocidade) ou dentro de um nó Sin para gerar oscilação, e daí segue para a UV ou para a cor.

Qual nó usa para misturar duas cores no VisualShader?

O nó Mix (que faz interpolação linear, o lerp). Ele tem três entradas: A, B e Weight. Quando Weight é 0 sai a cor A, quando é 1 sai a cor B, e valores intermediários misturam as duas proporcionalmente.

Dá para usar VisualShader em 2D e em 3D?

Sim. Ao criar o VisualShader você escolhe o Mode: CanvasItem para 2D (sprites, UI, TileMap), Spatial para materiais 3D e Particles para partículas. Os nós de saída disponíveis mudam conforme o modo escolhido.