Pular para o conteúdo principal

Destaque

Dia 272 - Shaders #3 com Freya Holmer

Assisti até 2h

Em Shaders, nos temos 2 funções básicas por assim dizer, uma que faz a parte de posição dos vértices (vertex) e outra que cuidada textura em si (fragment).

Essas funções podem ter qualquer nome, mas o nome deve ser especificado da seguinte forma


Essas funções devem ter retornos a vertex retorna uma struct contendo os dados do vertice. e a fragment retorna um float4 (que é basicamente a cor do pixel em RGBA).
Pelo que entendi Essas duas funções, elas são executadas em um tipo de loop, então basicamente essas funções são feitas para cuidar de 1 pixel da malha.,

As funções, elas usam structs como entradas de dados e como retornos, exceto a fragment

também dá para usar essas structs para fazer as vertex e fragment shaders se comunicarem, mas isso só funciona passando informação da vertex para o fragment. basicamente você cria uma variável na struct e acessa ela no fragment.

um exemplo que usa isso de passar informação entre o vertex e o fragment
Interessante que quando eu tava fazendo o clone de EDGE, que eu desisti, até apaguei alias, o shader que eu tava fazendo usava as normals (essa representação colorida que vocês veem), agora entendo o funcionamento de toda matemática que ele usava, para distinguir as faces de cada lado do cubo...

PS: nas imagens acima dentro da struct Interpolators o TEXTCOORD0 está como fluxo de dados, mas na verdade, esse dado é na realidade um tipo de slot de informação, que é usado justamente para você armazenar o que quiser, mas isso se aplica apenas a quando se refere a um vértice senão se trata de um canal de UV map. e tu pode ir botando TEXTCOORD0, TEXTCOORD1, ...2, ...3 e por ai vai, só não entendi ainda o que diferencia ele ao ser chamado se referindo a um vértice ou a malha, já que a declaração é basicamente igual.

Anotação: Se algo pode ser feito no Vertex Shader do que no Fragment Shader é melhor fazer no Vextex Shader, normalmente os modelos, tem mais pixels, do que vértices, então é mais otimizado fazer no Vertex Shader se possível.

Representação Visual da UV map
Isso aqui é bem interessante, isso aqui é a representação visual de uma UV map, uma uv é basicamente as coordenadas da textura em cada parte da malha, como a textura é 2d, as coordenadas tambem são, então elas apenas estão variando em Verde e Vermelho, ali no canto temos preto por que está 0, 0 em XY, e conforme vai indo para o lado vai crescendo, essas coordenadas são em relação a textura usada.
E isso é uma interpolação, cada vértice tem sua coordenada e é feita uma interpolação entre eles, o mesmo ocorre com normals.


Também fiz esse gradiente ai, e descobri dessa vez com certeza que preciso melhorar minha matemática...

e por hoje é isso

Comentários