public static Vector3 ComputeCameraRayDirection(Vector2 screenQuadUv, FMatrix4x4 cameraViewInv) { var uv = CMul(screenQuadUv * 2.0f - Vec2(1.0f), Vec2(1.0f, -1.0f)); var near = (cameraViewInv * Vec4(uv, 0.1f, 1.0f)).NormalizeByW().XYZ(); var far = (cameraViewInv * Vec4(uv, 1.0f, 1.0f)).NormalizeByW().XYZ(); return(Normalize(far - near)); }
[MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector4 Mul(FMatrix4x4 m, Vector4 v) => m * v;