Initial commit
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
bool IsStereoEyeLeft(float3 WorldCamPos, float3 WorldCamRight, float force)
|
||||
{
|
||||
if(force >= 0){
|
||||
return force == 0;
|
||||
}
|
||||
#if defined(USING_STEREO_MATRICES)
|
||||
// Unity 5.4 has this new variable
|
||||
return (unity_StereoEyeIndex == 0);
|
||||
#elif defined (UNITY_DECLARE_MULTIVIEW)
|
||||
// OVR_multiview extension
|
||||
return (UNITY_VIEWID == 0);
|
||||
#else
|
||||
// NOTE: Bug #1165: _WorldSpaceCameraPos is not correct in multipass VR (when skybox is used) but UNITY_MATRIX_I_V seems to be
|
||||
#if defined(UNITY_MATRIX_I_V)
|
||||
float3 renderCameraPos = UNITY_MATRIX_I_V._m03_m13_m23;
|
||||
#else
|
||||
float3 renderCameraPos = _WorldSpaceCameraPos.xyz;
|
||||
#endif
|
||||
|
||||
float fL = distance(WorldCamPos - WorldCamRight, renderCameraPos);
|
||||
float fR = distance(WorldCamPos + WorldCamRight, renderCameraPos);
|
||||
return (fL < fR);
|
||||
#endif
|
||||
}
|
||||
|
||||
void StereoSwitch_half(float3 WorldCameraPosition, float3 WorldCameraRight, float Force, float4 Left, float4 Right, out float4 Out) {
|
||||
Out = Left;
|
||||
if (IsStereoEyeLeft(WorldCameraPosition, WorldCameraRight, Force)){
|
||||
Out = Left;
|
||||
}
|
||||
else {
|
||||
Out = Right;
|
||||
}
|
||||
}
|
||||
void StereoSwitch_float(float3 WorldCameraPosition, float3 WorldCameraRight, float Force, float4 Left, float4 Right, out float4 Out) {
|
||||
Out = Left;
|
||||
if (IsStereoEyeLeft(WorldCameraPosition, WorldCameraRight, Force)){
|
||||
Out = Left;
|
||||
}
|
||||
else {
|
||||
Out = Right;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user