1 min to read
06. Vertex Shader
Vertex Shader
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 사이로 값이 변화하기 때문에 이를 적용하고 렌더링 화면을 보면
각각의 정점들이 출렁이는 것을 볼 수 있다.
Comments