Devlog #3 - De volta às aulas


Estou descobrindo que toda aquela matemática que eu aprendi na escola não era tão inútil assim.

Até hoje eu consegui ignorar aquilo que pra mim era o elefante na sala do gamedev: matemática. Jogos envolvem simulação de física, incluindo gravidade, iluminação e o que mais for necessário. Pra isso tudo existem fórmulas, que são um pouco complicadas de entender. Eu não queria simplesmente achar um plugin de água na internet, copiar e colar e colocar no meu jogo. Minha intenção é aprender como essa parada funciona e fazer a minha própria água, grama, nuvens, etc. Pois é, só um pouco ambicioso kkk

Eu então caí de boca (?) no mundo dos shaders.
Surpreendentemente, não é tão complicado assim escrever um shader.  Pra quem já programa é fácil aprender a linguagem de shaders da Godot, que é baseada em GLSL . E a matemática envolvida é uma espécie de caixa de ferramentas, não é necessário inventar muita coisa nova, é só usar as fórmulas já desenvolvidas e largamente usadas na indústria pra alcançar o efeito que você quer. Por exemplo, uma vez que você aprende que o produto escalar entre dois vetores resulta no ângulo entre eles, isso pode ser usado pra um monte de coisa. Assim como o fato de que usando potenciação você faz com que o crescimento de uma curva seja exponencial em vez de linear. Cada informação nova dessas foi virando uma ferramenta nova na minha caixa, e logo logo eu passei a entender melhor os vídeos e tutoriais que eu via.

A cena abaixo está iluminada só com shaders que eu escrevi. Eu desliguei a iluminação automática da Godot e fiz os cálculos de difuso, especular e etc necessários. Até brinquei de mover os vértices pra água mexer de verdade e fiz reflexões em screen space:


Link do post do bluesky onde dá pra ver a cena em movimento: https://bsky.app/profile/fabriciohms.bsky.social/post/3m4vkwwajks2w

Embora o aprendizado tenha sido bom, é óbvio que não dá pra eu fazer tudo manualmente. A Godot é uma engine feita para facilitar a sua vida, eu percebi que se eu fico tentando fazer tudo na mão eu basicamente começo a lutar contra ela. No dia que eu fizer algo com Vulkan ou OpenGL puro eu faço as coisas do zero, até lá eu uso a ajuda engine sim com muito orgulho kkk

Apesar de deixar a iluminação básica a cargo da Godot eu vou continuar usando os truques que aprendi para fazer coisas como água, grama, vidro e etc. Também vou permanecer aprendendo mais sobre shaders, porque tem muita coisa ainda pra saber.

Alguns links interessantes para quem quer aprender mais sobre shaders:

Valeu por ler até aqui, até a próxima 👋🏾

Leave a comment

Log in with itch.io to leave a comment.