06. Vertex Shader

Vertex Shader

Imagem de capa

Vertex정보

정점에 데이터로는 위치, 색상, 반사율 , 텍스쳐좌표(UV), 법선벡터(Normal), 접선벡터(Tangent)

를 갖고 있다.

v.vertex.xyzw : POSITION

v.vertex.rgba : COLOR

v.vertex.uv : TEXCOORD0

float4 tangent : TANGENT

float4 normal : NORMAL

시멘틱은 이런한 정점에 데이터를 가져오는 역활을 한다

Blend weights, Bone weights, Blend shapes

https://en.wikipedia.org/wiki/Vertex_(computer_graphics)

Vertex Shader

void vert (inout appdata_full v){
    //정점의 위치를 법선의 방향으로 0.01 만큼 이동
    v.vertex.xyz = v.vertex.xyz + v.vertex.normal * 0.01;
    //정점의 x좌표가 -1 ~ 1 사이로 이동을 반복함
    v.vertex.x = v.vertex.x * sin(_Time.y);
    //정점의 y좌표가 -1 ~ 1 사이로 이동을 반복함
    v.vertex.y = v.vertex.y * sin(_Time.y);
    //R채널 만 흔들리게할수있다 버텍스에 컬러값을 받아와야한다.
    v.vertex.r = v.vertex.r * sin(_Time.y);
}

앞서 쉐이더에 작동원리를 볼떄 정점 쉐이더는 정점의 수만큼 실행이 된다

_Time.y 은 시스템 시간변수로 1프레임당 변화량 값을 나타내준다

sin그래프는 -1 ~ 1 사이로 값이 변화하기 때문에 이를 적용하고 렌더링 화면을 보면

각각의 정점들이 출렁이는 것을 볼 수 있다.