void UMyGameViewportClient::UpdateSceneView(FSceneView* const View) { if (View == nullptr) return; View->ProjectionMatrixUnadjustedForRHI.M[0][0] *= 1.04; View->ViewMatrices.PreViewTranslation = -View->ViewMatrices.ViewOrigin; View->ViewMatrices.ProjMatrix = _AdjustProjectionMatrixForRHI(View->ProjectionMatrixUnadjustedForRHI); View->ViewProjectionMatrix = View->ViewMatrices.GetViewProjMatrix(); View->InvViewProjectionMatrix = View->ViewMatrices.GetInvProjMatrix() * View->InvViewMatrix; FMatrix TranslatedViewMatrix = FTranslationMatrix(-View->ViewMatrices.PreViewTranslation) * View->ViewMatrices.ViewMatrix; View->ViewMatrices.TranslatedViewProjectionMatrix = TranslatedViewMatrix * View->ViewMatrices.ProjMatrix; View->ViewMatrices.InvTranslatedViewProjectionMatrix = View->ViewMatrices.TranslatedViewProjectionMatrix.Inverse(); View->ShadowViewMatrices = View->ViewMatrices; //View->InvDeviceZToWorldZTransform = CreateInvDeviceZToWorldZTransform(View->ProjectionMatrixUnadjustedForRHI); GetViewFrustumBounds(View->ViewFrustum, View->ViewProjectionMatrix, false); }
static void UpdateProjectionMatrix(FSceneView* View, FMatrix OffAxisMatrix) { View->ProjectionMatrixUnadjustedForRHI = OffAxisMatrix; FVector viewOrigin(0.0f, 0.0f, View->ProjectionMatrixUnadjustedForRHI.M[3][3]); View->ViewMatrices.ViewMatrix.SetOrigin(View->ViewMatrices.ViewMatrix.GetOrigin() - viewOrigin); View->InvViewMatrix = View->ViewMatrices.ViewMatrix.Inverse(); View->ViewMatrices.ViewOrigin += View->InvViewMatrix.TransformPosition(-viewOrigin); View->ViewMatrices.PreViewTranslation = -View->ViewMatrices.ViewOrigin; View->ViewMatrices.ProjMatrix = _AdjustProjectionMatrixForRHI(View->ProjectionMatrixUnadjustedForRHI); View->ViewProjectionMatrix = View->ViewMatrices.GetViewProjMatrix(); View->InvViewProjectionMatrix = View->ViewMatrices.GetInvProjMatrix() * View->InvViewMatrix; FMatrix TranslatedViewMatrix = FTranslationMatrix(-View->ViewMatrices.PreViewTranslation) * View->ViewMatrices.ViewMatrix; View->ViewMatrices.TranslatedViewProjectionMatrix = TranslatedViewMatrix * View->ViewMatrices.ProjMatrix; View->ViewMatrices.InvTranslatedViewProjectionMatrix = View->ViewMatrices.TranslatedViewProjectionMatrix.Inverse(); View->ShadowViewMatrices = View->ViewMatrices; //View->InvDeviceZToWorldZTransform = CreateInvDeviceZToWorldZTransform(View->ProjectionMatrixUnadjustedForRHI); GetViewFrustumBounds(View->ViewFrustum, View->ViewProjectionMatrix, false); }