Vertex Shader 와 Fragment Shader 간 데이터 전달
- Vertex Shader
- FragmentShader
- Vertex Shader에서 나온 데이터를 받기 위해
in 변수 선언
- 변수 이름은 서로 달라도 됨.
- 하지만 layout(location = x) 값은 같아야 데이터를 제대로 전달할 수 있음.
Fragment Shader에서 Interporlation이 필요한 이유
- Vertex Shader는 Vertex마다 실행되고, Fragment Shader는 Fragment마다 실행된다.
- 따라서, Vertex Shader에서 출력한 데이터를 Fragment Shader에서 각 픽셀에 맞게 계산하려면 Interpolation이 필요함.
Linear Interpolation (선형 보간)
- 주어진 값 사이에서 중간 값을 계산하는 과정
- Linear Interpolation은 이를 직선 상에서 계산하는 간단한 방법
- $P=(1−t)⋅A+t⋅B$
- t : 두 값 사이의 비율 (0에서 1사이의 값)
- A와 B 사이의 t에 해당하는 점 P를 계산
- 이를 통해 RGB 같은 것도 interpolation 할 수 있음
Barycentric Coordinates (삼각형의 내부의 점을 표현하는 좌표계)
- 삼각형 내부의 각 프래그먼트에 데이터를 전달할 때 Barycentric Coordinates 를 사용함
- 삼각형 세 점(A, B, C)과 내부의 한 점(P)이 주어질 때
- P는 A, B, C,의 가중합(weighted sum) 으로 표현됨.
- 각 점의 가중치는 삼각형 내부의 위치에 따라 결정 된다.
- $P=α⋅A+β⋅B+γ⋅C$
- 여기서 α+β+γ=1
- α, β, γ는 삼각형 내부의 좌표에 따라 계산된다.