[DX3D] 반사광
·
개발/DX11
반사광픽셀 쉐이더에서 반사 벡터를 계산하면 각 픽셀마다 반사 벡터 값이 나오는데 이를 카메라가 오브젝트를 쳐다보는 방향, 즉 Eye Vector와 이루는 각도를 비교하여 반사광을 계산할 수 있다. 구현을 위해 필요한 것들은 아래와 같다. 1. 픽셀의 View Space 위치2. 카메라의 View Space 위치3. Eye Vector4. 반사벡터 View Space는 카메라가 기준이 되기 때문에 카메라의 위치가 (0.f, 0.f, 0.f)이므로 카메라의 View Space 위치를 따로 생각할 필요가 없고, 또한 픽셀의 View Space에서의 좌표가 곧 Eye Vector가 된다.   두 벡터를 Normalize 하여 Reflect Vector와 -Eye Vector를 내적하면 두 벡터의 cos 값이 나..
[DX3D] 반사 벡터
·
개발/DX11
반사 벡터3D Light 구현을 위해 반사광 계산을 해야 하는데 반사 벡터를 이용할 수 있다.HLSL에는 reflect() 라는 반사 벡터를 구하는 함수가 존재하지만 과정을 유도하여 직접 반사벡터를 구해보겠다. 빛의 방향을 v, 표면의 노말 벡터를 n 이라고 했을 때 반사 벡터는 r 이다.입사각과 반사각은 같으므로 반사 벡터 r 은 v와 노말 벡터 n 을 축으로 하여 대칭 모양이 된다. 반사 벡터 r 은 v 벡터에 (-v · n) 을 두 번 더한 결과이다따라서 반사 벡터 r 을 구하는 공식은 아래와 같다.r = v + 2n(-v · n) 마지막에 n을 곱해주는 이유는 (-v · n) 이 스칼라 값이므로 단위 벡터인 n을 곱해주어 벡터로 만들기 위함이다.