다음을 통해 공유


XMVector3Refract 함수(directxmath.h)

3D 일반 벡터에서 인시던트 3D 벡터를 굴절합니다.

구문

XMVECTOR XM_CALLCONV XMVector3Refract(
  [in] FXMVECTOR Incident,
  [in] FXMVECTOR Normal,
  [in] float     RefractionIndex
) noexcept;

매개 변수

[in] Incident

굴절할 3D 인시던트 벡터입니다.

[in] Normal

인시던트 벡터를 굴절하는 3D 일반 벡터입니다.

[in] RefractionIndex

굴절의 인덱스입니다. 설명을 참조하세요.

반환 값

굴절된 인시던트 벡터를 반환합니다. 인시던트 벡터와 일반 사이의 굴절 인덱스와 각도가 전체 내부 리플렉션이 되도록 하는 경우 함수는 정의>되지 않은 0.0f, 0.0f, 0.0f 형식 < 의 벡터를 반환합니다.

설명

다음 의사 코드는 함수의 작업을 보여 줍니다.

XMVECTOR Result;

float t = ( Incident.x * Normal.x + Incident.y * Normal.y + Incident.z * Normal.z );
float r = 1.0f - RefractionIndex * RefractionIndex * (1.0f - t * t);

if (r < 0.0f) // Total internal reflection
{
	Result.x = 0.0f;
	Result.y = 0.0f;
	Result.z = 0.0f;
}
else
{
	float s = RefractionIndex * t + sqrt(r);
	Result.x = RefractionIndex * Incident.x - s * Normal.x;
	Result.y = RefractionIndex * Incident.y - s * Normal.y;
	Result.z = RefractionIndex * Incident.z - s * Normal.z;
}

Result.w = undefined;

return Result;

굴절의 인덱스는 입력되는 매체의 굴절 인덱스인 인시던트 벡터를 포함하는 매체의 굴절 인덱스의 비율입니다(여기서 매체의 굴절 인덱스는 그 자체로 진공에서 빛의 속도와 매체의 광속도의 비율).

플랫폼 요구 사항

Windows 8 Windows SDK를 사용하는 Microsoft Visual Studio 2010 또는 Microsoft Visual Studio 2012. Win32 데스크톱 앱, Windows 스토어 앱 및 Windows Phone 8개 앱에 지원됩니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 directxmath.h(DirectXMath.h 포함)

추가 정보

DirectXMath 라이브러리 3D 벡터 기하학적 함수

XMVector2RefractV