Aleatoriedade e Ruídos
Nesta aula veremos as como podemos usar aleatoriedade e ruídos para por exemplo gerar texturas procedurais. Esta aula aborda os conceitos de aleatoriedade e ruídos, mostrando como os computadores geram valores pseudo-aleatórios, uma vez que não produzem verdadeira aleatoriedade. São apresentadas funções em GLSL que utilizam recursos como seno e produto escalar para criar esses valores. Em seguida, são discutidos diversos tipos de ruído, como Poisson, shot noise, salt and pepper, gaussiano e ruído coerente, destacando-se a importância dos padrões suavemente aleatórios para simular fenômenos naturais, como relevos de terrenos. Para gerar ruídos suaves, utiliza-se interpolação entre valores aleatórios definidos em um grid, aplicando funções como floor(), fract() e mix(), e melhorando a transição com a função smoothstep(), baseada em interpolação de Hermite.
O conceito central apresentado é o Perlin Noise, uma função n-dimensional que produz padrões orgânicos e coerentes, amplamente usada em simulações de texturas naturais, nuvens e terrenos em computação gráfica. Na implementação básica, o processo envolve a criação de um grid e a interpolação dos valores aleatórios em seus vértices. Já na versão aprimorada, o Perlin Noise de gradiente, utilizam-se vetores aleatórios nos vértices e o valor é obtido por meio do produto escalar entre esses vetores e os vetores de distância. Apesar da interpolação Hermite suavizar o resultado, ela ainda gera descontinuidades na segunda derivada, o que é resolvido pelo Improved Noise, que adota a Fade Function, uma equação quíntica definida por $f(t) = 6t^5 - 15t^4 + 10t^3$, para garantir transições mais suaves. Por fim, a aula também discute a combinação de padrões, como na técnica de Turbulência, e o uso do ruído procedural em três dimensões.