지난 포스팅에서 Parallax Mapping에 대해서 얼추 개념에 대해서 짚어보았습니다. 이제는 수학적으로 접근을 해봐야겠죠?
지난번에 본 그림에서 출발을 해보도록 하죠. B는 실제로 사용자가 봐야하는 표면입니다.
하지만 실제로는 단순히 평면일 것이기 때문에 일반적으로는 A를 그리게 되겠죠. 여기서 H(A), 즉 A 좌표에서의 높이값(height map 이용)을 얻어옵니다.
P는 view vector(unit vector)를 H(A)만큼 스케일링을 합니다. 사실상 H(A) 벡터가 있다고 할 경우 view 벡터와 일치하도록 A를 원점 삼아 회전 시킨 벡터라고 봐도 됩니다.
이렇게 P가 실제 평면과 만나는 곳은 Px라고 할 경우에 px에서 다시 높이값을 얻어오게 되면 H(P)를 얻을 수 있게 되는 것입니다. 결과적으로 우리가 offset으로 구해야하는 값은 A에서 Px와의 거리, 즉 "TEXTURE COORDINATE OFFSET"이라고 적혀 있는 부분이 되겠습니다.
다소간의 오차는 ...