XMVector4Refract 함수(directxmath.h)
4D 일반 벡터에서 인시던트 4D 벡터를 굴절합니다.
구문
XMVECTOR XM_CALLCONV XMVector4Refract(
[in] FXMVECTOR Incident,
[in] FXMVECTOR Normal,
[in] float RefractionIndex
) noexcept;
매개 변수
[in] Incident
굴절할 4D 인시던트 벡터입니다.
[in] Normal
인시던트 벡터를 통해 굴절하는 4D 일반 벡터입니다.
[in] RefractionIndex
굴절의 인덱스입니다. 설명을 참조하세요.
반환 값
굴절된 인시던트 벡터를 반환합니다. 인시던트 벡터와 일반 사이의 굴절 인덱스와 각도가 전체 내부 리플렉션이 되도록 하는 경우 함수는 0.0f, 0.0f, 0.0f, 0.0f >형식 < 의 벡터를 반환합니다.
설명
다음 의사 코드는 함수의 작업을 보여 줍니다.
XMVECTOR Result;
float t = dot(Incident, Normal);
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;
Result.w = 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 = RefractionIndex * Incident.w - s * Normal.w;
}
return Result;
굴절의 인덱스는 입력되는 매체의 굴절 인덱스로 인시던트 벡터를 포함하는 매체의 굴절 인덱스의 비율입니다(여기서 매체의 굴절 인덱스는 그 자체로 진공 상태에서 빛의 속도와 매체의 광속도의 비율).
플랫폼 요구 사항
Windows 8 Windows SDK를 사용하는 Microsoft Visual Studio 2010 또는 Microsoft Visual Studio 2012. Win32 데스크톱 앱, Windows 스토어 앱 및 Windows Phone 8개 앱에서 지원됩니다.요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | directxmath.h(DirectXMath.h 포함) |